ํฐ์คํ ๋ฆฌ ๋ทฐ
[CI/CD] GitLab CI ํ์ดํ๋ผ์ธ ์์ฑ ์ ์ฃผ์์ฌํญ
Nickolodeon 2022. 12. 21. 00:02๐ ์ฌ๊ฑด์ ์ ๋ง
GitLab ์ผ๋ก ๋ฒ์ ๊ด๋ฆฌ๋ฅผ ํ๋ ํ๋ก์ ํธ์ CI, ์ง์์ ํตํฉ์ ์ ์ฉํ๊ธฐ ์ํด์๋ YAML ํ์ผ .gitlab-ci.yml ์ ํ๋ก์ ํธ ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ณ๊ฒฝ์ด ์ผ์ด๋ ๋๋ง๋ค ์คํ๋ ํ์ดํ๋ผ์ธ์์ ์ฌ์ฉํ ๋ช ๋ น์ด๋ค๋ก ๊ตฌ์ฑ๋ ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํด์ผ ํ๋ค. ๋ด ํ๋ก์ ํธ์์๋ Docker ๋ฅผ ์ด์ฉํด ์ ํ๋ฆฌ์ผ์ด์ ์ Gradle ๋ก ๋น๋ํ์ฌ Docker ์ด๋ฏธ์ง๋ฅผ ๋ง๋ค์ด์ผ ํ๋ค.
์๋์ ๊ฐ์ด YAML ํ์ผ์ ์์ฑํ์๋ค. ๋ ํฌ์งํ ๋ฆฌ์ ์๋ Dockerfile์ ์ฌ์ฉํด์ Docker ์ด๋ฏธ์ง๋ฅผ ์์ฑํ๋ค. ๊ทธ๋ฆฌ๊ณ ๊น๋ฉ์ ์ปจํ ์ด๋ ๋ ์ง์คํธ๋ฆฌ์ ๋ฑ๋กํ๋ค.
stages:
- dockerbuild-push
package:
image: docker:latest
stage: dockerbuild-push
services:
- docker:dind
before_script:
- docker login registry.gitlab.com -u $GITLAB_USER -p $GITLAB_PW
script:
- echo $GITLAB_USER ๋ก ๋ก๊ทธ์ธํ์ต๋๋ค. ์คํฌ๋ฆฝํธ๋ฅผ ์คํํฉ๋๋ค.
- docker build -t registry.gitlab.com/$GITLAB_USER/$PROJECT_NAME .
- docker push registry.gitlab.com/$GITLAB_USER/$PROJECT_NAME
after_script:
- docker logout
ํ์ดํ๋ผ์ธ์์ ์ฌ์ฉ๋๋ $GITLAB_USER, $GITLAB_PW, $PROJECT_NAME ์ ๊ฐ์ ํ๊ฒฝ๋ณ์ ์ง์ ์ ํตํด ๋ถ๋ฌ์ฌ ์ ์๊ฒ ์ค์ ํ๊ณ ์ ํ๋ค.
๐ ์ฌ๊ฑด์ ๋ฐ์
ํ์ง๋ง ํ์ดํ๋ผ์ธ์ด ์คํ๋ ๋ GITLAB_USER ํ๊ฒฝ ๋ณ์๋ฅผ ๋ถ๋ฌ์ค์ง ๋ชปํ๋ ๊ฒ์ ํฐ๋ฏธ๋์์ ๋ฐ๊ฒฌํ๋ค.
๐ ์ฌ๊ฑด์ ํด๊ฒฐ
์ดํ ํ์ฐธ๋์ ํ๊ฒฝ ๋ณ์๋ฅผ ๋ณ๋ ๋ธ๋์น์์ ๋ถ๋ฌ์ฌ ์ ์๋ ์ด์ ์ ๋ํด ์ฐพ์๋ณด์๊ณ , ๊ฒ์ ๊ฒฐ๊ณผ์ ๋๋ถ๋ถ์ ์๋ก ๋ค๋ฅธ ๋ธ๋์น๋ณ๋ก ํ๊ฒฝ ๋ณ์๋ฅผ ์ค์ ํ๋ ๋ฐฉ๋ฒ์ ๊ดํ ๋ด์ฉ์ด์๋ค. ์ถ์ฒ๋ ์๋ ๋ฐํ๋ค.
ํ์ง๋ง ๋์์ด ๋๋ ๊ธ์ ์์๊ณ , CI/CD ์ Settings ์์ ํ๊ฒฝ ๋ณ์ ์ค์ ํญ์ ๊ณ์ํด์ ๋ณด๋ ์ค ํ ์ค์ ๋์ด ๊ฐ๋ค.
๊ทธ๋ ๋ค. ํ๊ฒฝ ๋ณ์๋ฅผ protect ํ๋๋ก ์ฒดํฌํ๋ฉด protected ์ํ์ ๋ธ๋์น์ ํ์ดํ๋ผ์ธ๋ง ํ๊ฒฝ ๋ณ์๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ๋์ด์ ํ์ฌ ์ ์ผํ protected ์ํ์ธ ๋ฉ์ธ ๋ธ๋์น์ ํ์ดํ๋ผ์ธ์์๋ง ์ฌ์ฉํ ์ ์์๊ณ , ๋ฑ๋กํ ๋ชจ๋ ํ๊ฒฝ ๋ณ์๊ฐ protect variable ์ ์ฒดํฌ๊ฐ ๋์ด์์๋ค.
์ฒดํฌ๋ฅผ ํด์ ํ๊ณ ๋๋, ์ ์์ ์ผ๋ก ํ๊ฒฝ ๋ณ์๋ฅผ ๋ถ๋ฌ์ค๋ ๊ฒ์ ํ์ธํ ์ ์์๋ค. ๋ฌผ๋ก ์๋์ฒ๋ผ ๋ค๋ฅธ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.
๋ด์ฉ์ ๋ณด๋, Dockerfile ์ด ๋ฌธ์ ์๋ค. "java" ๋ช ๋ น์ด๋ฅผ ์คํํ๋ ๋ถ๋ถ์ ํ์ธํ๋๋ฐ, ์๋์ ๊ฐ์ด ๋ฐฑ์ฌ๋์ฌ(\) ๊ฐ ๋งค ๋ฌธ์์ด ๋ค์ ๋ถ๋๋ก ์์ฑํ์๋ค. ๊ธฐ์กด ๋ค๋ฅธ ํ๋ก์ ํธ์ Dockerfile ์์๋ ๋ฐฑ์ฌ๋์ฌ๋ฅผ ์ฌ์ฉํ์ง๋ง, ๋ชจ๋ ๋์ด์ฐ๊ธฐ๊ฐ ๋์ด ์์๋ค.
๋์ด์ฐ๊ธฐ ์ฐจ์ด๋ง ์๋ค๊ณ ์๊ฐํ ๋๋ ๋ฌด์์ด ์๋ชป๋์ง ์์ง ๋ชปํ๊ฒ ์ด์ ์ฐ์ ๋ฐฑ์ฌ๋์ฌ๋ฅผ ๋ชจ๋ ์ง์ฐ๊ณ push ํ ํ์ดํ๋ผ์ธ ์คํ ์ฌ๋ถ๋ฅผ ํ์ธํ๋๋ฐ, ์๋์ด ๋์๋ค. ๋์ค์ ์๊ฒ ๋ ์ฌ์ค์ ๊ธฐ์กด ํ๋ก์ ํธ๋ค์ Dockerfile ์๋ "java" ๋ช ๋ น์ด ์ ์๋ ๋ฐฑ์ฌ๋์ฌ(\) escape character ๊ฐ ์์ด์ newline character ๋ฅผ ์ธ์ํ์ง ๋ชปํ๊ฒ ๋ง๋ค์๊ณ , ๋์ ํ๋ก์ ํธ์ Dockerfile ์ "java" ์ ์ newline character ๊ฐ ์๋ ๊ฒ์ผ๋ก ์ธ์ํ๋๋ก ์์ฑ๋์ด ์์๋ค๋ ์ฌ์ค์ด์๋ค.
์ดํ์ ํ ๊ฐ์ง ๋ ์๋ฌ๊ฐ ๋ฐ์ํ๋๋ฐ, ๋๋๊ฒ๋ ์๋์ ๊ฐ์ด COPY --from= ์ดํ์ ๋์ด์ฐ๊ธฐ์ธ whitespace ๊ฐ ์์ด์ ๋ฐ์ํ ์๋ฌ์๋ค. Dockerfile ์ ๋์ด์ฐ๊ธฐ๋ ์ค๋ฐ๊ฟ ํ๋์๋ ์๋ฏผํ๋ค๋ ์ฌ์ค์ ๋ช ์ฌํ์ ๐.
๊ฒฐ๋ก
์๋ฌ๊ฐ ๋ฐ์๋ ์ดํ ํด๊ฒฐ ์๊ฐ์ด ์ง์ฐ๋ ๊ฐ์ฅ ํฐ ์์ธ์ ๊ผผ๊ผผํ๊ฒ ๋ด๊ฐ ํ ์์ ๋ค์ ์ธ๋ถ์ ์ธ ์ฌํญ๋ค์ ์ดํผ์ง ์์ ๊ฒ์ด์๋ค. ์ฒ์์ ๋ชจ๋ ์ธ์ธํ๊ฒ ์ ๊ฒฝ ์ฐ๋ ๊ฒ์ด Best Practice ์ด๊ฒ ์ง๋ง, ์๋ฌ๊ฐ ๋ฐ์ํ ์ดํ์ ์๊ฐ์ ๋๋ฆด ์๋ ์์ผ๋, ์ง๋ ์ํฉ๋ค์ ๋์ง์ด๋ณด๋ฉด์ ๋์น ๊ฒ์ด ์๋์ง ์ดํด๋ณด๋ ์ต๊ด์ ๊ฐ์ ธ์ผ๊ฒ ๋ค.
์ถ์ฒ
https://forum.gitlab.com/t/use-variables-per-branch-in-gitlab/43685/2
'Infrastructure' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[CI/CD] GitLab ์ ํ์ฉํ CI/CD ์ ์ฉํ๊ธฐ (0) | 2023.01.19 |
---|---|
[Infrastructure] ๊ฐ์ ์๋ฒ ํธ์คํ ์ด๋? (0) | 2022.12.17 |
[DevOps] CI ์ CD (0) | 2022.12.09 |
[์ํคํ ์ฒ] ๋ชจ๋ฐ์ผ ์ฑ ์ํคํ ์ฒ ์ค๊ณ ๋ฐฉ๋ฒ (0) | 2022.12.02 |
[Gradle] build scan (0) | 2022.11.30 |
- Total
- Today
- Yesterday
- spring
- ํ๋ก๊ทธ๋๋จธ์ค
- docker
- ์ญ์ง๋ ฌํ
- @RequestBody
- ์ง์ฐ ๋ก๋ฉ
- ์๊ณ ๋ฆฌ์ฆ
- ์ค์๊ฐ๋ฐ์ดํฐ
- DTO
- Spring Boot
- Java Data Types
- ์ฝํ
- JPA
- JOIN FETCH
- gitlab
- JPQL
- ์ธ์ฆ/์ธ๊ฐ
- N+1
- DeSerialization
- FCM
- ๊ธฐ์ง๊ตญ ์ค์น
- LazyInitializationException
- ๊น๋ฉ
- Jackson
- json web token
- ๊ฐ์ ์๋ฒ
- ๋์ปค
- Firebase
- google cloud
- ci/cd
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |