无法在大厅中使用 gcs-resource 一个接一个地触发作业
Not able to trigger jobs one after the other using gcs-resource in concourse
我有两份工作,即。 build
和 publish
。我希望 publish
在 build
完成后触发。所以,我正在使用外部资源 gcs-resource
https://github.com/frodenas/gcs-resource
以下是我的pipeline.yml
:
---
resource_types:
- name: gcs-resource
type: docker-image
source:
repository: frodenas/gcs-resource
resources:
- name: proj-repo
type: git
source:
uri: <my uri>
branch: develop
username: <username>
password: <password>
- name: proj-gcr
type: docker-image
source:
repository: asia.gcr.io/myproject/proj
tag: develop
username: _json_key
password: <my password>
- name: proj-build-output
type: gcs-resource
source:
bucket: proj-build-deploy
json_key: <my key>
regexp: Dockerfile
jobs:
- name: build
serial_groups: [proj-build-deploy]
plan:
- get: proj
resource: proj-repo
- task: build
config:
platform: linux
image_resource:
type: docker-image
source: {repository: node, tag: 10.13.0}
inputs:
- name: proj
run:
path: sh
args:
- -exc
- |
<do something>
- put: proj-build-output
params:
file: proj/Dockerfile
content_type: application/octet-stream
- name: publish
serial_groups: [proj-build-deploy]
plan:
- get: proj-build-output
trigger: true
passed: [build]
- put: proj-gcr
params:
build: proj-build-output
我正在使用外部资源 proj-build-output
来触发下一个作业。我可以 运行 个人作业没有任何问题,但是 publish
作业不会在 build
作业完成后自动触发。
我错过了什么吗?
gcs-resource
的 regexp
配置错误:
...
regexp: Dockerfile
...
而 regexp
作为其来源的原始 S3 资源,需要:
regexp
: the pattern to match filenames against within GCS. The first grouped match is used to extract the version, or if a group is explicitly named version, that group is used.
https://github.com/frodenas/gcs-resource#example-configuration 显示其正确用法:
regexp: directory_on_gcs/release-(.*).tgz
这不是特定于 GCS 或 S3 资源; Concourse 需要一个 "version" 来将工件从作业移至存储并移回。它是 Concourse 的基本概念之一。有关示例,请参阅 https://web.archive.org/web/20171205105324/http://concourse.ci:80/versioned-s3-artifacts.html。
正如 Marco 提到的,问题出在版本控制上。
我使用以下两个步骤解决了我的问题:
- 在我的 GCS Bucket 上启用了版本控制 https://cloud.google.com/storage/docs/object-versioning#_Enabling
- 将
regexp
替换为 versioned_file
,如文档 https://github.com/frodenas/gcs-resource#file-names 中所述
我有两份工作,即。 build
和 publish
。我希望 publish
在 build
完成后触发。所以,我正在使用外部资源 gcs-resource
https://github.com/frodenas/gcs-resource
以下是我的pipeline.yml
:
---
resource_types:
- name: gcs-resource
type: docker-image
source:
repository: frodenas/gcs-resource
resources:
- name: proj-repo
type: git
source:
uri: <my uri>
branch: develop
username: <username>
password: <password>
- name: proj-gcr
type: docker-image
source:
repository: asia.gcr.io/myproject/proj
tag: develop
username: _json_key
password: <my password>
- name: proj-build-output
type: gcs-resource
source:
bucket: proj-build-deploy
json_key: <my key>
regexp: Dockerfile
jobs:
- name: build
serial_groups: [proj-build-deploy]
plan:
- get: proj
resource: proj-repo
- task: build
config:
platform: linux
image_resource:
type: docker-image
source: {repository: node, tag: 10.13.0}
inputs:
- name: proj
run:
path: sh
args:
- -exc
- |
<do something>
- put: proj-build-output
params:
file: proj/Dockerfile
content_type: application/octet-stream
- name: publish
serial_groups: [proj-build-deploy]
plan:
- get: proj-build-output
trigger: true
passed: [build]
- put: proj-gcr
params:
build: proj-build-output
我正在使用外部资源 proj-build-output
来触发下一个作业。我可以 运行 个人作业没有任何问题,但是 publish
作业不会在 build
作业完成后自动触发。
我错过了什么吗?
gcs-resource
的 regexp
配置错误:
...
regexp: Dockerfile
...
而 regexp
作为其来源的原始 S3 资源,需要:
regexp
: the pattern to match filenames against within GCS. The first grouped match is used to extract the version, or if a group is explicitly named version, that group is used.
https://github.com/frodenas/gcs-resource#example-configuration 显示其正确用法:
regexp: directory_on_gcs/release-(.*).tgz
这不是特定于 GCS 或 S3 资源; Concourse 需要一个 "version" 来将工件从作业移至存储并移回。它是 Concourse 的基本概念之一。有关示例,请参阅 https://web.archive.org/web/20171205105324/http://concourse.ci:80/versioned-s3-artifacts.html。
正如 Marco 提到的,问题出在版本控制上。 我使用以下两个步骤解决了我的问题:
- 在我的 GCS Bucket 上启用了版本控制 https://cloud.google.com/storage/docs/object-versioning#_Enabling
- 将
regexp
替换为versioned_file
,如文档 https://github.com/frodenas/gcs-resource#file-names 中所述