ื•ื•ื™ ื™ืจืฉืขื ืขืŸ Gitlab-CI ืกื•ื•ื™ื•ื•ืข ื•ื•ืขืจื™ืึทื‘ืึทืœื–?

ื•ื•ืขืจื™ืึทื‘ืึทืœื– ืื™ืŸ Gitlab ืงืขื ืขืŸ ื–ื™ื™ืŸ ืฉื˜ืขืœืŸ ืื™ืŸ ืขื˜ืœืขื›ืข ืขืจื˜ืขืจ:

  1. ืื™ืŸ ื’ืจื•ืคึผืข ืกืขื˜ื˜ื™ื ื’ืก
  2. ืื™ืŸ ื“ื™ ืคึผืจื•ื™ืขืงื˜ ืกืขื˜ื˜ื™ื ื’ืก
  3. ื™ืŸ .ื’ื™ื˜ืœืึทื‘-ืกื™.ื™ืžืœ

ืื™ืŸ ื“ืขื ืคืึทืœ, ื•ื•ืขืจื™ืึทื‘ืึทืœื– ืื™ืŸ ื“ื™ ื’ืจื•ืคึผืข ืื•ืŸ ืคึผืจื•ื™ืขืงื˜ ืกืขื˜ื˜ื™ื ื’ืก ืงืขื ืขืŸ ื–ื™ื™ืŸ ืฉื˜ืขืœืŸ ื•ื•ื™ "ื˜ืขืงืข" ืึธื“ืขืจ "ืจืขื’ื•ืœืขืจ ื‘ื™ื™ึทื˜ืขื•ื•ื“ื™ืง" ืื•ืŸ ื˜ืฉืขืง ื“ื™ "ืคึผืจืึธื˜ืขืงื˜ืขื“" ืื•ืŸ "ืžืึทืกืงืข" ื˜ืฉืขืงืงื‘ืึธืงืกืขืก.

ื•ื•ื™ ื™ืจืฉืขื ืขืŸ Gitlab-CI ืกื•ื•ื™ื•ื•ืข ื•ื•ืขืจื™ืึทื‘ืึทืœื–?

ืœืึธืžื™ืจ ืึธื ื”ื™ื™ื‘ืŸ ืžื™ื˜ ืคึผืฉื•ื˜ ื™ืจื•ืฉื” ืื•ืŸ ืขืก ื•ื•ืขื˜ ื‘ื™ืกืœืขื›ื•ื•ื™ื™ึทื– ื•ื•ืขืจืŸ ืžืขืจ ืงืึธืžืคึผืœื™ืฆื™ืจื˜.

ื“ื™ ืœืขืฆื˜ ืจืฉื™ืžื” ืคื•ืŸ ื‘ื™ืœื›ืขืจืงื™ื™ึทื˜ ืœืขื•ื•ืขืœืก ืงืขื ืขืŸ ื–ื™ื™ืŸ ื’ืขืคึฟื•ื ืขืŸ ืื™ืŸ ื“ื™ ืกื•ืฃ ืคื•ืŸ ื“ืขื ื“ืึธืงื•ืžืขื ื˜.

ื™ืจื•ืฉื” ืžื™ื˜ ื’ืจื•ืคึผืขืก [ืงื•ื•ืขืœืขืจ]

ื•ื•ืขืจื™ืึทื‘ืึทืœื– ืคื•ืŸ ื’ืจื•ืคึผืขืก ื–ืขื ืขืŸ ื™ื ื›ืขืจืึทื˜ื™ื“, ืžื™ื˜ ื“ื™ ื”ืขืจืฉืŸ ืึทื– ื“ื™ ื ืขืขื ื˜ืขืจ ื“ื™ ื’ืจื•ืคึผืข ืื™ื– ืœื™ื’ืŸ ืฆื• ื“ื™ ืคึผืจื•ื™ืขืงื˜, ื“ื™ ืžืขืจ ื•ื•ื™ื›ื˜ื™ืง ืื™ื– ื–ื™ื™ึทืŸ ื•ื•ืขืจื˜.

ื’ืจื•ืคึผืขืก ืžื™ื˜ ื•ื•ืขืจื™ืึทื‘ืึทืœื–

ื•ื•ื™ ื™ืจืฉืขื ืขืŸ Gitlab-CI ืกื•ื•ื™ื•ื•ืข ื•ื•ืขืจื™ืึทื‘ืึทืœื–?

.ื’ื™ื˜ืœืื‘-ืกื™.ื™ืžืœ

image: busybox:latest
variables:
  GIT_STRATEGY: none

