在本地或 CI 中构建时如何在 Gradle 中的存储库之间切换

How to switch between repositories in Gradle when build locally or in CI

我想在本地或 CI 中构建项目时在存储库之间切换。我在这里 https://docs.gitlab.com/ee/ci/variables/predefined_variables.html 读到 Gitlab 创建了环境变量 'CI' 并想使用它。接下来我做:

if (System.getenv('CI') != null) {
    repositories {
        println 'CI=' + System.getenv('CI')
        mavenCentral()
        maven {
            url 'myrepo'
        }
    }
} else {
    repositories {
        println '*CI= ' + System.getenv('CI')
        mavenCentral()
        mavenLocal()
    }
}

但是当我在 CI 中构建时,我看到 CI=null。如何根据我构建项目的位置正确定义存储库?

更新:我在 gitlab-ci 中使用 kaniko。它在没有 kaniko 的项目中工作正常。

CI 变量必须在 gitlab-ci 中用 --build-arg 定义,在项目 Docker 文件中用 ARG 指令定义:

Docker文件:

ARG CI

gitlab-ci:

build:
  stage: build
  script:
    - /kaniko/executor
      --build-arg CI="${CI}"

使用 ARG 指令,我告诉 Docker 文件让 Docker 知道,它希望在构建期间将名为 CI 的变量传递给它。并且 --build-arg 设置值。