๋ชฉ์ฐจ
์ด๋ฒ ํฌ์คํ
์ Gitlab Pipeline(CI / CD)๋ฅผ ๊ตฌ์ถํ๋ ๋ฐฉ๋ฒ์๋ํด ์์๋ณด๊ฒ ๋ค.
๋ค์ด๊ฐ๊ธฐ์ ์์ ๊ธฐ๋ณธ์ ์ธ ๊ฐ๋
์ ๋ฆฌ๋ฅผ ํด๋ณด์.
1. CI/CD ํ์ดํ๋ผ์ธ์ ๋ฌด์์ผ๊น?
CI (Continuous Integration) ์ง์์ ํตํฉ - Application ์ฝ๋์ ๋ณ๊ฒฝ ์ฌํญ์ด ์ ๊ธฐ์ ์ผ๋ก ๋น๋ ๋ฐ ํ
์คํธ๋ฅผ ๊ฑฐ์ณ ๊ณต์ Repository์ ๋ณํฉ๋๋ ๊ณผ์ ์ ์๋ํ ํ๋ก์ธ์ค
CD (Continuous Delivery, Continuous Deploayment) ์ง์์ ์ ๊ณต/๋ฐฐํฌ - ๊ฐ๋ฐ์์ ๋ณ๊ฒฝ ์ฌํญ์
Repository์์ Production ํ๊ฒฝ๊น์ง ๋ฐฐํฌํ๋ ๊ณผ์ ์ ์๋ํ ํ๋ก์ธ์ค
์์ ์๋ํ ํ๋ก์ธ์ค ๊ณผ์ ์ โCI/CD ํ์ดํ๋ผ์ธโ์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
2. Gitlab-Runner ์ค์น ๋ฐ ๋ฑ๋ก
# Download $ curl -LJO "https://gitlab-runner-downloads.s3.amazonaws.com/latest/deb/gitlab-runner_amd64.deb" # Install $ sudo dpkg -i gitlab-runner_amd64.deb
ํจํค์ง Download ๋ฐ Install ๋ช
๋ น์ด๋ฅผ ํตํด gitlab-runner๋ฅผ ์ค์นํ๋ค.
์ ์์ ์ผ๋ก ์ค์น๋์๋ค๋ฉด ์๋์ ๊ฐ์ด ํ์ธํ ์ ์๋ค.
$ gitlab-runner --version Version: 16.3.0 Git revision: 8ec04662 Git branch: 16-3-stable GO version: go1.20.5 Built: 2023-08-20T17:57:26+0000 OS/Arch: linux/amd64
โป ๋ง์ฝ Git์ ์ค์นํ์ง ์์๋ค๋ฉด Git๋ถํฐ ์ค์นํ์.
gitlab-runner๋ฅผ ์ค์นํ์๋ค๋ฉด, Pipeline์ ์ฐ๊ฒฐํ GitLab ํ๋ก์ ํธ์ gitlab-runner๋ฅผ ๋ฑ๋ก ์์ผ์ฃผ์ด์ผ ํ๋ค.
โป ์ด ๊ณผ์ ์ ํ๋ก์ ํธ์ Maintainer ๋๋ Owner ๊ถํ์ด ์๋ ๊ณ์ ์ผ๋ก ์งํ ๊ฐ๋ฅํ๋ค.
Settings - CI/CD์ Runners ์นดํ
๊ณ ๋ฆฌ๋ฅผ ํด๋ฆญํ๋ฉด ์์ ๊ฐ์ ํ๋ฉด์ด ๋์จ๋ค.
์ฌ๊ธฐ์ runner๋ฅผ ๋ฑ๋กํ๊ธฐ ์ํด ํ์ํ โ GitLab URL ๊ณผ โก Registration token์ ํ์ธํ๊ณ gitlab-runner๊ฐ ์ค์น๋ ์๋ฒ์์ ๋ฑ๋ก์ ์งํํ๋ฉด ๋๋ค.
$ sudo gitlab-runner register Runtime platform arch=amd64 os=linux pid=9412 revision=8ec04662 version=16.3.0 Running in system-mode. Enter the GitLab instance URL (for example, https://gitlab.com/): {GITLAB_URL} Enter the registration token: {REGISTRATION_TOKEN} Enter a description for the runner: {DESCRIPTION} Enter tags for the runner (comma-separated): {TAG} Enter optional maintenance note for the runner: {NOTE} Enter an executor: custom, shell, instance, virtualbox, docker-autoscaler, docker+machine, kubernetes, docker, docker-windows, parallels, ssh: {EXECUTOR}
๋ฑ๋ก์ด ์๋ฃ๋์์ผ๋ฉด Runners ์นดํ
๊ณ ๋ฆฌ์ ์ด์๊ฐ์ด Runner๊ฐ ๋ฑ๋ก๋๋ค.
์ฌ๊ธฐ๊น์ง๊ฐ gitlab-runner ์ค์น ๋ฐ ๋ฑ๋ก ๊ณผ์ ์ด๋ค.
3. gitlab-ci.yml ์์ฑ
์ด์ Gitlab CI/CD ํ์ดํ๋ผ์ธ ์ ๋ํ ์ธ๋ถ ์ง์นจ์ ๊ตฌ์ฑํ๋ .gitlab-ci.yml ์์ฑ์ด ๋จ์๋ค.
stages: - build - deploy build: stage: build script: - bash mvnw clean install - echo "Successfully build" tags: - spring artifacts: paths: - target/*.jar expire_in: 10 min deploy: stage: deploy needs: - build script: - at now < start.sh - echo "Successfully deploy" tags: - spring
์์ ๊ฐ์ด stages ํค์๋๋ฅผ ์ด์ฉํ์ฌ ํ์ดํ๋ผ์ธ์ ๋จ๊ณ, ์ด๋ฆ, ์์๋ฅผ ์ ํ๊ณ
ํด๋น ๋จ๊ณ์ ๋ง๊ฒ ์คํํ script๋ฅผ ์ ์ํด์ฃผ๋ฉด ๋๋ค.
์ฌ๊ธฐ์ Java Spring, Maven์ผ๋ก ๊ตฌ์ฑ๋ Web Application์ ์ฌ๋ฆฌ๊ธฐ ์ํด
build ๋จ๊ณ๋ฅผ ํตํด jar๋ฅผ ์์ฑํ๊ณ deploy ๋จ๊ณ์์ ์์ฑ๋ jar๋ฅผ ๋ฐฐํฌํ๋ shell script๋ฅผ ์ด์ฉํ์๋ค.
์ข ๋ ๋ค์ํ ํค์๋๋ฅผ ํ์ธํ๊ณ ์ถ๋ค๋ฉด Gitlab_Docs ์์ ํ์ธํ ์ ์๋ค.
์ฌ๊ธฐ๊น์ง ์ค์ ํ์๋ค๋ฉด ๊ฐ๋ฐ์๊ฐ ์ฝ๋๋ฅผ ์์ ํ๊ณ Push๋ฅผ ํ ๋๋ง๋ค ์๋์ ๊ฐ์ ํ์ดํ๋ผ์ธ์ด
๊ตฌ์ฑ๋์ด .gitlab-ci.yml ์์ ์ค์ ํ Job์ ์ํํ๋ค.
์ฑ๊ณต์ ์ผ๋ก Job์ด ์ํ๋์์ผ๋ฉด ์์ ํ ์ฝ๋๊ฐ ์๋ฒ์ ๋ฐ์๋์๋์ง ํ์ธํ๋๊ฒ ์์ง๋ง์.
๋ง๋ฌด๋ฆฌ
CI/CD ํ์ดํ๋ผ์ธ์ ์ง์ ํด๋ณด๋ฉด์ ์ฌ์ฉํด๋ณด์ง ๋ชปํ gitlab-ci.yml ํค์๋๋ถํฐ Docker์ ๊ฐ์ ์ปจํ
์ด๋ ํ๊ฒฝ ๋ฐ ํด๋ผ์ฐ๋ ํ๊ฒฝ์์์ ํ์ดํ๋ผ์ธ์ ํ์ฉํ๋ฉด ์ข ๋ ๋ฅ๋์ ์ธ ๊ตฌ์ฑ์ด ๊ฐ๋ฅํ ๊ฒ์ด๋ค.
์ฐธ๊ณ
Share article