Gitlab Ci include local 仅最后执行

tsc*_*ppe 1 yaml gitlab gitlab-ci devops

我为一个应用程序构建了很多不同的 Android 风格,所以我想将构建拆分为不同的 yml 文件。我目前有我的基本文件.gitlab-ci.yml

image: alvrme/alpine-android:android-29-jdk11

variables:
  GIT_SUBMODULE_STRATEGY: recursive

before_script:
    - export GRADLE_USER_HOME=`pwd`/.gradle
    - chmod +x ./gradlew
    
cache:
  key: "$CI_COMMIT_REF_NAME"
  paths:
     - .gradle/

stages:
  - test
  - staging
  - production
  - firebaseUpload
  - slack

include:
  - local: '/.gitlab/bur.yml'
  - local: '/.gitlab/vil.yml'
  - local: '/.gitlab/kom.yml'
Run Code Online (Sandbox Code Playgroud)

我目前正在尝试打造 3 种不同的口味。但我不知道为什么只有最后包含的 yml 文件被执行。前 2 个被忽略。

/.gitlab/bur.yml

unitTests:
  stage: test

  script:
    - ./gradlew testBurDevDebugUnitTest
Run Code Online (Sandbox Code Playgroud)

/.gitlab/vil.yml

unitTests:
  stage: test

  script:
    - ./gradlew testVilDevDebugUnitTest
Run Code Online (Sandbox Code Playgroud)

/.gitlab/kom.yml

unitTests:
  stage: test

  script:
    - ./gradlew testKomDevDebugUnitTest
Run Code Online (Sandbox Code Playgroud)

Eri*_*kMD 6

您观察到的行为看起来像预期的行为:

您的三个文件.gitlab/{bur,vil,kom}.yml包含相同的作业名称unitTests
因此,每个人include都会优先考虑这项工作的规范。
因此,您unitTests最终只能获得 1 个作业,且具有最后一个 YAML 文件中的规范。

因此,最简单的解决方法是更改​​此作业名称,例如:

unitTests-kom:
  stage: test

  script:
    - ./gradlew testKomDevDebugUnitTest
Run Code Online (Sandbox Code Playgroud)