Невозможно запускать задания одно за другим, используя gcs-ресурс в конкурсе. - PullRequest
0 голосов
/ 27 ноября 2018

У меня есть две работы, а именно.build и publish.Я хочу, чтобы publish сработало после того, как build сделано.Итак, я использую внешний ресурс gcs-resourcehttps://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 голосов
/ 29 ноября 2018

Как упоминал Марко, проблема была с версионированием.Я решил свою проблему, используя следующие два шага:

  1. Включено управление версиями в моем GCS Bucket https://cloud.google.com/storage/docs/object-versioning#_Enabling
  2. Заменяет regexp на versioned_file, как указано в документации https://github.com/frodenas/gcs-resource#file-names
0 голосов
/ 28 ноября 2018

regexp из gcs-resource настроен неправильно:

...
regexp: Dockerfile
...

, а regexp, поскольку исходный ресурс S3, из которого он поступает, хочет:

regexp: шаблон для сопоставления имен файлов в GCS.Первое сгруппированное совпадение используется для извлечения версии, или, если группа имеет явно названную версию, используется эта группа.

https://github.com/frodenas/gcs-resource#example-configuration показывает правильное использование:

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

Это не относится к ресурсу GCS или S3;Concourse нужна «версия» для перемещения артефактов из заданий в хранилище и обратно.Это одна из фундаментальных концепций конкурса.См. https://web.archive.org/web/20171205105324/http://concourse.ci:80/versioned-s3-artifacts.html для примера.

...