๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ“š Today _I_Learned/GitLab

Gitlab์„ ํ™œ์šฉํ•œ CI, CD ์ ์šฉ

๐Ÿ“Œ ์ž๋™๋ฐฐํฌ ์Šคํฌ๋ฆฝํŠธ ๋นŒ๋“œ

์ž๋™ ๋นŒ๋“œ๊ฐ€ ์™œ ํ•„์š”ํ•œ๊ฐ€?

์ง€๊ธˆ๊นŒ์ง€ ์ˆ˜์ • ์‚ฌํ•ญ์ด ์žˆ์œผ๋ฉด ์ˆ˜์ •, ์ถ”๊ฐ€ํ•˜๊ณ  gradle ๋นŒ๋“œ ์ง„ํ–‰ํ•˜๋Š” ๊ณผ์ •์„ ํ†ตํ–ˆ๋Š”๋ฐ ๊ทธ๊ฒƒ์„ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ†ตํ•ด GitLab Merge๊ฐ€ ์ง„ํ–‰๋˜๋ฉด ๋„์ปค์— ์ž๋™์œผ๋กœ ๋กœ๊ทธ์ธ, ๋นŒ๋“œ, ํ‘ธ์‹œ๊นŒ์ง€ ์ง„ํ–‰์ด ๋˜๋„๋ก ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž‘์„ฑํ•ด์„œ pipeline์— ์ž‘์„ฑํ•ด ๋‘”๋‹ค.

1. Settings - CI/CD ์„ธํŒ…ํ•˜๊ธฐ

  • settings > CI/CD


  • ์•„๋ž˜ ์Šคํฌ๋ฆฝํŠธ์—์„œ ์‚ฌ์šฉ๋  ๋ณ€์ˆซ๊ฐ’์„ ๋ฏธ๋ฆฌ ์„ค์ •
  • ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•
    GITLAB_USER๋Š” @kahyeonlee์—์„œ @ ์ œ์™ธํ•˜๊ณ  ์ž‘์„ฑ
    GITLAB_password๋Š” gitlab ๋กœ๊ทธ์ธ ์‹œ ๋น„๋ฐ€๋ฒˆํ˜ธ ์‚ฌ์šฉ (์˜๋ฌธ+์ˆซ์ž๊ฐ€ ์ธ์‹ ์ž˜๋จ)
    PROJECT_NAME๋Š” ์ด ํ”„๋กœ์ ํŠธ์˜ ์ด๋ฆ„

๐Ÿ’Š์ฃผ์˜์‚ฌํ•ญ
Mask variable์„ ์ฒดํฌํ•ด์•ผ์ง€ ๋น„๋ฐ€๋ฒˆํ˜ธ ๊ฐ™์€ ์ •๋ณด๊ฐ€ ์‹คํ–‰๋  ๋•Œ ์œ ์ถœ์ด ์•ˆ๋œ๋‹ค.

 

 


2. ์ž๋™ ๋ฐฐํฌ ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑ

  • CI/CD > Editor ์ด๋™
  • ํŒŒ์ผ ๋‚ด์— Dockerfile ํฌํ•จ๋˜์–ด ์žˆ์„ ๋•Œ ์‚ฌ์šฉ
# stage → ๋‹จ๊ณ„

stages:
  - dockerbuild-push

package:
  only:
    - main
  image: docker:latest
  stage: dockerbuild-push
  services:
    - docker:dind
  before_script:
    - docker login registry.gitlab.com -u $GITLAB_USER -p $GITLAB_PASSWORD
  script:
    - docker build -t registry.gitlab.com/$GITLAB_USER/$PROJECT_NAME .
    - docker push registry.gitlab.com/$GITLAB_USER/$PROJECT_NAME
  after_script:
    - docker logout

 

  • ์œ„์˜ ์Šคํฌ๋ฆฝํŠธ ๋ณต์‚ฌํ•ด์„œ ๋ถ™์—ฌ ๋„ฃ๊ธฐ
  • CI/CD > Pipelines ์ด๋™
  • pass ๋˜์—ˆ๋Š”์ง€ ํ™•์ธ

3. container Registry ํ™•์ธํ•˜๊ธฐ

 


๐Ÿ“Œ Docker๋กœ ๋ฐฐํฌ

1. docker pull < Registry ์ฃผ์†Œ>

  • Registry ์ฃผ์†Œํ™•์ธ
  • docker pull < Registry ์ฃผ์†Œ>
  • docker images๋กœ ํ™•์ธ

2. docker run

  • docker run ์‹คํ–‰
    docker run -p 8080:8080 --name <์ •ํ•ด์ค„ ์ด๋ฆ„>  -e SPRING_DATASOURCE_URL=jdbc:mysql://<DB์˜ ec2 ์ฃผ์†Œ>:3306/<์Šคํ‚ค๋งˆ๋ช…> -e SPRING_DATASOURCE_PASSWORD=<๋น„๋ฐ€๋ฒˆํ˜ธ> -d <์ด๋ฏธ์ง€๋ช…>
  • ๊ฒฐ๊ณผ

3. docker logs < container id>

  • ์ด๋ ‡๊ฒŒ ๋‚˜์˜ค๋ฉด ์„ฑ๊ณต, url๋กœ ๋ฐฐํฌํ™•์ธํ•˜๊ธฐ