Как передать значение из коммита в GitLab CI конвейер как переменную? - PullRequest
1 голос
/ 29 июня 2019

Мне нужно динамически передать значение в конвейер GitLab CI, чтобы передать значение дальше заданиям. Проблема в том, что значение не может быть сохранено в коде, и не требуется никакой реконфигурации конвейера (например, я могу передать значение в разделе «переменных» .gitlab-ci.yml, но это означает сохранение значения в коде или изменения в «Переменных среды»). «раздел« Настройки CI / CD »означает ручную реконфигурацию). Кроме того, для этой цели также нельзя использовать имя ветви.

Это не секретная строка, а ключевое слово, которое изменяет выполнение конвейера. Итак, как я могу это сделать?

1 Ответ

0 голосов
/ 29 июня 2019

Вы не указали источник этого значения.

Вы говорите "передать значение из коммита в ..."
Если это некоторая мета-информация о самом коммите, посмотрите список Предопределенные переменные среды
Существует довольно много переменных с именем CI_COMMIT_*, которые могут работать для вас.

Однако, если это какое-то значение, которое вы генерируете в конвейере, водну работу и хотите перейти на другую работу - это другой случай.Существует долгоживущий запрос на Передача переменных между заданиями , который все еще не реализован.

Обходной путь на данный момент заключается в использовании артефактов - файлов для передачипоэтапная информация между заданиями.
Наш вариант использования заключается в извлечении версии приложения Java из pom.xml и последующей передаче ее в какое-либо задание на упаковку.
Вот как мы это делаем в нашем .gitlab-ci.yml:

...
variables:
  VARIABLES_FILE: ./variables.txt  # "." is required for image that have sh not bash

...

get-version:
  stage: prepare
  image: ...
  script:
    - APP_VERSION=...
    - echo "export APP_VERSION=$APP_VERSION" > $VARIABLES_FILE
  artifacts:
    paths:
      - $VARIABLES_FILE
...
package:
  stage: package
  image: ...
  script:
    - source $VARIABLES_FILE
    - echo "Use env var APP_VERSION here as you like ..."
...