Programming/Linux

[Linux] nohub์œผ๋กœ ์ž๋™๋ฐฐํฌ(CI/CD) ๊ฐœ์„ ํ•˜๊ธฐ(ํ‰๋‚ด๋‚ด๊ธฐ)

Space_Jin 2025. 1. 29. 13:14
728x90
๋ฐ˜์‘ํ˜•

ํšŒ์‚ฌ์—์„œ ์ƒˆ๋กœ์šด ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•˜๊ฒŒ๋˜์—ˆ๋Š”๋ฐ CI/CD์˜ ๋ฌธ์ œ์ ์ด ์žˆ์—ˆ๋‹ค.

 

Jenkins๋ฅผ ์ด์šฉํ•ด ๋นŒ๋“œ ๋ฐ ๋ฐฐํฌ๋ฅผ ์ง„ํ–‰ํ•˜๊ฒŒ ๊ตฌ์ถ•๋˜์—ˆ๋Š”๋ฐ ๋‚ด๋ถ€ ๋ณด์™„์ ์ธ ๋ฌธ์ œ๋กœ ์ธํ•ด์„œ jenkins์—์„œ ์›น์„œ๋ฒ„์— ssh ์—ฐ๊ฒฐ ํ›„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” execute command์˜ ์ œ์•ฝ์ด ๊ฑธ๋ ธ๋‹ค. ๋นŒ๋“œ๋œ tar ํŒŒ์ผ์„ ์›น์„œ๋ฒ„(linux ์„œ๋ฒ„)์— ์ „๋‹ฌ๋งŒ ๊ฐ€๋Šฅํ–ˆ๊ณ  ์ฐจํ›„ ์ง์ ‘ ์›น์„œ๋ฒ„์— ์›๊ฒฉ ์ ‘์†ํ•ด์„œ ์†Œ์Šค ํŒŒ์ผ์ด ํ’€๋ ค์•ผํ•  ํƒ€๊ฒŸ ์œ„์น˜์—์„œ ์ˆ˜๋™์œผ๋กœ ํ’€์–ด์ค˜์•ผํ–ˆ๋‹ค.

 

์ž๋™๋ฐฐํฌ๋ฅผ ์ง„ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” jenkins ์ž์ฒด์˜ ๊ธฐ๋Šฅ์„ ์ด์šฉํ•  ์ˆ˜ ์—†์œผ๋‹ˆ ์›น์„œ๋ฒ„(linux)์— ๊ธฐ๋Šฅ์„ ๋งŒ๋“ค๊ธฐ๋กœ ํ–ˆ๋‹ค.

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 ์˜ต์…˜) ์‹œํ‚จ๋‹ค.

 

ํ์‡„๋ง์ด๋‚˜ ๋ณด์•ˆ์ •์ฑ…์ด ๊ฐ•๋ ฅํ•œ ํ™˜๊ฒฝ์—์„œ ๋ถ€์กฑํ•œ CI/CD ํ™˜๊ฒฝ์„ ์œ„์™€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

728x90
๋ฐ˜์‘ํ˜•