我目前在我的 CI 文件中有两个几乎相同的工作。
第一个用于从任何 git 分支手动编译发布版本。
deploy_internal:
stage: deploy
script: ....<deploy code>
when: manual
第二个是由调度程序用来从开发分支发布每日构建。
scheduled_deploy_internal:
stage: deploy
script: ....<deploy code from deploy_internal copy/pasted>
only:
variables:
- $MY_DEPLOY_INTERNAL != null
在两个地方重复所有部署代码感觉是错误的。它变得更糟。还有deploy_external、deploy_release 和scheduled 变体。
我的问题:
有没有办法可以结合
deploy_internal
和 scheduled_deploy_internal
以便保留手动/计划行为(基本上是 DRY)?或者:有没有更好的方法来安排我的工作?
编辑:
原标题:部署作业。手动执行,除非在预定的时候
最佳答案
您可以使用 YAML anchor 和别名来重用脚本。
deploy_internal:
stage: deploy
script:
- &deployment_scripts |
echo "Deployment Started"
bash command 1
bash command 2
when: manual
scheduled_deploy_internal:
stage: deploy
script:
- *deployment_scripts
only:
variables:
- $MY_DEPLOY_INTERNAL != null
或者您可以使用 extends关键词。
.deployment_script:
script:
- echo "Deployment started"
- bash command 1
- bash command 2
deploy_internal:
extends: .deployment_script
stage: deploy
when: manual
scheduled_deploy_internal:
extends: .deployment_script
stage: deploy
only:
variables:
- $MY_DEPLOY_INTERNAL != null
关于gitlab - 如何在 .gitlab-ci.yml 中重用作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61357650/