设置变量时忽略 Gitlab 作业
Posted
技术标签:
【中文标题】设置变量时忽略 Gitlab 作业【英文标题】:Gitlab jobs to be ignored when variable is set 【发布时间】:2022-01-07 23:34:18 【问题描述】:我的 yaml 文件中有一些作业,我正在寻找一种仅在运行特定计划时(即设置某个变量时)运行某些作业的方法。
例如 ** 我创建了一个名为“每小时计划”的新计划,并创建了一个名为 $HOURLY 的变量,该变量设置为 TRUE。
HOURLY SCHEDULE
我还有另一个名为“每日日程”的日程 DAILY SCHEDULE
stages:
- build
- test
- deploy
build-job:
stage: build
script:
- echo "Build."
test-job:
stage: test
script:
- echo "Test."
deploy-job:
stage: deploy
script:
- echo "Deploy."
hourly-deploy-job:
stage: deploy
script:
- echo "Hourly Deploy."
rules:
- if: $HOURLY
我的问题是:
-
如何让“build-job”、“test-job”和“deploy-job”在“commit”、“push”或“Daily Schedule”期间运行
在“每小时计划”期间,只有“每小时部署作业”应该运行(而不是其他作业)。
我知道我可以做到以下几点:
stages:
- build
- test
- deploy
.hourly_deploy: &hourly_deploy
except:
variables:
- $HOURLY == "TRUE"
build-job:
<<: *hourly_deploy
stage: build
script:
- echo "Build."
test-job:
<<: *hourly_deploy
stage: test
script:
- echo "Test."
deploy-job:
<<: *hourly_deploy
stage: deploy
script:
- echo "Deploy."
hourly-deploy-job:
stage: deploy
script:
- echo "Hourly Deploy."
rules:
- if: $HOURLY
但是,理想情况下,我只在“每小时部署作业”上做一个案例。这是因为我的 yaml 可能会在某个时候变大,如果我不小心,我可能会忘记在新作业上添加 <<: *hourly_deploy
标签,这意味着该作业将在每小时调度期间运行。
【问题讨论】:
【参考方案1】:这不是一件容易实现的事情,我认为您应该重新考虑您的 CICD 策略并使用模板。
您提到此管道可能会增长,使用模板可能会对您有很大帮助。
这是我的例子,但它并不漂亮。
stages:
- build
- test
- deploy
- hourly-deploy-job
build-job:
stage: build
rules:
- if: ($CI_PIPELINE_SOURCE == "push")
when: always
- if: ($CI_PIPELINE_SOURCE == "schedule") && ($DAILY == "true")
when: always
script:
- echo "Build."
test-job:
stage: test
rules:
- if: ($CI_PIPELINE_SOURCE == "push")
when: always
- if: ($CI_PIPELINE_SOURCE == "schedule") && ($DAILY == "true")
when: always
script:
- echo "Test."
deploy-job:
stage: deploy
rules:
- if: ($CI_PIPELINE_SOURCE == "push")
when: always
- if: ($CI_PIPELINE_SOURCE == "schedule") && ($DAILY == "true")
when: always
script:
- echo "Deploy."
hourly-deploy-job:
stage: hourly-deploy-job
rules:
- if: ($CI_PIPELINE_SOURCE == "schedule") && ($HOURLY == "true")
when: always
script:
- echo "Hourly Deploy."
来源:
https://docs.gitlab.com/ee/ci/yaml/#keywords https://docs.gitlab.com/ee/ci/yaml/workflow.html https://docs.gitlab.com/ee/ci/jobs/job_control.html https://docs.gitlab.com/ee/ci/yaml/#rules【讨论】:
以上是关于设置变量时忽略 Gitlab 作业的主要内容,如果未能解决你的问题,请参考以下文章
Gitlab Windows runner 收到作业时转为不运行