[SOLVED] Gitlab CI/CD: Setup variables relating to environment

Issue

This Content is from Stack Overflow. Question asked by PicxyB

I am working with gitlab version 14.10.5.

In the left panel, there is a “Deployments” icone that allow me to create environments.
In a gitlab repository I want to set up pipeline for dev, stage and main branches relating to 3 environments.

In these environments, I want to setup specific variables that will chaneg over environments.

For example, I want the variable NINJA to be setup with the value:

  • “1” for the branch dev
  • “2” for the branch stage
  • “3” for the branch main

So, in my .gitlab-ci.yml I have:

build-testing:
  stage: build
  script:
    - echo "Hello team"
    - echo "$NINJA"
  environment:
    name: testing
  only:
    refs:
      - dev


build-staging:
  stage: build
  script:
    - echo "Hello team"
    - echo "$NINJA"
  environment:
    name: staging
  only:
    refs:
      - stage


build-production:
  stage: build
  script:
    - echo "Hello team"
    - echo "$NINJA"
  environment:
    name: production
  only:
    refs:
      - main

How to setup the variable NINJA in an environment, in gitlab ?

Solution

You can set variable scope, so a variable with same name will return different values in in different envs.

  1. Navigate to Settings -> CI/CD
  2. In Variables section press “Add Variable”
  3. Set key as NINJA
  4. Set “Environment scope” with proper env, i.e testing
  5. Repeat 2,3 and 4 with other envs (staging, production)

See also: https://docs.gitlab.com/ee/ci/environments/#scope-environments-with-specs

Answered by Andrew

This Question and Answer are collected from stackoverflow and tested by JTuto community, is licensed under the terms of CC BY-SA 2.5.CC BY-SA 3.0.CC BY-SA 4.0.

people found this article helpful. What about you?