设置变量时要忽略的 Gitlab 作业
Gitlab jobs to be ignored when variable is set
我的 yaml 文件中有一些作业,我正在寻找一种方法,当特定计划为 运行 时(即当设置了某个变量时)仅 运行 一些作业).
例如
** 我创建了一个名为 'Hourly Schedule' 的新计划,并创建了一个名为 $HOURLY 的变量,该变量设置为 TRUE。
HOURLY SCHEDULE
我还有另一个日程表 'Daily 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
我的问题是:
- 如何在 'commit'、'push' 或 [=36] 期间将 'build-job'、'test-job' 和 'deploy-job' 变为 运行 =]
- 并且在 'Hourly Schedule' 期间,只有 'hourly-deploy-job' 应该 运行(而不是其他工作)。
我知道我可以做到以下几点:
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
不过,我理想情况下只在'hourly-deploy-job'上做一个案例。这是因为我的 yaml 在某些时候可能会更大,如果我不小心,我可能会忘记在新作业上添加 <<: *hourly_deploy
标签,这意味着该作业将 运行 在 Hourly时间表。
这不是一件容易的事,我认为你应该重新考虑你的 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."
来源:
我的 yaml 文件中有一些作业,我正在寻找一种方法,当特定计划为 运行 时(即当设置了某个变量时)仅 运行 一些作业).
例如 ** 我创建了一个名为 'Hourly Schedule' 的新计划,并创建了一个名为 $HOURLY 的变量,该变量设置为 TRUE。
HOURLY SCHEDULE
我还有另一个日程表 'Daily 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
我的问题是:
- 如何在 'commit'、'push' 或 [=36] 期间将 'build-job'、'test-job' 和 'deploy-job' 变为 运行 =]
- 并且在 'Hourly Schedule' 期间,只有 'hourly-deploy-job' 应该 运行(而不是其他工作)。
我知道我可以做到以下几点:
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
不过,我理想情况下只在'hourly-deploy-job'上做一个案例。这是因为我的 yaml 在某些时候可能会更大,如果我不小心,我可能会忘记在新作业上添加 <<: *hourly_deploy
标签,这意味着该作业将 运行 在 Hourly时间表。
这不是一件容易的事,我认为你应该重新考虑你的 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."
来源: