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.
- Navigate to Settings -> CI/CD
- In Variables section press “Add Variable”
- Set key as NINJA
- Set “Environment scope” with proper env, i.e testing
- 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.