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 เปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™ 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 เปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™ 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 เปเบกเปˆเบ™เบ—เบปเปˆเบงเป„เบ›. เปเบฅเบฐเป„เบŸเบฅเปŒเบ—เบตเปˆเบเบฒเบ™เบฅเบงเบกเป€เบเบตเบ”เบ‚เบถเป‰เบ™เบกเบตเบšเบนเบฅเบดเบกเบฐเบชเบดเบ”.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™