从gitlab模板扩展作业的变量替换(或覆盖),不包括

时间:2020-02-10 15:23:38

标签: continuous-integration sonarqube gitlab gitlab-ci continuous-deployment

使用gitlab ci,我有一个用于创建所有模板的仓库。 例如,我有一个名为.sonar-scanner.yml的声纳扫描仪作业模板:

sonar-analysis:
  stage: quality
  image:
    name: sonar-scanner-ci:latest
    entrypoint: [""]
  script:
    - sonar-scanner
      -D"sonar.projectKey=${SONAR_PROJECT_NAME}"
      -D"sonar.login=${SONAR_LOGIN}"
      -D"sonar.host.url=${SONAR_SERVER}"
      -D"sonar.projectVersion=${CI_COMMIT_SHORT_SHA}"
      -D"sonar.projectBaseDir=${CI_PROJECT_DIR}"

我已经在主gitlab ci文件中将此模板包含为这样的项目:

include: 
  - project: 'organization/group/ci-template'
    ref: master
    file: '.sonar-scanner.yml'

据您所知,我有一个名为ci-templates的存储库,在其中创建了所有模板。在另一个仓库中,我使用 include 这些模板进行扩展。

最后,在一个仓库中,当创建一个新的合并请求时,我的声纳作业正在我项目test/quality.yml中的另一个文件下运行:

sonar:
  stage: quality
  extends: 
    - sonar-analysis 
  allow_failure: true
  only:
    refs:
      - merge_requests

除了替换或覆盖我的环境变量外,其他所有工具都运行良好。确实是我的模板。我有许多声纳服务器或项目名称。我想知道从模板扩展作业时如何覆盖这些变量SONAR_SERVERSONAR_PROJECT_NAME

在我的主.gitlab-ci.yml文件中,我有一个变量部分声明,当我在其中覆盖这些变量时,它就起作用了。 但这不是我真正想要的。使用许多阶段和许多微服务,可以以不同的方式重用相同的扩展作业。我真正想做的就是直接在文件test/quality.yml中覆盖这些变量。

例如,这不起作用:

sonar:
  stage: quality
  extends: 
    - sonar-analysis
  variables:
    SONAR_PROJECT_NAME: foo
    SONAR_SERVER: bar
  allow_failure: true
  only:
    refs:
      - merge_requests

这也不行:

variables:
  SONAR_PROJECT_NAME: foo
  SONAR_SERVER: bar

sonar:
  stage: quality
  extends: 
    - sonar-analysis 
  allow_failure: true
  only:
    refs:
      - merge_requests

使这项工作最好的方法是什么?

0 个答案:

没有答案