Gitlab-CI kif jirtu varjabbli ambjentali?

Varjabbli f'Gitlab jistgħu jiġu stabbiliti f'diversi postijiet:

  1. Fl-issettjar tal-grupp
  2. Fis-settings tal-proġett
  3. Ġewwa .gitlab-ci.yml

F'dan il-każ, varjabbli fis-settings tal-grupp u tal-proġett jistgħu jiġu ssettjati bħala "fajl" jew "varjabbli regolari" u ċċekkja l-kaxxi ta 'kontroll "protetti" u "maskra".

Gitlab-CI kif jirtu varjabbli ambjentali?

Nibdew b'wirt sempliċi u gradwalment isir aktar kumpless.

Il-lista finali tal-livelli ta' prijorità tista' tinstab fl-aħħar tad-dokument.

Wirt ma' gruppi [sorsi]

Il-varjabbli minn gruppi jintirtu, bir-regola li iktar ma jkun viċin il-grupp tal-proġett, iktar ikun importanti l-valur tiegħu.

Gruppi b'varjabbli

Gitlab-CI kif jirtu varjabbli ambjentali?

.gitlab-ci.yml

image: busybox:latest
variables:
  GIT_STRATEGY: none

echo:
  stage: test
  script:
    - echo $MSG

Riżultat tal-pipeline

$ echo $MSG
B

Kieku l-varjabbli ma kinitx speċifikata fil-grupp B, allura konna naraw il-valur A.

Jiret varjabbli ġewwa .gitlab-ci.yml [sorsi]

Kollox huwa pjuttost sempliċi hawn: tista 'tissettja varjabbli globalment, jew tista' tikteb fuqha fuq ix-xogħol.

Gruppi b'varjabbli

Gitlab-CI kif jirtu varjabbli ambjentali?

.gitlab-ci.yml

Ejja issa noħolqu 2 impjiegi, f'wieħed minnhom se nindikaw b'mod espliċitu $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

Riżultat tal-pipeline

  • eku:
    $ echo $MSG
    Custom in global .gitlab-ci.yml
    Job succeeded
  • eku b'vars:
    $ echo $MSG
    Custom in job .gitlab-ci.yml
    Job succeeded

Wirt bi gruppi u ġewwa .gitlab-ci.yml [sorsi]

Ejja nippruvaw ngħaqqdu ż-żewġ eżempji preċedenti. Il-varjabbli tal-grupp jieħdu preċedenza fuq il-varjabbli ġewwa .gitlab-ci.yml.

Gruppi b'varjabbli

Gitlab-CI kif jirtu varjabbli ambjentali?

.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

Riżultat tal-pipeline

  • eku:
    $ echo $MSG
    Y
    Job succeeded
  • eku b'vars:
    $ echo $MSG
    Y
    Job succeeded

Wirt ma jispeċifika varjabbli fl-issettjar tal-proġett [sorsi]

Varjabbli fl-issettjar tal-proġett DEJJEM għandhom l-ogħla prijorità! U l-varjabbli speċifikati ġewwa .gitlab-ci.yml ma għandhom l-ebda rwol.

Gruppi b'varjabbli

Il-varjabbli tal-grupp għandhom prijorità aktar baxxa.
Gitlab-CI kif jirtu varjabbli ambjentali?

.gitlab-ci.yml

Ejja nużaw il-fajl mill-eżempju preċedenti. Hawnhekk għal darb'oħra hemm varjabbli speċifikati ġewwa .gitlab-ci.yml, iżda varjabbli ġewwa gruppi għadhom jieħdu preċedenza fuqhom.

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

Riżultat tal-pipeline

  • eku:
    $ echo $MSG
    project-3
    Job succeeded
  • eku b'vars:
    $ echo $MSG
    project-3
    Job succeeded

Wirt b'valur vojt [sorsi]

Valur vojt huwa wkoll valur
Valur vojt mhuwiex Null

Gruppi b'varjabbli

Gitlab-CI kif jirtu varjabbli ambjentali?

.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

Riżultat tal-pipeline

  • eku:
    $ echo $MSG
    Job succeeded
  • eku b'vars:
    $ echo $MSG
    Job succeeded

Wirt ma jinkludu u gruppi [sorsi]

Hawnhekk se nippruvaw ninkludu l-proġett-2 fil-proġett-3
Gruppi f'dan il-każ għandhom prijorità.

Gruppi b'varjabbli

Gitlab-CI kif jirtu varjabbli ambjentali?

.gitlab-ci.yml

U ssettja l-varjabbli globalment f'.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'

Riżultat tal-pipeline

  • eku:
    $ echo $MSG
    B
    Job succeeded
  • eku b'vars:
    $ echo $MSG
    B
    Job succeeded

Wirt ma jinkludu [sorsi]

Hawnhekk se nippruvaw ninkludu l-proġett-2 fil-proġett-3.
Bil-kundizzjoni li: la l-gruppi u lanqas il-proġett innifsu ma għandhom xi varjabbli.

Gruppi b'varjabbli

Gitlab-CI kif jirtu varjabbli ambjentali?

.gitlab-ci.yml

L-istess bħal fl-eżempju preċedenti

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

Riżultat tal-pipeline

  • eku:
    $ echo $MSG
    With include .gitlab-ci.yml
    Job succeeded
  • eku b'vars:
    $ echo $MSG
    Custom in job .gitlab-ci.yml
    Job succeeded

Ir-riżultati huma kif ġej prijoritajiet:

  1. Varjabbli fl-issettjar tal-proġett
  2. Varjabbli fi gruppi
  3. Varjabbli speċifikati strettament ġewwa l-impjiegi (inklużi fajls inklużi)
  4. Varjabbli globali ġewwa .gitlab-ci.yml
  5. Varjabbli globali ġewwa inklużi fajls

Konklużjoni

L-aktar punt mhux ovvju huwa li r-regola "aktar ma varjabbli tkun qrib il-kodiċi, aktar tkun importanti" taħdem l-ewwel għal gruppi, u mbagħad l-istess regola għal varjabbli ġewwa .gitlab-ci.yml, iżda biss taħt il-kundizzjoni li l-varjabbli fil-gruppi mhumiex speċifikati.
Sussegwentement, punt importanti huwa li wieħed jifhem li l-ispazju globali għall-.gitlab-ci.yml prinċipali u inkluż huwa komuni. U l-fajl li fih isseħħ l-inklużjoni għandu prijorità.

Sors: www.habr.com

Żid kumment