如何在 Concourse 管道中组合触发器:git 和时间资源?

How to combine triggers in Concourse pipeline: git and time resource?

我正在尝试设置将触发新部署的 Concourse 管道。目标是仅当新值已被推送到 git 存储库并且时间在定义的时间 window 内时才让管道 运行。

目前,触发器似乎以 OR 方式工作。推送新版本时,管道将 运行。当时间在 window 内时,管道将 运行.
似乎唯一的例外是两个触发器都没有至少成功一次,例如在时间尚未过去的第一天。这导致管道在 运行ning 之前等待 time-window 触发器的第一次成功。然而,在此之后,运行 对 git 存储库的每次更新的不良行为仍在继续。

下面是我的管道的最小版本。目标是 运行 仅 9:00 和 9:10 PM 之间的管道,最好仅在 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

任何关于如何结合时间 window 和 cicd-helm-values_my-service 的想法将不胜感激。提前致谢!

那种精准的时间调度,时间资源是不适应的。效果好的是 https://github.com/pivotal-cf-experimental/cron-resource。这将解决您问题的一部分。

关于AND触发,这不是fan-in的语义。如您所见,语义是或。您可以尝试 gate 资源 https://github.com/Meshcloud/gate-resource,但我不确定它是否适合您的情况。

编辑:修复了 gated 资源的 URL