无法在大厅中使用gcs-resource依次触发作业

时间:2018-11-27 08:25:11

标签: concourse

我有两个工作,即。 buildpublish。我希望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作业。 我想念什么吗?

2 个答案:

答案 0 :(得分:1)

regexp中的gcs-resource配置错误:

...
regexp: Dockerfile
...

regexp作为其来源的原始S3资源需要:

  

regexp:在GCS中匹配文件名的模式。第一个分组匹配用于提取版本,或者如果一个组被明确命名为version,则使用该组。

https://github.com/frodenas/gcs-resource#example-configuration显示其正确用法:

regexp: directory_on_gcs/release-(.*).tgz

这不特定于GCS或S3资源; Concourse需要一个“版本”才能将工件从作业移至存储并移回。它是Concourse的基本概念之一。有关示例,请参见https://web.archive.org/web/20171205105324/http://concourse.ci:80/versioned-s3-artifacts.html

答案 1 :(得分:0)

正如Marco所提到的,问题在于版本控制。 我通过以下两个步骤解决了我的问题:

  1. 在我的GCS存储桶https://cloud.google.com/storage/docs/object-versioning#_Enabling上启用了版本控制
  2. 如文档https://github.com/frodenas/gcs-resource#file-names所述将regexp替换为versioned_file