Gitlab-CI పర్యావరణ వేరియబుల్‌లను ఎలా వారసత్వంగా పొందుతుంది?

Gitlabలోని వేరియబుల్స్ అనేక ప్రదేశాలలో సెట్ చేయబడతాయి:

  1. సమూహ సెట్టింగ్‌లలో
  2. ప్రాజెక్ట్ సెట్టింగ్‌లలో
  3. లోపల .gitlab-ci.yml

ఈ సందర్భంలో, సమూహంలోని వేరియబుల్స్ మరియు ప్రాజెక్ట్ సెట్టింగ్‌లను "ఫైల్" లేదా "రెగ్యులర్ వేరియబుల్"గా సెట్ చేయవచ్చు మరియు "రక్షిత" మరియు "మాస్క్" చెక్‌బాక్స్‌లను తనిఖీ చేయవచ్చు.

Gitlab-CI పర్యావరణ వేరియబుల్‌లను ఎలా వారసత్వంగా పొందుతుంది?

సాధారణ వారసత్వంతో ప్రారంభిద్దాం మరియు అది క్రమంగా మరింత క్లిష్టంగా మారుతుంది.

పత్రం చివరిలో ప్రాధాన్యత స్థాయిల తుది జాబితాను కనుగొనవచ్చు.

సమూహాలతో వారసత్వం [మూలాలు]

సమూహాల నుండి వేరియబుల్స్ వారసత్వంగా పొందబడతాయి, సమూహం ప్రాజెక్ట్‌కు దగ్గరగా ఉన్నందున, దాని విలువ అంత ముఖ్యమైనది.

వేరియబుల్స్‌తో కూడిన గుంపులు

Gitlab-CI పర్యావరణ వేరియబుల్‌లను ఎలా వారసత్వంగా పొందుతుంది?

.gitlab-ci.yml

image: busybox:latest
variables:
  GIT_STRATEGY: none

echo:
  stage: test
  script:
    - echo $MSG

పైప్లైన్ ఫలితం

$ echo $MSG
B

సమూహం Bలో వేరియబుల్ పేర్కొనబడకపోతే, మనం A విలువను చూసేవాళ్లం.

.gitlab-ci.yml లోపల వేరియబుల్స్ ఇన్హెరిటింగ్ [మూలాలు]

ఇక్కడ ప్రతిదీ చాలా సులభం: మీరు ప్రపంచవ్యాప్తంగా వేరియబుల్‌ని సెట్ చేయవచ్చు లేదా మీరు ఉద్యోగం లోపల దాన్ని ఓవర్‌రైట్ చేయవచ్చు.

వేరియబుల్స్‌తో కూడిన గుంపులు

Gitlab-CI పర్యావరణ వేరియబుల్‌లను ఎలా వారసత్వంగా పొందుతుంది?

.gitlab-ci.yml

ఇప్పుడు 2 ఉద్యోగాలను సృష్టిద్దాం, వాటిలో ఒకదానిలో మేము $MSGని స్పష్టంగా సూచిస్తాము.

image: busybox:latest
variables:
  GIT_STRATEGY: none
  MSG: "Custom in global .gitlab-ci.yml"

echo:
  stage: test
  script:
    - echo $MSG

echo with var:
  stage: test
  variables:
    MSG: "Custom in job .gitlab-ci.yml"
  script:
    - echo $MSG

పైప్లైన్ ఫలితం

  • విసిరారు:
    $ echo $MSG
    Custom in global .gitlab-ci.yml
    Job succeeded
  • vars తో ప్రతిధ్వని:
    $ echo $MSG
    Custom in job .gitlab-ci.yml
    Job succeeded

సమూహాలతో మరియు లోపల .gitlab-ci.yml వారసత్వం [మూలాలు]

మునుపటి 2 ఉదాహరణలను కలపడానికి ప్రయత్నిద్దాం. .gitlab-ci.yml లోపల వేరియబుల్స్ కంటే గ్రూప్ వేరియబుల్స్ ప్రాధాన్యతనిస్తాయి.

వేరియబుల్స్‌తో కూడిన గుంపులు

Gitlab-CI పర్యావరణ వేరియబుల్‌లను ఎలా వారసత్వంగా పొందుతుంది?

.gitlab-ci.yml

image: busybox:latest
variables:
  GIT_STRATEGY: none
  MSG: "Custom in global .gitlab-ci.yml"

echo:
  stage: test
  script:
    - echo $MSG

echo with var:
  stage: test
  variables:
    MSG: "Custom in job .gitlab-ci.yml"
  script:
    - echo $MSG

పైప్లైన్ ఫలితం

  • విసిరారు:
    $ echo $MSG
    Y
    Job succeeded
  • vars తో ప్రతిధ్వని:
    $ echo $MSG
    Y
    Job succeeded

ప్రాజెక్ట్ సెట్టింగ్‌లలో వేరియబుల్‌లను పేర్కొనడం ద్వారా వారసత్వం [మూలాలు]

ప్రాజెక్ట్ సెట్టింగ్‌లలోని వేరియబుల్స్‌కు ఎల్లప్పుడూ అత్యధిక ప్రాధాన్యత ఉంటుంది! మరియు .gitlab-ci.yml లోపల పేర్కొన్న వేరియబుల్స్ ఏ పాత్రను పోషించవు.

వేరియబుల్స్‌తో కూడిన గుంపులు

గ్రూప్ వేరియబుల్స్ తక్కువ ప్రాధాన్యతను కలిగి ఉంటాయి.
Gitlab-CI పర్యావరణ వేరియబుల్‌లను ఎలా వారసత్వంగా పొందుతుంది?

.gitlab-ci.yml

