包含gitlab-ci模板时添加gitlab-ci作业

时间:2020-11-11 11:37:21

标签: gitlab gitlab-ci pipeline

这是我的问题: 我在单独的存储库中有一个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文档中找到任何东西。

预先感谢:)

1 个答案:

答案 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

这将包括安全步骤之前的所有构建脚本行。