我不清楚 the documentation如果甚至可以将一个工作的输出传递给另一个工作(不是从一个任务到另一个任务,而是从一个工作到另一个工作)。
我不知道在概念上我是否在做正确的事情,也许它应该在 Concourse 中以不同的方式建模,但我想要实现的是将 Java 项目的管道拆分为几个细粒度的作业,这些作业可以并行执行, 如果我需要重新运行某些工作,则独立触发。
我如何看待管道:
mvn deploy
) SNAPSHOT
Maven 项目子模块的版本 output
的 task
)jar
来自output
我无法通过
output
从工作 1 到工作 2。另外,我很好奇我对原始 git repo 资源所做的任何更改是否会出现在下一个工作中(从工作 1 到工作 2)。
所以问题是:
到目前为止我发现了什么:
output
s 不会在工作之间传递 put
到 github 存储库)都将在下一个作业中获取,但工作副本中的更改不是 最小的例子(如果注释行没有注释错误:
missing inputs: gist-upd, gist-out
,它会失败):---
resources:
- name: gist
type: git
source:
uri: "git@bitbucket.org:snippets/foo/bar.git"
branch: master
private_key: {{private_git_key}}
jobs:
- name: update
plan:
- get: gist
trigger: true
- task: update-gist
config:
platform: linux
image_resource:
type: docker-image
source: {repository: concourse/bosh-cli}
inputs:
- name: gist
outputs:
- name: gist-upd
- name: gist-out
run:
path: sh
args:
- -exc
- |
git config --global user.email "nobody@concourse.ci"
git config --global user.name "Concourse"
git clone gist gist-upd
cd gist-upd
echo `date` > test
git commit -am "upd"
cd ../gist
echo "foo" > test
cd ../gist-out
echo "out" > test
- put: gist
params: {repository: gist-upd}
- name: fetch-updated
plan:
- get: gist
passed: [update]
trigger: true
- task: check-gist
config:
platform: linux
image_resource:
type: docker-image
source: {repository: alpine}
inputs:
- name: gist
#- name: gist-upd
#- name: gist-out
run:
path: sh
args:
- -exc
- |
ls -l gist
cat gist/test
#ls -l gist-upd
#cat gist-upd/test
#ls -l gist-out
#cat gist-out/test
最佳答案
一一回答你的问题。
此外,为了解决您的具体错误,您看到
missing inputs
的原因是因为 concourse 将查找命名每个输入的目录(由资源 gets
创建)。所以你需要get
名为 gist-upd
的资源实例和 gist-out
在开始任务之前。
关于大厅:如何将作业的输出传递给不同的作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42634934/