Kā Gitlab-CI pārmanto vides mainīgos?

Gitlab mainīgos var iestatīt vairākās vietās:

  1. Grupas iestatījumos
  2. Projekta iestatījumos
  3. Iekšpusē .gitlab-ci.yml

Šajā gadījumā mainīgos lielumus grupas un projekta iestatījumos var iestatīt kā “fails” vai “parastais mainīgais” un atzīmēt izvēles rūtiņas “aizsargāts” un “maska”.

Kā Gitlab-CI pārmanto vides mainīgos?

Sāksim ar vienkāršu mantojumu, un tas pakāpeniski kļūs sarežģītāks.

Galīgais prioritāšu līmeņu saraksts ir atrodams dokumenta beigās.

Mantojums ar grupām [avoti]

Mainīgie lielumi no grupām tiek mantoti ar noteikumu, ka jo tuvāk grupa atrodas projektam, jo ​​svarīgāka ir tās vērtība.

Grupas ar mainīgajiem

Kā Gitlab-CI pārmanto vides mainīgos?

.gitlab-ci.yml

image: busybox:latest
variables:
  GIT_STRATEGY: none

echo:
  stage: test
  script:
    - echo $MSG

Cauruļvada rezultāts

$ echo $MSG
B

Ja mainīgais nebūtu norādīts grupā B, tad mēs būtu redzējuši vērtību A.

Mainīgo mantošana failā .gitlab-ci.yml [avoti]

Šeit viss ir pavisam vienkārši: mainīgo var iestatīt globāli vai pārrakstīt darba ietvaros.

Grupas ar mainīgajiem

Kā Gitlab-CI pārmanto vides mainīgos?

.gitlab-ci.yml

Tagad izveidosim 2 darba vietas, vienā no tām skaidri norādīsim $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

Cauruļvada rezultāts

  • atbalss:
    $ echo $MSG
    Custom in global .gitlab-ci.yml
    Job succeeded
  • atbalss ar vars:
    $ echo $MSG
    Custom in job .gitlab-ci.yml
    Job succeeded

Mantojums ar grupām un iekšpusē .gitlab-ci.yml [avoti]

Mēģināsim apvienot iepriekšējos 2 piemērus. Grupas mainīgajiem ir prioritāte pār mainīgajiem .gitlab-ci.yml.

Grupas ar mainīgajiem

Kā Gitlab-CI pārmanto vides mainīgos?

.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

Cauruļvada rezultāts

  • atbalss:
    $ echo $MSG
    Y
    Job succeeded
  • atbalss ar vars:
    $ echo $MSG
    Y
    Job succeeded

Mantojums, norādot mainīgos lielumus projekta iestatījumos [avoti]

Projekta iestatījumu mainīgajiem VIENMĒR ir augstākā prioritāte! Un mainīgie, kas norādīti .gitlab-ci.yml, nespēlē nekādu lomu.

Grupas ar mainīgajiem

Grupas mainīgajiem ir zemāka prioritāte.
Kā Gitlab-CI pārmanto vides mainīgos?

.gitlab-ci.yml

Izmantosim failu no iepriekšējā piemēra. Šeit atkal ir norādīti mainīgie, kas norādīti .gitlab-ci.yml, bet mainīgie grupās joprojām ir prioritāri pār tiem.

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

Cauruļvada rezultāts

  • atbalss:
    $ echo $MSG
    project-3
    Job succeeded
  • atbalss ar vars:
    $ echo $MSG
    project-3
    Job succeeded

Mantojums ar tukšu vērtību [avoti]

Tukša vērtība arī ir vērtība
Tukša vērtība nav Null

Grupas ar mainīgajiem

Kā Gitlab-CI pārmanto vides mainīgos?

.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

Cauruļvada rezultāts

  • atbalss:
    $ echo $MSG
    Job succeeded
  • atbalss ar vars:
    $ echo $MSG
    Job succeeded

Mantojums ar iekļautu un grupām [avoti]

Šeit mēs centīsimies iekļaut projektu-2 projektā-3
Grupām šajā gadījumā ir prioritāte.

Grupas ar mainīgajiem

Kā Gitlab-CI pārmanto vides mainīgos?

.gitlab-ci.yml

Un iestatiet mainīgo globāli .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'

Cauruļvada rezultāts

  • atbalss:
    $ echo $MSG
    B
    Job succeeded
  • atbalss ar vars:
    $ echo $MSG
    B
    Job succeeded

Mantojums ar iekļautu [avoti]

Šeit mēs centīsimies iekļaut projektu-2 projektā-3.
Ar nosacījumu, ka: ne grupām, ne pašam projektam nav nekādu mainīgo.

Grupas ar mainīgajiem

Kā Gitlab-CI pārmanto vides mainīgos?

.gitlab-ci.yml

Tas pats, kas iepriekšējā piemērā

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

Cauruļvada rezultāts

  • atbalss:
    $ echo $MSG
    With include .gitlab-ci.yml
    Job succeeded
  • atbalss ar vars:
    $ echo $MSG
    Custom in job .gitlab-ci.yml
    Job succeeded

Rezultāti ir šādi prioritātes:

  1. Mainīgie lielumi projekta iestatījumos
  2. Mainīgie lielumi grupās
  3. Darbos stingri norādīti mainīgie (tostarp iekļautie faili)
  4. Globālie mainīgie .gitlab-ci.yml
  5. Globālie mainīgie iekļautajos failos

Secinājums

Visneredzamākais ir tas, ka noteikums “jo tuvāk mainīgais ir kodam, jo ​​svarīgāks tas ir” vispirms darbojas grupām un pēc tam tas pats noteikums mainīgajiem .gitlab-ci.yml, bet tikai ar nosacījumu. ka grupās nav norādīti mainīgie .
Tālāk ir svarīgi saprast, ka globālā telpa galvenajam un iekļautajam .gitlab-ci.yml ir izplatīta. Un failam, kurā notiek iekļaušana, ir prioritāte.

Avots: www.habr.com

Pievieno komentāru