Как объединить триггеры в конвейере Concourse: Git и ресурс времени?

Я пытаюсь настроить конвейер Concourse, который запустит новое развертывание. Цель состоит в том, чтобы позволить конвейеру работать, только когда новые значения были переданы в репозиторий git И когда время находится в пределах определенного временного окна.

В настоящее время кажется, что триггеры работают в режиме ИЛИ. Когда новая версия нажата, конвейер будет работать. Когда время будет в пределах окна, конвейер будет запущен.
Кажется, что единственное исключение - когда оба триггера не сработали хотя бы один раз, например, в первый день, когда время еще не прошло. Это заставило конвейер дождаться первого успеха триггера временного окна перед запуском. Однако после этого нежелательное поведение при запуске каждого обновления в репозитории git продолжалось.

Ниже приведена минимальная версия моего конвейера. Цель состоит в том, чтобы запустить конвейер только с 9:00 до 9:10 вечера, и предпочтительно только после обновления git-репозитория.

resource_types:
  - name: helm
    type: docker-image
    source:
      repository: linkyard/concourse-helm-resource

resources:
  - name: cicd-helm-values_my-service
    type: git
    source:
      branch: master
      username: <redacted>
      password: <redacted>
      uri: https://bitbucket.org/myorg/cicd-helm-values.git
      paths:
        - dev-env/my-service/values.yaml
  - name: helm-deployment
    type: helm
    source:
      cluster_url: '<redacted>'
      cluster_ca: <redacted>
      admin_cert: <redacted>
      admin_key: <redacted>
      repos:
        - name: chartmuseum
          url: '<redacted>'
          username: <redacted>
          password: <redacted>
  - name: time-window
    type: time
    source:
      start: 9:00 PM
      stop: 9:10 PM

jobs:
  - name: deploy-my-service
    plan:
    - get: time-window
      trigger: true
    - get: cicd-helm-values_my-service
      trigger: true
    - put: helm-deployment
      params:
        release: my-service
        namespace: dev-env
        chart: chartmuseum/application-template
        values: ./cicd-helm-values_my-service/dev-env/my-service/values.yaml

Будем весьма благодарны за любые идеи о том, как объединить временное окно и сервис cicd-helm-values_my-service. Заранее спасибо!

1 ответ

Для такого точного планирования времени ресурс времени не адаптирован. Что хорошо работает, это https://github.com/pivotal-cf-experimental/cron-resource. Это решит одну часть вашей проблемы.

Что касается срабатывания с AND, это не семантика разветвления. Семантика - это OR, как вы заметили. Вы могли бы попробовать ресурс ворот https://github.com/pivotal-cf-experimental/cron-resource, хотя я не уверен, что он подойдет для вашего случая.

Другие вопросы по тегам