在本地或 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 设置值。
我想在本地或 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 设置值。