Получить имя ветки не текущей gitlab-ci

#docker #gitlab #gitlab-ci #amazon-ecr

#docker #gitlab #gitlab-ci #amazon-ecr

Вопрос:

У меня есть задание на gitlab-ci, которое выполняется, как только я создаю новую ветку (release / 0.0.0), это задание создает и отправляет образ docker в aws ECR. И я использовал название ветки в качестве тега изображения, как показано ниже.

 script:
    - docker build -t back:$CI_COMMIT_REF_NAME .
     - docker tag back:$CI_COMMIT_REF_NAME aws_ecr_url/back:$CI_COMMIT_REF_NAME
     - docker push aws_ecr_url/back:$CI_COMMIT_REF_NAME
 

Еще одно задание на главном сервере ветки, которое выполняется, когда я нажимаю тег, это задание предназначено для извлечения изображения, отправленного из ветки выпуска.

 script:
    - docker pull aws_ecr_yrl/back:$ ?? 
 

ПРОБЛЕМА, которую я не знаю, что поставить на место «??», чтобы изображение, созданное заданием, было в выпуске.

Я использовал CI_COMMIT_REF_NAME =~/regex/ , но это не сработало. и я не нашел ни одной предопределенной переменной для получения другого имени ветви.

Есть какое-нибудь решение, чтобы это сделать?

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

1. Всегда ли название ветки, которую вы пытаетесь найти, совпадает с одной и той же веткой? Тот, который был только что объединен с master? Что-то еще?

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

3. Если этот конвейер поступает из запроса на слияние, вы можете получить исходную ветвь (ветвь, которая будет объединена с целевой) с одной из предопределенных переменных $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME . Однако это будет равно нулю, если конвейер запущен и он не является результатом запроса на слияние. Все предопределенные переменные можно найти в документации , а конкретные для запроса слияния находятся примерно на полпути вниз по этой странице

4. Я нашел решение для этого, если вы заинтересованы

Ответ №1:

РЕШЕНИЕ

Если кто-то ищет решение этой проблемы, я использовал кеш для ее решения.

 job_in_release:
cache:
 key: tag
 paths:
  - cache
 policy: push
 
script:
 - echo $CI_COMMIT_REF_NAME > cache/tag/file.txt'

job_in_master
 cache:
 key: tag
 paths:
  - cache
 policy: pull

 script:
  - su -
  - export TAG=$(cat cache/tag/file.txt)