#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. Но, похоже, что это пока не добавлено.