ื›ื™ืฆื“ 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
  • ื”ื“ ืขื 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
  • ื”ื“ ืขื 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
  • ื”ื“ ืขื 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
  • ื”ื“ ืขื vars:
    $ echo $MSG
    Job succeeded

ื™ืจื•ืฉื” ืขื include ื•ืงื‘ื•ืฆื•ืช [ืžืงื•ืจื•ืช]

ื›ืืŸ ื ื ืกื” ืœื›ืœื•ืœ ืืช ืคืจื•ื™ืงื˜-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
  • ื”ื“ ืขื vars:
    $ echo $MSG
    B
    Job succeeded

ื™ืจื•ืฉื” ืขื include [ืžืงื•ืจื•ืช]

ื›ืืŸ ื ื ืกื” ืœื›ืœื•ืœ ืืช ืคืจื•ื™ืงื˜-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
  • ื”ื“ ืขื 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

ื”ื•ืกืคืช ืชื’ื•ื‘ื”