我想要创建一个通用的.deploy模板。
从该模板继承的每个作业都应该能够在继承模板的脚本的script之间添加一些自定义的逻辑。但是怎么做呢?
示例:
.deploy
stage: deploy
rules:
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
before_script:
- ...
script:
- touch .env
- echo "SOME_COMMON_KEY=VALUE" >> .env
- $$PSEUDOCODE / PLACE YOUR CUSTOM LOGIC HERE
- ssh -i $SSH_ -o "StrictHostKeyChecking=no" $USER@$SERVER
- scp -i $SSH docker-compose.yml .env $USER@$SERVER:~/test/
- ssh -i $SSH $USER@$SERVER "docker-compose up"...
deploy_test:
extends: .deploy
variables:
USER: test
SERVER: test
script:
#TODO how to add custom statements in place of the $$PSEUDOCODE ?
deploy_prod:
extends: .deploy
variables:
USER: prod
SERVER: prod
script:
#TODO how to add custom statements in place of the $$PSEUDOCODE ?那么,我如何添加一些自定义语句来代替$$PSEUDOCODE行呢?
发布于 2022-04-08 01:56:41
您可以做的一件事是在环境变量上使用eval。
.deploy:
# ...
variables:
USER_SCRIPT:
value: ""
description: "The contents of this variable will be executed with `eval` during the job script."
script:
- touch .env
- echo "SOME_COMMON_KEY=VALUE" >> .env
- eval "${USER_SCRIPT}"
# ...用户可以在before_script和script:之前或之后在扩展作业中插入逻辑的另一种方法是使用!reference标记。
例如,在before_script:之后但在script:之前插入逻辑
another_job:
extends: .deploy
before_script:
- echo "additional steps before before_script:"
- !reference [.deploy, before_script]
- echo "Additional step after before_script"
script:
- echo "Additional steps before script:"
- !reference [.deploy, script]
- echo "Additional steps after script:"发布于 2022-04-07 13:36:08
你能让你的两个工作共享相同的代码吗?如果是,您可以使用YAML脚本锚来完成
在您的示例中,它可以提供:
.pseudo_code: &pseudo_code
- echo "Hello $USER on $SERVER"
.deploy:
stage: deploy
rules:
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
before_script:
- ...
script:
- touch .env
- echo "SOME_COMMON_KEY=VALUE" >> .env
- *pseudo_code
- ssh -i $SSH_ -o "StrictHostKeyChecking=no" $USER@$SERVER
- scp -i $SSH docker-compose.yml .env $USER@$SERVER:~/test/
- ssh -i $SSH $USER@$SERVER "docker-compose up"...
deploy_test:
extends: .deploy
variables:
USER: test
SERVER: test
deploy_prod:
extends: .deploy
variables:
USER: prod
SERVER: prodhttps://stackoverflow.com/questions/71782576
复制相似问题