echo:
  stage: test
  script:
    - echo $MSG

ืจืขืจื  - ืœื™ื ื™ืข ืจืขื–ื•ืœื˜ืึทื˜

$ echo $MSG
B

ืื•ื™ื‘ ื“ื™ ื‘ื™ื™ึทื˜ืขื•ื•ื“ื™ืง ืื™ื– ื ื™ืฉื˜ ืกืคึผืขืกื™ืคื™ืขื“ ืื™ืŸ ื’ืจื•ืคึผืข ื‘, ืžื™ืจ ื•ื•ืึธืœื˜ ื”ืึธื‘ืŸ ื’ืขื–ืขืŸ ื“ื™ ื•ื•ืขืจื˜ ื.

ื™ื ื›ืขืจืึทื˜ื™ื“ ื•ื•ืขืจื™ืึทื‘ืึทืœื– ื™ืŸ .ื’ื™ื˜ืœืึทื‘-ืกื™.ื™ืžืœ [ืงื•ื•ืขืœืขืจ]

ืึทืœืฅ ืื™ื– ื’ืึทื ืฅ ืคึผืฉื•ื˜ ื“ืึธ: ืื™ืจ ืงืขื ืขืŸ ืฉื˜ืขืœืŸ ืึท ื•ื•ืขืจื™ืึทื‘ืึทืœ ื’ืœืึธื•ื‘ืึทืœื™, ืึธื“ืขืจ ืื™ืจ ืงืขื ืขืŸ ืึธื•ื•ื•ืขืจืจื™ื™ื˜ ืขืก ืื™ืŸ ื“ืขืจ ืึทืจื‘ืขื˜.

ื’ืจื•ืคึผืขืก ืžื™ื˜ ื•ื•ืขืจื™ืึทื‘ืึทืœื–

ื•ื•ื™ ื™ืจืฉืขื ืขืŸ Gitlab-CI ืกื•ื•ื™ื•ื•ืข ื•ื•ืขืจื™ืึทื‘ืึทืœื–?

.ื’ื™ื˜ืœืื‘-ืกื™.ื™ืžืœ

ืœืึธืžื™ืจ ืื™ืฆื˜ ืฉืึทืคึฟืŸ 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

ื™ืจื•ืฉื” ืžื™ื˜ ื’ืจื•ืคึผืขืก ืื•ืŸ ื™ืŸ .ื’ื™ื˜ืœืึทื‘-ืกื™.ื™ืžืœ [ืงื•ื•ืขืœืขืจ]

ื–ืืœ ืก ืคึผืจื•ื‘ื™ืจืŸ ืฆื• ืคืึทืจื‘ื™ื ื“ืŸ ื“ื™ ืคืจื™ืขืจื“ื™ืงืข 2 ื‘ื™ื™ืฉืคื™ืœืŸ. ื’ืจื•ืคืข ื•ื•ืขืจื™ืึทื‘ืึทืœื– ื ืขืžืขืŸ ื‘ื™ืœื›ืขืจืงื™ื™ึทื˜ ืื™ื‘ืขืจ ื•ื•ืขืจื™ืึทื‘ืึทืœื– ื™ืŸ .gitlab-ci.yml.

ื’ืจื•ืคึผืขืก ืžื™ื˜ ื•ื•ืขืจื™ืึทื‘ืึทืœื–

ื•ื•ื™ ื™ืจืฉืขื ืขืŸ Gitlab-CI ืกื•ื•ื™ื•ื•ืข ื•ื•ืขืจื™ืึทื‘ืึทืœื–?

.ื’ื™ื˜ืœืื‘-ืกื™.ื™ืžืœ

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 ืกื•ื•ื™ื•ื•ืข ื•ื•ืขืจื™ืึทื‘ืึทืœื–?

.ื’ื™ื˜ืœืื‘-ืกื™.ื™ืžืœ

ื–ืืœ ืก ื ื•ืฆืŸ ื“ื™ ื˜ืขืงืข ืคื•ืŸ โ€‹โ€‹ื“ื™ ืคืจื™ืขืจื“ื™ืงืข ื‘ื™ื™ึทืฉืคึผื™ืœ. ื“ืึธ ื•ื•ื™ื“ืขืจ ืขืก ื–ืขื ืขืŸ ื•ื•ืขืจื™ืึทื‘ืึทืœื– ืกืคึผืขืกื™ืคื™ืขื“ ื™ืŸ .ื’ื™ื˜ืœืึทื‘-ืกื™.ื™ืžืœ, ืึธื‘ืขืจ ื•ื•ืขืจื™ืึทื‘ืึทืœื– ื™ืŸ ื’ืจื•ืคึผืขืก ื ืึธืš ื ืขืžืขืŸ ืคึผืจื™ื™ื“ืึทื ืก ืื™ื‘ืขืจ ื–ื™ื™.

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 ืกื•ื•ื™ื•ื•ืข ื•ื•ืขืจื™ืึทื‘ืึทืœื–?

