Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Setup Gitlab CI/CD environment variables via UI

I am new at gitlab CI/CD Settings. I don't want to put sensitive credentials (like API-Keys, passwords...) into my branch. For this, GitLab (and other CI/CD-Services) are able to set environment variables.

What I have done so far:

  1. Via UI (Project ⇒ Settings ⇒ CI/CD ⇒ Variables)

    First go to Project ⇒ Settings ⇒ CI/CD ⇒ Variables and add them like this: enter image description here

    Now here trying to get the File with all your config-values(e.g. with dotenv).

    require("dotenv");
    module.exports = process.env.NODE_ENV.trim() === "production" ? _config.production : _config.development;
    

Current .gitlab-ci.yaml file is:

image: node:8.9.0

cache:
  paths:
   - node_modules/

stages:
 - ver
 - init
 - test
 - build
 - deploy

 ver:
   stage: ver
   script:
   - node -v

init:
  stage: init-dev
  script:
   - npm install
  tags:
   - dev_server
  only:
   - dev  
  variables:
    ENV_PRODUCTION: "/builds/AkdiD/8/abcde/projectName/ENV_PRODUCTION" 
   
test:
   stage: test
   script:
    - npm test

build:
 stage: build
 script:
  - echo "BUILD_VERSION=production" >> build.env
 artifacts:
   reports:
   dotenv: build.env   

 deploy:
   stage: deploy-dev
   script:
    - npm run killcurrent
    - echo $ENV_PRODUCTION
    - echo $BUILD_VERSION
    - npm run staging
   tags:
    - dev_server
   only:
    - dev

Question: where do I need to keep this ENV_PRODUCTION file name (yaml file or other place) so that server take that value ??

Edited variable like this- still server it not fetching these variables. Should I change/put something in .gitlab-ci.yml file?

enter image description here

like image 573
Amit Rathee Avatar asked Feb 14 '26 14:02

Amit Rathee


1 Answers

Settings up a Custom environment variables of type File (GItLab 11.11+) does not seem the way to reference/set a list of variables, including ones with sensitive information.
A variable of type file is generally there to represent, for instance, a certificate.

You should define variables, possibly Group-level environment variables

You can define per-project or per-group variables that are set in the pipeline environment.
Group-level variables are stored out of the repository (not in .gitlab-ci.yml) and are securely passed to GitLab Runner, which makes them available during a pipeline run.
For Premium users who do not use an external key store or who use GitLab’s integration with HashiCorp Vault, we recommend using group environment variables to store secrets like passwords, SSH keys, and credentials.

like image 116
VonC Avatar answered Feb 16 '26 06:02

VonC