将脚本附加到一个阶段 .gitlab-ci.yml
Append the script on one stage .gitlab-ci.yml
如何在 .gitlab-ci.yml 文件中的一个 stage 中附加 script 部分?
例如在这个例子中
stages:
- stage1_name
.a:
script:
- echo "String 1"
.b:
script:
- echo "String 2"
stage1_name:
stage: stage1_name
extends: .a
extends: .b
script:
- echo "String 3"
如何获得输出:
String 1
String 2
String 3
而不是:
String 3
我不确定 extends
的用法,但在这种情况下我通常使用 dependencies
。
stages:
- stage1
script1:
stage: stage1
script:
//doSomething
script2:
stage: stage1
dependencies:
- script1
script:
//doSomething
script3:
stage: stage1
depencencies:
- script2
script:
//doSomething
这样,script2 将仅在完成 script1 之后启动,而 script3 - 仅在第二个之后启动。
这是不可能的,当你使用扩展时你会覆盖整个块。
您可以像@user3106558 示例那样使用依赖项
我的解决方案是:
stages:
- stage1_name
.b:
script:
- echo "String 2"
stage1_name:
stage: stage1_name
before_script:
- echo "String 1"
extends: .b
after_script:
- echo "String 3"
为了不覆盖 stage_1_name 中的 script 部分,我使用了 before_script 和 after_script.
您可以像这样使用 YAML anchors:
stages:
- stage1_name
.a: &a
- echo "String 1"
.b: &b
- echo "String 2"
stage1_name:
stage: stage1_name
script:
- *a
- *b
- echo "String 3"
Gitlab 13.9 引入了一个 !reference 标签,使这成为可能;
.setup:
script:
- echo creating environment
test:
script:
- !reference [.setup, script]
- echo running my own command
如何在 .gitlab-ci.yml 文件中的一个 stage 中附加 script 部分?
例如在这个例子中
stages:
- stage1_name
.a:
script:
- echo "String 1"
.b:
script:
- echo "String 2"
stage1_name:
stage: stage1_name
extends: .a
extends: .b
script:
- echo "String 3"
如何获得输出:
String 1
String 2
String 3
而不是:
String 3
我不确定 extends
的用法,但在这种情况下我通常使用 dependencies
。
stages:
- stage1
script1:
stage: stage1
script:
//doSomething
script2:
stage: stage1
dependencies:
- script1
script:
//doSomething
script3:
stage: stage1
depencencies:
- script2
script:
//doSomething
这样,script2 将仅在完成 script1 之后启动,而 script3 - 仅在第二个之后启动。
这是不可能的,当你使用扩展时你会覆盖整个块。
您可以像@user3106558 示例那样使用依赖项
我的解决方案是:
stages:
- stage1_name
.b:
script:
- echo "String 2"
stage1_name:
stage: stage1_name
before_script:
- echo "String 1"
extends: .b
after_script:
- echo "String 3"
为了不覆盖 stage_1_name 中的 script 部分,我使用了 before_script 和 after_script.
您可以像这样使用 YAML anchors:
stages:
- stage1_name
.a: &a
- echo "String 1"
.b: &b
- echo "String 2"
stage1_name:
stage: stage1_name
script:
- *a
- *b
- echo "String 3"
Gitlab 13.9 引入了一个 !reference 标签,使这成为可能;
.setup:
script:
- echo creating environment
test:
script:
- !reference [.setup, script]
- echo running my own command