Ինչպե՞ս է 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
  • echo հետ 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
  • echo հետ 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
  • echo հետ vars:
    $ echo $MSG
    project-3
    Job succeeded

Դատարկ արժեքով ժառանգություն [աղբյուրներ]

Դատարկ արժեքը նույնպես արժեք է
Դատարկ արժեքը Null չէ

Փոփոխականներով խմբեր

Ինչպե՞ս է 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
  • echo հետ vars:
    $ echo $MSG
    Job succeeded

Ժառանգություն ներառման և խմբերի հետ [աղբյուրներ]

Այստեղ մենք կփորձենք նախագիծ-2-ը ներառել project-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
  • echo հետ vars:
    $ echo $MSG
    B
    Job succeeded

Ժառանգությունը ներառումով [աղբյուրներ]

Այստեղ մենք կփորձենք նախագիծ-2-ը ներառել project-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
  • echo հետ 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-ի գլոբալ տարածությունը ընդհանուր է: Իսկ այն ֆայլը, որում ընդգրկումը տեղի է ունենում, ունի առաջնահերթություն:

Source: www.habr.com

Добавить комментарий