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

рдЬрд░ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓ рдм рдЧрдЯрд╛рдд рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЗрд▓реЗ рдирд╕рддреЗ, рддрд░ рдЖрдкрдг рдореВрд▓реНрдп 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

рд░рд┐рдХреНрдд рдореВрд▓реНрдпрд╛рд╕рд╣ рд╡рд╛рд░рд╕рд╛ [рд╕реНрд░реЛрдд]

рд░рд┐рдХреНрдд рдореВрд▓реНрдп рджреЗрдЦреАрд▓ рдПрдХ рдореВрд▓реНрдп рдЖрд╣реЗ
рд░рд┐рдХреНрдд рдореВрд▓реНрдп рд╢реВрдиреНрдп рдирд╛рд╣реА

рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕рд╕рд╣ рдЧрдЯ

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

рд╕рдорд╛рд╡реЗрд╢ рдЖрдгрд┐ рдЧрдЯрд╛рдВрд╕рд╣ рд╡рд╛рд░рд╕рд╛ [рд╕реНрд░реЛрдд]

рдпреЗрдереЗ рдЖрдкрдг рдкреНрд░рдХрд▓реНрдк-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

рд╕рдорд╛рд╡реЗрд╢ рд╕рд╣ рд╡рд╛рд░рд╕рд╛ [рд╕реНрд░реЛрдд]

рдпреЗрдереЗ рдЖрдкрдг рдкреНрд░рдХрд▓реНрдк-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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