这是我的问题: 我在单独的存储库中有一个GitLab-ci.yml模板,其中包含所有基本阶段/步骤。在包含实际代码的另一个回购中,我包括了该模板并覆盖了一个变量,例如用于单元测试。
基本模板的外观如下:
---
image: docker:git
variables:
TEST_CMD: unit-test $UNIT_TEST_CMD_OPTIONS
stages:
- pre-build
- build
- test
actual_build:
stage: build
<<: *only-default
script:
- echo "build it"
- ...
....
现在,我将该模板包含到我的实际回购gitlab-ci.yml文件中,以执行整个管道:
---
include:
- project: blahfubar/gitlab-ci-template
ref: master
file: basic.gitlab-ci.yml
variables:
UNIT_TEST_CMD_OPTIONS: --testsuite unit
现在的问题是: 我想在此存储库中添加一个额外的作业,即在此处执行安全检查,但这不起作用,并且使用“ extends:”关键字只能扩展作业。
---
include:
- project: blahfubar/gitlab-ci-template
ref: master
file: basic.gitlab-ci.yml
variables:
UNIT_TEST_CMD_OPTIONS: --testsuite unit
security-step:
stage: test
script:
- ./security-check
如果我这样做,将仅执行“安全步骤”,而不会执行随附模板中的所有其他步骤。
可能有人对此有解决方案,因为我没有在gitlab-ci文档中找到任何东西。
预先感谢:)
答案 0 :(得分:0)
如果我理解正确,Gitlab 中的 !reference
关键字可能对您有所帮助,但可能无法完全解决您的问题:https://docs.gitlab.com/ee/ci/yaml/#reference-tags
您的 security-step
可能如下所示:
security-step:
stage: test
script:
- !reference [actual_build, script]
- ./security-check
这将包括安全步骤之前的所有构建脚本行。