Gitlab CI — уникальный номер сборки

#gitlab #jenkins-pipeline #gitlab-ci

#gitlab #gitlab-ci

Вопрос:

Есть ли в Gitlab CI какой-либо уникальный номер, который можно использовать в качестве номера сборки, как мы используем в Jenkins. Я узнал о переменной «CI_PIPELINE_IID», но проблема с этой переменной в том, что она обновляется для всех ветвей, а для каждой ветви такой переменной не существует.

Ответ №1:

Мы решили ту же проблему, используя переменную $CI_PIPELINE_IID , которая определяется как

IID (внутренний идентификатор) текущего конвейера на уровне проекта. Этот идентификатор уникален только в рамках текущего проекта.

И очень похож на Jenkins’ $BUILD_NUMBER

Смотри также https://docs.gitlab.com/ee/ci/variables/predefined_variables.html#variables-reference

Комментарии:

1. Как вы на самом деле используете эту переменную? Эта ссылка определяет кучу переменных, но я не вижу, как на самомделе ее где-либо использовать.

2. @Pigpocket эти переменные будут доступны в вашем .gitlab-ci.yml файле: вы можете использовать их в этом файле, и GitLab заменит переменные их фактическими значениями.

Ответ №2:

Похоже, что CI_COMMIT_SHA или CI_COMMIT_SHORT_SHA являются отличными кандидатами для этого, поскольку они дают вам ссылку на коммит, из которого он был собран.

Например, если вы хотите использовать его в качестве тега изображения docker, используйте

 docker build . -t myapp:$CI_COMMIT_SHA
  

Обратите внимание, что более ранние версии Gitlab (версия 8.x) используют CI_BUILD_TAG

Дополнительные переменные в:https://docs.gitlab.com/ee/ci/variables/predefined_variables.html#variables-reference

Ответ №3:

Вы можете проверить, может ли какой-либо из других идентификаторов «Переменных CI» работать в вашем случае:

  • CI_JOB_ID 9.0 все уникальные идентификаторы текущего задания, которые GitLab CI использует внутри
  • CI_PIPELINE_ID 8.10 все уникальные идентификаторы текущего конвейера, которые GitLab CI использует внутри (один I)
  • CI_PROJECT_ID все все уникальный идентификатор текущего проекта, который GitLab CI использует внутри
  • CI_RUNNER_ID 8.10 0.5 Уникальный идентификатор используемого runner

Комментарии:

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

2. @Prasa2166 Хорошо. Хотя, насколько мне известно, нет.

3. Является ли CI_JOB_ID уникальным во всех конвейерах для всех проектов или только в контексте одного проекта? И аналогично, как насчет области уникальности для CI_PIPELINE_ID?

4. @dragonsfire Это кажется глобальным ( gitlab.com/gitlab-org/gitlab-foss/issues/3691#note_33364475 )

Ответ №4:

Да, это разумный запрос для многих ситуаций. Кто-то уже выпускал его раньше, пожалуйста, обратитесь к: https://gitlab.com/gitlab-org/gitlab/-/issues/23844. Но, похоже, что это пока не добавлено.