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

Егер айнымалы В тобында көрсетілмеген болса, онда біз А мәнін көрген болар едік.

.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 $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 $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 $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
  • бар жаңғырық:
    $ 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
  • бар жаңғырық:
    $ 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
  • бар жаңғырық:
    $ 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

пікір қалдыру