如何在 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
我正在尝试设置将触发新部署的 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