如何解决日程安排触发了GitLab手动作业
我的GitLab管道有一些问题。
我想使用计划的规则来运行手动作业,或者找到一种方法来使用我的作业运行计划的管道而无需重写管道。
如示例所示,我有2个 firstjob 标记的工作。一种是手动的,另一种是预定的。我的问题是,如果我运行预定的工作流程,AC测试将不会启动,并且如果我尝试按预定的规则运行 FirstJob ,它将由于when: manual
部分而无法启动
这是我的例子:
stages:
- firstjob
- test
- build
- deploy
FirstJob:
stage: firstjob
script:
- echo "Hello Peoples!"
- sleep 1
when: manual
allow_failure: false
FirstJobSchedule:
stage: firstjob
script:
- echo "Hello Scheduled Peoples!"
- sleep 1
only:
- schedule
allow_failure: false
AC-test:
needs: [FirstJob]
stage: test
script:
- echo "AC Test is running"
- sleep 10
ProdJobBuild:
stage: build
needs: [AC-test]
script:
- echo "Building thing to prod"
ProdJobDeploy:
stage: deploy
needs: [ProdJobBuild]
script:
- echo "Deploying thing to prod"
有可能以某种方式解决此问题吗?
有人遭受过这个问题吗?
解决方法
有一种方法可以使用only:
,但我建议移至rules:
,因为only:
将不推荐使用。
因此,您将不需要两个具有不同条件的作业,可以执行分支条件:
stages:
- firstjob
- test
- build
- deploy
workflow:
rules:
- if: $CI_MERGE_REQUEST_IID
- if: $CI_COMMIT_TAG
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
FirstJob:
stage: firstjob
script:
- echo "Hello Peoples!"
- sleep 1
rules:
- if: $CI_PIPELINE_SOURCE == "schedule"
# when: always # is a default value
- when: manual
# allow_failure: false # is a default value
AC-test:
needs: [FirstJob]
stage: test
script:
- echo "AC Test is running"
- sleep 10
ProdJobBuild:
stage: build
needs: [AC-test]
script:
- echo "Building thing to prod"
使用它,管道可以检查作业是否被计划调用并运行。
如果没有,则停留在manual
。
*我可以自由选择MR-style of workflow来避免重复管道。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。