Gitlab ішіндегі айнымалы мәндерді бірнеше жерде орнатуға болады:
- Топ параметрлерінде
- Жоба параметрлерінде
- .gitlab-ci.yml ішінде
Бұл жағдайда топтағы және жоба параметрлеріндегі айнымалы мәндерді «файл» немесе «тұрақты айнымалы» ретінде орнатуға болады және «қорғалған» және «маска» құсбелгілерін қойыңыз.
Қарапайым тұқым қуалаудан бастайық және ол бірте-бірте күрделене түседі.
Басымдық деңгейлерінің соңғы тізімін құжаттың соңында табуға болады.
Топтармен мұрагерлік [көздер]
Топтардың айнымалылары топ жобаға неғұрлым жақын орналасса, оның мәні соғұрлым маңызды болады деген ережемен тұқым қуалайды.
Айнымалылары бар топтар
.gitlab-ci.yml
image: busybox:latest
variables:
GIT_STRATEGY: none
echo:
stage: test
script:
- echo $MSG
Құбырдың нәтижесі
$ echo $MSG
B
Егер айнымалы В тобында көрсетілмеген болса, онда біз А мәнін көрген болар едік.
.gitlab-ci.yml ішіндегі айнымалыларды мұралау [көздер]
Мұнда барлығы өте қарапайым: айнымалы мәнді жаһандық түрде орнатуға болады немесе оны жұмыс ішінде қайта жазуға болады.
Айнымалылары бар топтар
.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.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.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.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.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.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
Нәтижелері төмендегідей басымдықтар:
- Жоба параметрлеріндегі айнымалылар
- Топтардағы айнымалылар
- Тапсырмалар ішінде қатаң көрсетілген айнымалы мәндер (оның ішінде қосылған файлдар)
- .gitlab-ci.yml ішіндегі жаһандық айнымалылар
- Қосылған файлдардың ішіндегі жаһандық айнымалылар
қорытынды
Ең айқын емес мәселе, «айнымалы кодқа неғұрлым жақын болса, соғұрлым маңызды» ережесі алдымен топтар үшін, содан кейін .gitlab-ci.yml ішіндегі айнымалылар үшін бірдей ереже жұмыс істейді, бірақ тек шарт бойынша. топтардағы айнымалылар көрсетілмегенін.
Әрі қарай, негізгі және енгізілген .gitlab-ci.yml үшін жаһандық кеңістік ортақ екенін түсіну маңызды. Ал қосу орын алатын файл басымдыққа ие.
Ақпарат көзі: www.habr.com