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

рдЕрдм реи рд╡рдЯрд╛ рд░реЛрдЬрдЧрд╛рд░реА рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реМрдВ, рддреА рдордзреНрдпреЗ рдПрдЙрдЯрд╛рдорд╛ рд╣рд╛рдореА рд╕реНрдкрд╖реНрдЯ рд░реВрдкрдорд╛ $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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди