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 ๋‚ด๋ถ€ ์ƒ์† [์ถœ์ฒ˜]

์•ž์˜ ๋‘ ๊ฐ€์ง€ ์˜ˆ๋ฅผ ๊ฒฐํ•ฉํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฃน ๋ณ€์ˆ˜๋Š” .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

ํฌํ•จ ๋ฐ ๊ทธ๋ฃน์„ ํ†ตํ•œ ์ƒ์† [์ถœ์ฒ˜]

์—ฌ๊ธฐ์„œ๋Š” ํ”„๋กœ์ ํŠธ-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์˜ ์ „์—ญ ๊ณต๊ฐ„์ด ๊ณตํ†ต์ ์ด๋ผ๋Š” ์ ์„ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํฌํ•จ์ด ๋ฐœ์ƒํ•œ ํŒŒ์ผ์ด ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€