Concourse 中 PUT 和 OUTPUT 步骤的区别
Difference between PUT and OUTPUT steps in Concourse
有人能告诉我 Concourse 中 PUT
步骤和 OUTPUT
步骤的区别吗?例如,在以下类型的 YAML 文件中,为什么我们需要 get
之后的 put
步骤?我们不能用 output
代替 put
吗?如果不是,每两个的目的是什么?
jobs:
- name: PR-Test
plan:
- get: some-git-pull-request
trigger: true
- put: some-git-pull-request
params:
context: tests
path: some-git-pull-request
status: pending
....
<- some more code to build ->
....
PUT 步骤的目的是推送给定资源,而 OUTPUT 是 的结果任务 步骤。
任务可以配置输出以生成工件,然后可以将这些工件传播到放置步骤或同一计划中的另一个任务步骤。
这意味着您将在 GET 步骤中指定的资源作为输入发送到任务,以执行构建或脚本执行的任何位置以及该任务的输出
是修改后的资源,如果您不想使用 PUT,您可以稍后将其传递给放置步骤或另一个 TASK。
这还取决于管道中定义资源的性质。我假设您有这样的 git 类型资源:
resources:
- name: some-git-pull-request
type: git
source:
branch: ((credentials.git.branch))
uri: ((credentials.git.uri))
username: ((credentials.git.username))
password: ((credentials.git.pass))
如果这是真的,GET 步骤将拉取该存储库,以便您可以将其用作您的任务的输入,如果您对您在示例代码中描述的相同资源使用 PUT,这将推送更改到你的仓库。
真的,这取决于您要编写的工作流程,但给出一个想法,它看起来像这样:
jobs:
- name: PR-Test
plan:
- get: some-git-pull-request
trigger: true
- task: test-code
config:
platform: linux
image_resource:
type: docker-image
source:
repository: yourRepo/yourImage
tag: latest
inputs:
- name: some-git-pull-request
run:
path: bash
args:
- -exc
- |
cd theNameOfYourRepo
npm install -g mocha
npm test
outputs:
- name: some-git-pull-request-output
然后你可以在 PUT 上使用它
- put: myCloud
params:
manifest: some-git-pull-request-output/manifest.yml
path: some-git-pull-request-output
或同一计划中的另一个任务
- task: build-code
config:
platform: linux
image_resource:
type: docker-image
source:
repository: yourRepo/yourImage
tag: latest
inputs:
- name: some-git-pull-request-output
run:
path: bash
args:
- -exc
- |
cd some-git-pull-request-output/
npm install
gulp build
outputs:
- name: your-code-build-output
希望对您有所帮助!
有人能告诉我 Concourse 中 PUT
步骤和 OUTPUT
步骤的区别吗?例如,在以下类型的 YAML 文件中,为什么我们需要 get
之后的 put
步骤?我们不能用 output
代替 put
吗?如果不是,每两个的目的是什么?
jobs:
- name: PR-Test
plan:
- get: some-git-pull-request
trigger: true
- put: some-git-pull-request
params:
context: tests
path: some-git-pull-request
status: pending
....
<- some more code to build ->
....
PUT 步骤的目的是推送给定资源,而 OUTPUT 是 的结果任务 步骤。
任务可以配置输出以生成工件,然后可以将这些工件传播到放置步骤或同一计划中的另一个任务步骤。
这意味着您将在 GET 步骤中指定的资源作为输入发送到任务,以执行构建或脚本执行的任何位置以及该任务的输出 是修改后的资源,如果您不想使用 PUT,您可以稍后将其传递给放置步骤或另一个 TASK。
这还取决于管道中定义资源的性质。我假设您有这样的 git 类型资源:
resources:
- name: some-git-pull-request
type: git
source:
branch: ((credentials.git.branch))
uri: ((credentials.git.uri))
username: ((credentials.git.username))
password: ((credentials.git.pass))
如果这是真的,GET 步骤将拉取该存储库,以便您可以将其用作您的任务的输入,如果您对您在示例代码中描述的相同资源使用 PUT,这将推送更改到你的仓库。
真的,这取决于您要编写的工作流程,但给出一个想法,它看起来像这样:
jobs:
- name: PR-Test
plan:
- get: some-git-pull-request
trigger: true
- task: test-code
config:
platform: linux
image_resource:
type: docker-image
source:
repository: yourRepo/yourImage
tag: latest
inputs:
- name: some-git-pull-request
run:
path: bash
args:
- -exc
- |
cd theNameOfYourRepo
npm install -g mocha
npm test
outputs:
- name: some-git-pull-request-output
然后你可以在 PUT 上使用它
- put: myCloud
params:
manifest: some-git-pull-request-output/manifest.yml
path: some-git-pull-request-output
或同一计划中的另一个任务
- task: build-code
config:
platform: linux
image_resource:
type: docker-image
source:
repository: yourRepo/yourImage
tag: latest
inputs:
- name: some-git-pull-request-output
run:
path: bash
args:
- -exc
- |
cd some-git-pull-request-output/
npm install
gulp build
outputs:
- name: your-code-build-output
希望对您有所帮助!