zee*_*erk 2 schedule pipeline manual gitlab gitlab-ci
我的 GitLab 管道有一点问题。
我想使用计划规则运行手动作业,或者找到一种方法在我的作业中运行计划管道而无需重写管道。
正如您在示例中看到的,我有 2 个第一份工作标记为工作。一种是手动的,一种是计划的。我的问题是,如果我运行计划的工作流程,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"
Run Code Online (Sandbox Code Playgroud)
有一种方法可以使用 来做到这一点only:,但我建议转向rules:asonly:将被弃用。所以你不需要两个条件不同的作业,你可以做一个分支条件:
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"
Run Code Online (Sandbox Code Playgroud)
有了它,管道会检查作业是否由计划调用并运行。如果没有,则留下manual。
*我可以自由地选择MR 风格的工作流程以避免双管道。
| 归档时间: |
|
| 查看次数: |
5000 次 |
| 最近记录: |