簡體   English   中英

具有不同名稱的 GitLab CI 模板作業

[英]GitLab CI template job with different names

GitLab CI 中是否有一種方法可以使用通用作業模板並運行具有不同名稱的該作業的多個實例?

下面我在build.yml中有一個通用的作業定義,它指定作業將在階段構建中運行,並且它將使用給定的 Dockerfile 運行 docker build。

我希望能夠使用基於此構建模板的不同名稱運行多個構建(並行,但我現在排除了它以保持配置盡可能干凈)。 build_a.ymlbuild_b.yml中的示例,我在其中為指定要使用哪個 Dockerfile 的作業設置了一個特定變量。

在主文件gitlab-ci.yml 中,我想包含這些特定的作業( build_abuild_b )。

通用.yml

image:
  name: docker:dind
services:
  - docker:dind
stages:
  - build

構建.yml

build:
  stage: build
  script:
    - docker build -f $DOCKER_FILE

build_a.yml

include: 'build.yml'
build:
  variables:
    DOCKER_FILE: DockerfileA

build_b.yml

include: 'build.yml'
build:
  variables:
    DOCKER_FILE: DockerfileB

.gitlab-ci.yml

include:
  - 'common.yml'
  - 'build_a.yml'
  - 'build_b.yml'

問題是,當我包含這些構建作業時,它們具有相同的作業名稱,並且第一個作業 ( build_a ) 將被生成的 Yaml 文件中的第二個作業 ( build_b ) 覆蓋。

我在文檔或其他類似問題中遺漏了另一種方法嗎?

解決上述問題的一種方法是使用extends關鍵字擴展特定構建文件中的作業配置。

下面的更新將創建 3 個構建作業( .buildbuild_abuild_b ),運行器將排除名為“.build”的作業,因此只會執行build_abuild_b

通用.yml

image:
  name: docker:dind
services:
  - docker:dind
stages:
  - build

構建.yml

.build:
  stage: build
  script:
    - docker build -f $DOCKER_FILE

build_a.yml

include: 'build.yml'
build_a:
  extends: .build
  variables:
    DOCKER_FILE: DockerfileA

build_b.yml

include: 'build.yml'
build_b:
  extends: .build
  variables:
    DOCKER_FILE: DockerfileB

.gitlab-ci.yml

include:
  - 'common.yml'
  - 'build_a.yml'
  - 'build_b.yml'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM