我的CI文件中目前有两个作业几乎相同。
第一个是从 any git分支手动编译发行版。
deploy_internal:
stage: deploy
script: ....<deploy code>
when: manual
第二个将由调度程序用来从 develop 分支发布每日构建。
scheduled_deploy_internal:
stage: deploy
script: ....<deploy code from deploy_internal copy/pasted>
only:
variables:
- $MY_DEPLOY_INTERNAL != null
让所有部署代码在两个地方重复出现,这是错误的。情况变得更糟。也有deploy_external,deploy_release和计划的变体。
我的问题:
有没有一种方法可以组合deploy_internal
和scheduled_deploy_internal
以便保留手动/计划的行为(基本上是DRY)?
或者:有更好的方法安排我的工作吗?
编辑:
原始标题:部署作业。手动执行,除非已安排
答案 0 :(得分:4)
您可以使用YAML锚点和别名来重用脚本。
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