我希望有一个CI来在不同的生产服务器(服务器1、服务器2、服务器3等)上部署两个命令("bash X“和"bash Y")。
我寻找了多个阶段,但它似乎没有回答我的问题。我并不关心它是并行运行还是B在A之后运行(手册部分是用于调试的)。
我不知道该如何做:我尝试使用多个扩展,但它只需要在我的管道中的最后一个(bashB)。
stages:
- get_password
- bashA
- bashB
get_password:
stage: get_password
# Steps
.bashA:
stage: bashA
script:
- lorem ipsum
when: manual
only:
changes:
- script/bashA.sh
.bashB:
stage: bashB
script:
- ipsum loreem
when: manual
only:
changes:
- script/bashB.sh
# SRV1
deploy-srv1:
extends:
- .bashA
- .bashB
variables:
SRV_1: urlsrv1
# SRV2
deploy-srv2:
extends:
- .bashA
- .bashB
variables:
SRV_1: urlsrv2
我只想能够在X服务器上部署bashA和bash (例如,我只使用了2台服务器)。
发布于 2019-10-30 09:56:47
在GitLab中使用多个扩展时,某些值将不会合并,而是被覆盖。如果您在这里查看文档:
https://docs.gitlab.com/ee/ci/yaml/#extends
他们写道:
用于合并的算法是“最近的作用域胜利”,因此来自最后一个成员的键总是隐藏在其他级别上定义的任何内容。
并不是只有您希望某个功能能够合并脚本而不是覆盖它们。这里有一个关于GitLab的公开话题来做您描述的事情:
https://gitlab.com/gitlab-org/gitlab/issues/16376
同时,只看您提供的示例,通过手动将bashA和bashB合并到一个作业中,您可以得到类似于您想要的东西:
stages:
- get_password
- bash
get_password:
stage: get_password
# Steps
.bash_both:
stage: bash
script:
- lorem ipsum
- ipsum loreem
when: manual
only:
changes:
- script/bashA.sh
- script/bashB.sh
# SRV1
deploy-srv1:
extends:
- .bash_both
variables:
SRV_1: urlsrv1
# SRV2
deploy-srv2:
extends:
- .bash_both
variables:
SRV_1: urlsrv2https://stackoverflow.com/questions/58545881
复制相似问题