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

рдпрджрд┐ рд╕рдореВрд╣ рдмреА рдореЗрдВ рдЪрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛрддрд╛, рддреЛ рд╣рдореЗрдВ рдорд╛рди рдП рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ред

.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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