Как переключаться между репозиториями в Gradle при сборке локально или в CI - PullRequest
0 голосов
/ 12 февраля 2020

Я хочу переключаться между репозиториями, когда я строю проекты локально или в 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. Как правильно определить хранилище в соответствии с тем, где я строю проект?

ОБНОВЛЕНИЕ: я использую kaniko в gitlab-ci. Отлично работает в проектах, где нет kaniko.

1 Ответ

0 голосов
/ 01 апреля 2020

Переменная CI должна быть определена в gitlab-ci с --build-arg и в проекте Dockerfile с инструкцией ARG:

Dockerfile:

ARG CI

gitlab-ci:

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

С помощью инструкции ARG я сообщаю Dockerfile, чтобы сообщить Docker, что он ожидает, что переменная с именем CI будет передана ему во время сборки. И --build-arg устанавливает значение.

...