| ์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
|---|---|---|---|---|---|---|
| 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 | 29 | 30 | 31 |
- ์ฝํ๋ฆฐ ์คํ
- ํ์ด์ฌ
- ์ฝํ๋ฆฐ ์๊ณ ๋ฆฌ์ฆ
- ํ๋ก๊ทธ๋๋จธ์ค
- vue3
- js
- Java
- Vue.js
- ํ์ฝํ
- ์๊ณ ๋ฆฌ์ฆ
- ์ฝํ๋ฆฐ
- java ์ฝ๋ฉ ํ ์คํธ
- ๋ฐฑ์ค
- GIT
- ์๋ฐ
- Kotlin
- ๋ฏธ๊ตญ๋ฐฐ๋น์ฃผํฌ์
- linux
- ์๋ฐ์คํฌ๋ฆฝํธ
- ๋ฐฑ์ค ์ฝํ๋ฆฐ
- pnpm
- ์๋ฐ ์๊ณ ๋ฆฌ์ฆ
- python
- kotlin algorithm
- Swift
- CI/CD
- ๋ฏธ๊ตญ์ฃผ์
- kotlin ์๊ณ ๋ฆฌ์ฆ
- javascript
- ๋ฐฐ๋น์ฃผ
- Today
- Total
๐ ์ ์ด์ ๋จธ๋ฆฟ์์ผ๋ก
[Linux] CI/CD ๊ฐ์ : Jenkins๋ฅผ ํ์ฉํ ์๋ํ ๋ฐฐํฌ ์์คํ ๊ตฌ์ถ(nonub) ๋ณธ๋ฌธ
[Linux] CI/CD ๊ฐ์ : Jenkins๋ฅผ ํ์ฉํ ์๋ํ ๋ฐฐํฌ ์์คํ ๊ตฌ์ถ(nonub)
Space_Jin 2025. 1. 29. 13:14โ ๋ฐฐ๊ฒฝ
ํ์ฌ์์ ์ฌ์ฉํ๋ ๊ธฐ์กด CI/CD ์์คํ
์์๋ Jenkins๋ฅผ ํตํด ๋น๋๋ ํ์ผ์ด ์๋ฒ๋ก ์ฎ๊ฒจ์ง๋ ๊ตฌ์กฐ๊ฐ ์ด๋ฏธ ๊ตฌํ๋์ด ์์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ฐฐํฌ ๊ณผ์ ์ ์ฌ์ ํ ์์์
์ผ๋ก ์งํ๋์๊ณ , ๊ฐ๋ฐ์๊ฐ ์ง์ ์๋ฒ์ ์๊ฒฉ ์ ์ํ์ฌ ๊ฐ ๋๋ฉ์ธ์ ๋ง๊ฒ ๋ฐฐํฌํ๋ ๋ฒ๊ฑฐ๋ก์ด ๊ณผ์ ์ ๊ฑฐ์ณ์ผ ํ์ต๋๋ค. ์ด๋ฌํ ์ํฉ์ ๋ถํธํจ ๋ฟ๋ง ์๋๋ผ ๊ฐ๋ฐ์๋ค์ ์์ฐ์ฑ์ ์ ํ์ํจ๋ค๊ณ ์๊ฐํ์ฌ ๊ฐ์ ์ ํ๊ธฐ๋ก ๊ฒฐ์ฌํ์ต๋๋ค.
โ ๊ฐ์ ๋ชฉํ
์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด, ์ ๋ CI/CD ํ๋ก์ธ์ค๋ฅผ ์๋ํํ์ฌ ๋ฐฐํฌ ๊ณผ์ ์์์ ์ธ์ ์ค๋ฅ๋ฅผ ์ค์ด๊ณ , ์
๋ฌด ํจ์จ์ฑ์ ๋์ด๋ ๊ฒ์ ๋ชฉํ๋ก ํ์์ต๋๋ค. ์ด๋ฅผ ์ํด Jenkins๋ฅผ ํตํด ์ ๋ฌ๋๋ ์์ถ๋ ๋น๋ํ์ผ์ ํ๊ฒ์๋ฒ์ธ linux์ nonub ์ด์ฉํ ์๋ ๋ฐฐํฌ ์คํฌ๋ฆฝํธ ์คํ์ํค๋ ์์คํ
์ ๋ง๋ค๊ธฐ๋ก ํ์ต๋๋ค.
โ ๊ตฌํ ๊ณผ์
1. ํ๋๊ทธ(flag) ํ์ผ ๋ง๋ค๊ธฐ
๋น๋๋ ์์ค ํ์ผ์ด ์ธ์ ์์ค ํ์ผ์ ์ ๋ณด๋ฅผ ๋ด์ ํ ์คํธ ํ์ผ์ ํ๋ ์์ฑํ์ฌ ํจ๊ป ์น์๋ฒ๋ก ์ ๋ฌํ๋ค.
๋ด ๊ฒฝ์ฐ์๋ ๋น๋๊ฐ ์ด๋ค์ง๋ work ์ฌ๋ฌ๊ฐ ์กด์ฌํด์ ์ด๋ฅผ ๊ตฌ๋ถํ ์ ์๋ {JOB_NAME}์ ํ๋๊ทธ ํ์ผ์ ์์ฑํด์ ์ ๋ฌํ๋ค.
์์
$ echo ${JOB_NAME} > deploy_flag.txt
2. ๋ฐฐํฌ ์ ๋ง๋ค๊ธฐ
๋ฐฐํฌ ์์ ๋ด์ฉ์ ํน์ ์์น์ ํ๋๊ทธ ํ์ผ์ด ์์ ๊ฒฝ์ฐ, ํ๋๊ทธ ํ์ผ์ ๋ด์ฉ์ ์ฝ์ด์ job์ ๋ง๋ ์์น์ ์์ค๋ฅผ ๋ฐฐํฌํด์ฃผ๊ณ ์๋ฃ๋๋ฉด ํ๋๊ทธ ํ์ผ์ ์ญ์ ํ๋ค. ํ๋๊ทธ ํ์ผ์ 2์ด์ ํ๋ฒ์ฉ ํ์ธํ๋ค.
3. ์์ณ(watcher) ๋ง๋ค๊ธฐ
1๋ฒ์์ ์์ฑํ ํ๋๊ทธ ํ์ผ์ด ์์ฑ๋์์ ๋, 2๋ฒ์์ ๋ง๋ ๋ฐฐํฌ ์์ด ์ํ๋ ์ ์๊ฒ ์์ณ(watcher)๋ฅผ ๋ฆฌ๋ ์ค nohub์ ์ด์ฉํด์ ๋ง๋ค์ ์๋ค. nohub์ ์น์๋ฒ์ ์ ์ํ ์ ์ ์ ์ธ์ ์ด ์ข ๋ฃ๋์ด๋ ํ๋ก์ธ์ค๊ฐ ์ํ๋ ์ ์๊ฒํด์ฃผ๋ ์ ํธ๋ฆฌํฐ์ด๋ค.
๋ฐฑ๊ทธ๋ผ์ด๋์์ ํ๋ก์ธ์ค ์ํํ๊ธฐ
$ nohup command [arguments] &
์ ๋ช ๋ น์ด๋ฅผ ํตํด์ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ํ๋ก์ธ์ค๋ฅผ ์ํํ ์ ์๋ค. '&'๋ฅผ ์ ์ธํ๋ฉด ์ธ์ ์ด ์ข ๋ฃ๋์์ ๋, ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃ๋๊ฒ๋ํ ์ ์๋ค.
๋ฐฐํฌ ์ ๋ฐฑ๊ทธ๋ผ์ด๋ ์คํํ๊ธฐ
$ nohub sh /deploy.sh &
2์์ ์์ฑํ ๋ฐฐํฌ ์์ด root ๊ฒฝ๋ก(/)์ deploy.sh์ด๋ผ๋ ์ด๋ฆ์ ์์ผ ๊ฒฝ์ฐ, ์์ ๊ฐ์ด ๋ฐฑ๊ทธ๋ผ์ด๋๋ก ์คํํ ์ ์๋ค.
nohub์ ์คํํ๋ฉด ์ถ๊ฐ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ ์ ์๊ฒ๋ ๋์ค๋๋ฐ ์๋ฌดํค๋ ๋๋ฅด๊ฑฐ๋ ctl + c๋ก ์ข ๋ฃํ๋ฉด ๋๋ค.
์ข ๋ฃํ์ฌ๋ ๋ฐฑ๊ทธ๋ผ์ด๋์์ deploy.sh์ ๊ณ์ ์คํ๋๋ค.
nohub์ ์คํํ ์์น์ nohub.out ํ์ผ์ด ์์ฑ๋์๋ค๋ฉด, ์ ์์ ์ผ๋ก ์ํ๋ ๊ฒ์ด๋ค. ํด๋น ํ์ผ์ nohub์ผ๋ก ์คํํ ํ๋ก์ธ์ค์ ๋ก๊ทธํ์ผ๋ก deploy.sh์ echo ๋ฑ์ผ๋ก ํน์ ์ํฉ์์ ์ถ๋ ฅ๋ช ๋ น์ด๋ฅผ ์ํํ๋ค๋ฉด, ๋ก๊ทธ๋ฅผ ์์์ ํ์ธํ ์ ์๋ค.
4. nohub ํ๋ก์ธ์ค ์ข ๋ฃํ๊ธฐ
$ ps -ef | grep deploy
deploy.sh์ ์ํํ๊ณ ์๋ ํ๋ก์ธ์ค์ id๋ฅผ ํ์ธํ๋ค.
$ kill -9 [processId]
# ์์: kill -9 5876
ํ์ธํ ํ๋ก์ธ์ค id๋ฅผ ๊ฐ์ ์ข ๋ฃ(9 ์ต์ ) ์ํจ๋ค.
โ ๊ฒฐ๊ณผ
์
๋ฌด ํจ์จ์ฑ ํฅ์: ๋ฐฐํฌ ๊ณผ์ ์ด 5๋จ๊ณ์์ 1๋จ๊ณ๋ก ์ค์ด๋ค๋ฉด์, ๊ฐ๋ฐ์๋ค์ ๋ ์ด์ ์๋ฒ์ ์ง์ ์ ์ํ ํ์๊ฐ ์์ด์ก์ต๋๋ค. ์ด๋ ํ์ ์์ฐ์ฑ์ ๋ํญ ํฅ์์์ผฐ์ต๋๋ค.
์ธ์ ์ค๋ฅ ๊ฐ์: ์๋ํ๋ ๋ฐฐํฌ ๊ณผ์ ๋๋ถ์ ์ธ์ ์ค๋ฅ๊ฐ ํฌ๊ฒ ์ค์ด๋ค์ด, ๋ฐฐํฌ์ ์์ ์ฑ์ ๋์ผ ์ ์์์ต๋๋ค.
๋ณด์ ๊ฐํ: ์๊ฒฉ ์ ์์ ์ต์ํํจ์ผ๋ก์จ ๋ณด์์ ์ธ ์ํ ์์๋ฅผ ์ค์ผ ์ ์์์ต๋๋ค.
ํ์๋ง์ด๋ ๋ณด์์ ์ฑ
์ด ๊ฐ๋ ฅํ ํ๊ฒฝ์์ ๋ถ์กฑํ CI/CD ํ๊ฒฝ์ ์์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ๊ฐ์ ํ ์ ์์์ต๋๋ค.
๋น์ทํ ํ๊ฒฝ์์ ๋น์ทํ ๋ฌธ์ ๋ฅผ ๊ฒช๋๋ค๋ฉด ๋์์ด ๋ ์ ๋ ์์๊ฒ ๊ฐ์ต๋๋ค.