我想在 Concourse 中为我的 Web 应用程序设置构建管道。该应用程序是使用 Node.js 构建的。
计划是做这样的事情:
,-> build style guide -> dockerize
source code -> npm install -> npm test -|
`-> build website -> dockerize
问题是,在 npm install 之后,会创建一个新容器,因此node_modules
目录会丢失。我想传递node_modules
到后面的任务,但因为它在源代码“内部”,它不喜欢它并给了我
invalid task configuration:
you may not have more than one input or output when one of them has a path of '.'
这是我的工作设置
jobs:
- name: test
serial: true
disable_manual_trigger: false
plan:
- get: source-code
trigger: true
- task: npm-install
config:
platform: linux
image_resource:
type: docker-image
source: {repository: node, tag: "6" }
inputs:
- name: source-code
path: .
outputs:
- name: node_modules
run:
path: npm
args: [ install ]
- task: npm-test
config:
platform: linux
image_resource:
type: docker-image
source: {repository: node, tag: "6" }
inputs:
- name: source-code
path: .
- name: node_modules
run:
path: npm
args: [ test ]
2016-06-14 更新
输入和输出只是目录。因此,您将想要输出的内容放入输出目录,然后可以将其传递给同一作业中的另一个任务。输入和输出不能重叠,因此为了使用 npm 进行操作,您必须将 node_modules 或整个源文件夹从输入文件夹复制到输出文件夹,然后在下一个任务中使用它。
但是,这在工作之间不起作用。到目前为止,我看到的最好的建议是使用临时 git 存储库或存储桶来推送所有内容。必须有更好的方法来做到这一点,因为我正在尝试做的部分事情是避免大量的网络 IO。