.ื’ื™ื˜ืœืื‘-ืกื™.ื™ืžืœ

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 ืกื•ื•ื™ื•ื•ืข ื•ื•ืขืจื™ืึทื‘ืึทืœื–?

.ื’ื™ื˜ืœืื‘-ืกื™.ื™ืžืœ

ืื•ืŸ ืฉื˜ืขืœืŸ ื“ื™ ื•ื•ืขืจื™ืึทื‘ืึทืœ ื’ืœืึธื•ื‘ืึทืœื™ ืื™ืŸ .ื’ื™ื˜ืœืึทื‘-ืกื™.ื™ืžืœ

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 ืกื•ื•ื™ื•ื•ืข ื•ื•ืขืจื™ืึทื‘ืึทืœื–?

.ื’ื™ื˜ืœืื‘-ืกื™.ื™ืžืœ

ื“ื™ ื–ืขืœื‘ืข ื•ื•ื™ ืื™ืŸ ื“ื™ ืคืจื™ืขืจื“ื™ืงืข ื‘ื™ื™ึทืฉืคึผื™ืœ

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. ื’ืœืื‘ืืœืข ื•ื•ืขืจื™ืึทื‘ืึทืœื– ื™ืŸ .ื’ื™ื˜ืœืึทื‘-ืกื™.ื™ืžืœ
  5. ื’ืœืื‘ืืœืข ื•ื•ืขืจื™ืึทื‘ืึทืœื– ื™ืŸ ืึทืจื™ื™ึทื ื’ืขืจืขื›ื ื˜ ื˜ืขืงืขืก

ืกืึธืฃ

ื“ื™ ืžืขืจืกื˜ ื ื™ื˜ ืงืœืึธืจ ื•ื•ื™ ื“ืขืจ ื˜ืึธื’ ืคื•ื ื˜ ืื™ื– ืึทื– ื“ื™ ื”ืขืจืฉืŸ "ื“ื™ ื ืขืขื ื˜ืขืจ ืึท ื‘ื™ื™ึทื˜ืขื•ื•ื“ื™ืง ืื™ื– ืฆื• ื“ื™ ืงืึธื“, ื“ื™ ืžืขืจ ื•ื•ื™ื›ื˜ื™ืง ืขืก ืื™ื–" ืึทืจื‘ืขื˜ ืขืจืฉื˜ืขืจ ืคึฟืึทืจ ื’ืจื•ืคึผืขืก, ืื•ืŸ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ื”ืขืจืฉืŸ ืคึฟืึทืจ ื•ื•ืขืจื™ืึทื‘ืึทืœื– ื™ืŸ .gitlab-ci.yml, ืึธื‘ืขืจ ื‘ืœื•ื™ื– ืื•ื ื˜ืขืจ ื“ื™ ืฆื•ืฉื˜ืึทื ื“ ืึทื– ื“ื™ ื•ื•ืขืจื™ืึทื‘ืึทืœื– ืื™ืŸ ื“ื™ ื’ืจื•ืคึผืขืก ื–ืขื ืขืŸ ื ื™ืฉื˜ ืกืคึผืขืกื™ืคื™ืขื“.
ื•ื•ื™ื™ึทื˜ืขืจ, ืึท ื•ื•ื™ื›ื˜ื™ืง ืคื•ื ื˜ ืื™ื– ืฆื• ืคึฟืึทืจืฉื˜ื™ื™ืŸ ืึทื– ื“ื™ ื’ืœืื‘ืืœืข ืคึผืœืึทืฅ ืคึฟืึทืจ ื“ื™ ื”ื•ื™ืคึผื˜ ืื•ืŸ ืึทืจื™ื™ึทื ื’ืขืจืขื›ื ื˜ .gitlab-ci.yml ืื™ื– ืคึผืจืึธืกื˜. ืื•ืŸ ื“ืขืจ ื˜ืขืงืข ืื™ืŸ ื•ื•ืึธืก ื“ื™ ื™ื ืงืœื•ื–ืฉืึทืŸ ืึทืงืขืจื– ื”ืื˜ ื‘ื™ืœื›ืขืจืงื™ื™ึทื˜.

ืžืงื•ืจ: www.habr.com

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’