Следующее решение должно работать.
deploy_release:
stage: deploy
tags:
- linux
only:
- master
- stable
retry: 2
script:
- do_action 1
- do_action 2
- git push artifacts
deploy_manual:
stage: deploy
tags:
- linux
except:
- master
- stable
when: manual
retry: 2
script:
- do_action 1
- do_action 2
- git push artifacts
Но у него есть один ☝️ значительный недостаток - script:
повторяется 2 раза.
Я думаю, что было бы неплохо написать что-то вроде:
.deploy_base:
stage: deploy
tags:
- linux
retry: 2
script:
- do_action 1
- do_action 2
- git push artifacts
deploy_release:
include: .deploy_base
only:
- master
- stable
deploy_manual:
include: .deploy_base
except:
- master
- stable
when: manual
Но я сомневаюсь, что это сработает. Возможно ли сделать что-то подобное в YAML?
Другая простая идея состоит в том, чтобы
переместить script:
в отдельный файл deploy_script.sh
и довести проблему до конца.