ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π² Gitlab ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°ΡΡ Π² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΌΠ΅ΡΡΠ°Ρ :
- Π Π½Π°ΡΡΡΠΎΠΉΠΊΠ°Ρ Π³ΡΡΠΏΠΏ
- Π Π½Π°ΡΡΡΠΎΠΉΠΊΠ°Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ°
- ΠΠ½ΡΡΡΠΈ .gitlab-ci.yml
ΠΡΠΈ ΡΡΠΎΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠ°Ρ Π³ΡΡΠΏΠΏ ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°ΡΡ ΠΊΠ°ΠΊ «ΡΠ°ΠΉΠ»»ΠΈΠ»ΠΈ «ΠΎΠ±ΡΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ» ΠΈ ΠΏΠΎΡΡΠ°Π²ΠΈΡΡ Π³Π°Π»ΠΎΡΠΊΠΈ «Π·Π°ΡΠΈΡΠ΅Π½ΠΎ» ΠΈ «ΠΌΠ°ΡΠΊΠΈΡΠΎΠ²Π°ΡΡ».
ΠΠ°ΡΠ½Π΅ΠΌ Ρ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ ΠΈ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎ ΡΡΠ»ΠΎΠΆΠ½ΡΡΡΡΡ.
Π‘ ΠΊΠΎΠ½Π΅ΡΠ½ΡΠΌ ΡΠΏΠΈΡΠΊΠΎΠΌ ΡΡΠΎΠ²Π½Π΅ΠΉ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ Π² ΠΊΠΎΠ½ΡΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°.
ΠΠ°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ Π³ΡΡΠΏΠΏΠ°ΠΌΠΈ [ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠΈ]
ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΈΠ· Π³ΡΡΠΏΠΏ Π½Π°ΡΠ»Π΅Π΄ΡΡΡΡΡ, Ρ ΡΠ΅ΠΌ ΠΏΡΠ°Π²ΠΈΠ»ΠΎΠΌ, ΡΡΠΎ ΡΠ΅ΠΌ Π±Π»ΠΈΠΆΠ΅ Π³ΡΡΠΏΠΏΠ° ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π° ΠΊ ΠΏΡΠΎΠ΅ΠΊΡΡ ΡΠ΅ΠΌ Π΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π²Π°ΠΆΠ½Π΅Π΅.
ΠΡΡΠΏΠΏΡ Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ
.gitlab-ci.yml
image: busybox:latest
variables:
GIT_STRATEGY: none
echo:
stage: test
script:
- echo $MSG
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ ΠΏΠ°ΠΉΠ»Π°ΠΉΠ½Π°
$ echo $MSG
B
ΠΡΠ»ΠΈ Π±Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Π½Π΅ Π±ΡΠ»Π° ΡΠΊΠ°Π·Π°Π½Π° Π² Π³ΡΡΠΏΠΏΠ΅ B, ΡΠΎ ΠΌΡ Π±Ρ ΡΠ²ΠΈΠ΄Π΅Π»ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π.
ΠΠ°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π²Π½ΡΡΡΠΈ .gitlab-ci.yml [ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠΈ]
ΠΠ΄Π΅ΡΡ Π²ΡΠ΅ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ: ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°ΡΡ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ, Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΠ°ΡΡ Π΅Π΅ Π²Π½ΡΡΡΠΈ Π΄ΠΆΠΎΠ±Ρ.
ΠΡΡΠΏΠΏΡ c ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ
.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:
$ echo $MSG Custom in global .gitlab-ci.yml Job succeeded
- echo with vars:
$ echo $MSG Custom in job .gitlab-ci.yml Job succeeded
ΠΠ°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ Π³ΡΡΠΏΠΏΠ°ΠΌΠΈ ΠΈ Π²Π½ΡΡΡΠΈ .gitlab-ci.yml [ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠΈ]
ΠΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡΡ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠ΅ 2 ΠΏΡΠΈΠΌΠ΅ΡΠ°. ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π³ΡΡΠΏΠΏ Π² ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠ΅ ΠΏΠ΅ΡΠ΅Π΄ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ Π²Π½ΡΡΡΠΈ .gitlab-ci.yml.
ΠΡΡΠΏΠΏΡ c ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ
.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:
$ echo $MSG Y Job succeeded
- echo with vars:
$ echo $MSG Y Job succeeded
ΠΠ°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠ°Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ° [ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠΈ]
ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠ°Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈΠΌΠ΅ΡΡ ΠΠ‘ΠΠΠΠ Π½Π°ΠΈΠ²ΡΡΡΠΈΠΉ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ! Π ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅, ΡΠΊΠ°Π·Π°Π½Π½ΡΠ΅ Π²Π½ΡΡΡΠΈ .gitlab-ci.yml Π½Π΅ ΠΈΠ³ΡΠ°ΡΡ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΡΠΎΠ»ΠΈ.
ΠΡΡΠΏΠΏΡ c ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ
ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π³ΡΡΠΏΠΏ ΠΈΠΌΠ΅ΡΡ ΠΌΠ΅Π½ΡΡΠΈΠΉ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ.
.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:
$ echo $MSG project-3 Job succeeded
- echo with vars:
$ echo $MSG project-3 Job succeeded
ΠΠ°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ ΠΏΡΡΡΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ [ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠΈ]
ΠΡΡΡΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ β ΡΡΠΎ ΡΠΎΠΆΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅
ΠΡΡΡΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ β ΡΡΠΎ Π½Π΅ Null
ΠΡΡΠΏΠΏΡ c ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ
.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:
$ echo $MSG Job succeeded
- echo with vars:
$ echo $MSG Job succeeded
ΠΠ°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ ΠΈΠ½ΠΊΠ»ΡΠ΄ΠΎΠΌ ΠΈ Π³ΡΡΠΏΠΏΠ°ΠΌΠΈ [ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠΈ]
ΠΠ΄Π΅ΡΡ ΠΏΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ Π² project-2 Π·Π°ΠΈΠ½ΠΊΠ»ΡΠ΄ΠΈΡΡ project-3
ΠΡΡΠΏΠΏΡ Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΈΠΌΠ΅ΡΡ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ.
ΠΡΡΠΏΠΏΡ c ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ
.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:
$ echo $MSG B Job succeeded
- echo with vars:
$ echo $MSG B Job succeeded
ΠΠ°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ ΠΈΠ½ΠΊΠ»ΡΠ΄ΠΎΠΌ [ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠΈ]
ΠΠ΄Π΅ΡΡ ΠΏΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ Π² project-2 Π·Π°ΠΈΠ½ΠΊΠ»ΡΠ΄ΠΈΡΡ project-3.
C ΡΡΠ»ΠΎΠ²ΠΈΠ΅ΠΌ ΡΡΠΎ: Π½ΠΈ Π³ΡΡΠΏΠΏΡ, Π½ΠΈ ΡΠ°ΠΌ ΠΏΡΠΎΠ΅ΠΊΡ Π½Π΅ ΠΈΠΌΠ΅ΡΡ Π½ΠΈΠΊΠ°ΠΊΠΈΡ
ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
.
ΠΡΡΠΏΠΏΡ c ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ
.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:
$ echo $MSG With include .gitlab-ci.yml Job succeeded
- echo with vars:
$ echo $MSG Custom in job .gitlab-ci.yml Job succeeded
ΠΠΎΠ»ΡΡΠ°ΡΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΡ:
- ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠ°Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ°
- ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π² Π³ΡΡΠΏΠΏΠ°Ρ
- ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΡΡΠΎΠ³ΠΎ ΡΠΊΠ°Π·Π°Π½Π½ΡΠ΅ Π²Π½ΡΡΡΠΈ Π΄ΠΆΠΎΠ±Ρ (Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΠΈ Π·Π°ΠΈΠ½ΠΊΠ»ΡΠ΄Π΅Π½Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ)
- ΠΠ»ΠΎΠ±Π°Π»ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π²Π½ΡΡΡΠΈ .gitlab-ci.yml
- ΠΠ»ΠΎΠ±Π°Π»ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π²Π½ΡΡΡΠΈ Π·Π°ΠΈΠ½ΠΊΠ»ΡΠ΄Π΅Π½Π½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ²
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π‘Π°ΠΌΡΠΌ Π½Π΅ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΡΠΌ ΠΌΠΎΠΌΠ΅Π½ΡΠΎΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ, ΡΡΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ «ΡΠ΅ΠΌ Π±Π»ΠΈΠΆΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΊ ΠΊΠΎΠ΄Ρ, ΡΠ΅ΠΌ ΠΎΠ½Π° Π³Π»Π°Π²Π½Π΅Π΅» ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠ½Π°ΡΠ°Π»Π° Π΄Π»Ρ Π³ΡΡΠΏΠΏ, Π° Π·Π°ΡΠ΅ΠΌ ΡΠ°ΠΊΠΎΠ΅ ΠΆΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ ΠΈ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
Π²Π½ΡΡΡΠΈ .gitlab-ci.yml, Π½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ΠΌ ΡΡΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π² Π³ΡΡΠΏΠΏΠ°Ρ
Π½Π΅ Π·Π°Π΄Π°Π½Π½Ρ.
ΠΠ°Π»Π΅Π΅ Π²Π°ΠΆΠ½ΡΠΌ ΠΌΠ΅ΡΡΠΎΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ Π΄Π»Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ ΠΈ Π·Π°ΠΈΠ½ΠΊΠ»ΡΠ΄Π΅Π½Π½ΠΎΠ³ΠΎ .gitlab-ci.yml β ΠΎΠ±ΡΠ΅Π΅. Π ΡΠΎΡ ΡΠ°ΠΉΠ» Π² ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ ΠΈΠ½ΠΊΠ»ΡΠ΄ ΠΈΠΌΠ΅Π΅Ρ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com