మునుపటి ఉదాహరణ నుండి ఫైల్‌ను ఉపయోగించుకుందాం. ఇక్కడ మళ్లీ .gitlab-ci.yml లోపల వేరియబుల్స్ పేర్కొనబడ్డాయి, అయితే సమూహాలలోని వేరియబుల్స్ ఇప్పటికీ వాటి కంటే ప్రాధాన్యతనిస్తాయి.

image: busybox:latest
variables:
  GIT_STRATEGY: none
  MSG: "Custom in global .gitlab-ci.yml"

echo:
  stage: test
  script:
    - echo $MSG

echo with var:
  stage: test
  variables:
    MSG: "Custom in job .gitlab-ci.yml"
  script:
    - echo $MSG

పైప్లైన్ ఫలితం

  • విసిరారు:
    $ echo $MSG
    project-3
    Job succeeded
  • vars తో ప్రతిధ్వని:
    $ echo $MSG
    project-3
    Job succeeded

ఖాళీ విలువతో వారసత్వం [మూలాలు]

ఖాళీ విలువ కూడా ఒక విలువ
ఖాళీ విలువ శూన్యం కాదు

వేరియబుల్స్‌తో కూడిన గుంపులు

Gitlab-CI పర్యావరణ వేరియబుల్‌లను ఎలా వారసత్వంగా పొందుతుంది?

.gitlab-ci.yml

image: busybox:latest
variables:
  GIT_STRATEGY: none
  MSG: "Custom in global .gitlab-ci.yml"

echo:
  stage: test
  script:
    - echo $MSG

echo with var:
  stage: test
  variables:
    MSG: "Custom in job .gitlab-ci.yml"
  script:
    - echo $MSG

పైప్లైన్ ఫలితం

  • విసిరారు:
    $ echo $MSG
    Job succeeded
  • vars తో ప్రతిధ్వని:
    $ echo $MSG
    Job succeeded

చేర్చడం మరియు సమూహాలతో వారసత్వం [మూలాలు]

ఇక్కడ ప్రాజెక్ట్-2లో ప్రాజెక్ట్-3ని చేర్చడానికి ప్రయత్నిస్తాము
ఈ సందర్భంలో సమూహాలకు ప్రాధాన్యత ఉంది.

వేరియబుల్స్‌తో కూడిన గుంపులు

Gitlab-CI పర్యావరణ వేరియబుల్‌లను ఎలా వారసత్వంగా పొందుతుంది?

.gitlab-ci.yml

మరియు వేరియబుల్‌ను గ్లోబల్‌గా .gitlab-ci.ymlలో సెట్ చేయండి

variables:
 MSG: "With  include  .gitlab-ci.yml"
include:
 - project: how-is-gitlab-ci-inherit-environment-variables/z/y/project-3
   file: '.gitlab-ci.yml'

పైప్లైన్ ఫలితం

  • విసిరారు:
    $ echo $MSG
    B
    Job succeeded
  • vars తో ప్రతిధ్వని:
    $ echo $MSG
    B
    Job succeeded

చేర్చడంతో వారసత్వం [మూలాలు]

ఇక్కడ ప్రాజెక్ట్-2లో ప్రాజెక్ట్-3ని చేర్చడానికి ప్రయత్నిస్తాము.
షరతుతో: సమూహాలు లేదా ప్రాజెక్ట్‌లో వేరియబుల్స్ లేవు.

వేరియబుల్స్‌తో కూడిన గుంపులు

Gitlab-CI పర్యావరణ వేరియబుల్‌లను ఎలా వారసత్వంగా పొందుతుంది?

.gitlab-ci.yml

మునుపటి ఉదాహరణలో అదే

variables:
 MSG: "With  include  .gitlab-ci.yml"
include:
 - project: how-is-gitlab-ci-inherit-environment-variables/z/y/project-3
   file: '.gitlab-ci.yml'

పైప్లైన్ ఫలితం

  • విసిరారు:
    $ echo $MSG
    With include .gitlab-ci.yml
    Job succeeded
  • vars తో ప్రతిధ్వని:
    $ echo $MSG
    Custom in job .gitlab-ci.yml
    Job succeeded

ఫలితాలు ఇలా ఉన్నాయి ప్రాధాన్యతలు:

  1. ప్రాజెక్ట్ సెట్టింగ్‌లలో వేరియబుల్స్
  2. సమూహాలలో వేరియబుల్స్
  3. ఉద్యోగాల లోపల ఖచ్చితంగా పేర్కొనబడిన వేరియబుల్స్ (చేర్చబడిన ఫైల్‌లతో సహా)
  4. .gitlab-ci.yml లోపల గ్లోబల్ వేరియబుల్స్
  5. ఫైళ్లలో గ్లోబల్ వేరియబుల్స్ ఉన్నాయి

తీర్మానం

చాలా స్పష్టంగా లేని అంశం ఏమిటంటే, "కోడ్‌కు వేరియబుల్ ఎంత దగ్గరగా ఉంటే, అది చాలా ముఖ్యమైనది" అనే నియమం మొదట సమూహాలకు పనిచేస్తుంది, ఆపై .gitlab-ci.yml లోపల వేరియబుల్స్‌కు అదే నియమం, కానీ షరతు ప్రకారం మాత్రమే సమూహాలలో వేరియబుల్స్ పేర్కొనబడలేదు.
తర్వాత, ప్రధాన మరియు చేర్చబడిన .gitlab-ci.yml కోసం గ్లోబల్ స్పేస్ సాధారణమని అర్థం చేసుకోవడం ఒక ముఖ్యమైన విషయం. మరియు చేర్చడం జరిగే ఫైల్‌కు ప్రాధాన్యత ఉంటుంది.

మూలం: www.habr.com

ఒక వ్యాఖ్యను జోడించండి