Gitlab CI. Как задать разные значения переменных для разных веток?

Я пытался решить задачу следующим образом:

image: alpine

variables: &global_variables
    ENV_VARIABLE: ${VAR_$CI_COMMIT_BRANCH}

stages:
    - test

test_job:
    stage: test
    variables:
        <<: *global_variables
    script:
        - echo "This job ran on the $CI_COMMIT_BRANCH branch."
        - echo "$CI_COMMIT_BRANCH - $ENV_VARIABLE"


В настройка CI прописал такие переменные:

VAR_master: "Это мастер"
VAR_dev: "Это дев"

И когда я делаю push в мастер у меня всё работает, я получаю сообщение "Это мастер". Однако когда я делаю тоже самое в деве, то не получаю ожидаемого сообщения "Это дев".

Почему так может происходить?
Или может моя задача решается другим способом? Как это можно сделать?
  • Вопрос задан
  • 3249 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Bladegreat
Для этого можно использовать rules.

build-container:
  stage: build
  rules:
    - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
      variables:
        image_tag: "$CI_REGISTRY_IMAGE"
      changes:
        - Dockerfile
    - if: '$CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH'
      variables:
        image_tag: "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG"
      changes:
        - Dockerfile
  services:
    - docker:18-dind
  before_script:
    - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
  script:
    - docker build --pull -t ${image_tag} .
    - docker push ${image_tag}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы