[Github] Action: Self Hosted Runner ๊ตฌ์„ฑ

[์›๋ณธ ๋งํฌ]

Github Action์€ ํ›Œ๋ฅญํ•˜๊ณ  ์‚ฌ์šฉ๊ฐ ๊ดœ์ฐฎ์€ CI/CD์šฉ ์„œ๋น„์Šค์ง€๋งŒ, ๊ทธ๋ƒฅ ๊ธฐ๋ณธ ์ œ๊ณต ํ˜ธ์ŠคํŠธ๋งŒ ์จ์„œ๋Š” ํ•œ๊ณ„๊ฐ€ ์žˆ์„ ๋•Œ๊ฐ€ ๋งŽ๋‹ค.

  1. ํ”„๋กœ๋น„์ €๋‹ ์‹œ๊ฐ„์ด ์ข€ ๊ฑธ๋ฆฌ๊ณ 

  2. ์„œ๋ฒ„ ์„ฑ๋Šฅ๋„ ๊ทธ๋ ‡๊ฒŒ ์ข‹์€ ํŽธ์€ ์•„๋‹ˆ๊ณ 

  3. ์š”๊ธˆ๋„ ๋งŽ์ง„ ์•Š์ง€๋งŒ ์กฐ๊ธˆ ๋‚˜์˜ค๋Š”๋ฐ๋‹ค

  4. ์˜จํ”„๋ ˆ๋ฏธ์Šค ๋จธ์‹ ์— ์ง์ ‘ ์ ‘๊ทผํ•ด์„œ ์ฒ˜๋ฆฌํ•˜๋Š”๊ฒŒ ๋ถˆํŽธํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.



๊ทธ๋ž˜์„œ ์ถ”๊ฐ€์ ์ธ ์š”๊ตฌ์‚ฌํ•ญ์ด ์žˆ๋‹ค๋ฉด Github Action์—์„œ ์‚ฌ์šฉํ•˜๋Š” Self-Hosted Runner๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋นŒ๋“œ ํ™˜๊ฒฝ์„ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด๋ ‡๊ฒŒ ์„ค์ •ํ•  ๊ฒฝ์šฐ์—๋Š” ํŠธ๋ฆฌ๊ฑฐ์™€ Github ์ฝ”๋“œ ๋ณต์ œ๊นŒ์ง€๋งŒ Github์—์„œ ์ œ๊ณตํ•ด์ฃผ๊ณ , ๊ฐ ๋จธ์‹ ์—์„œ ๋…๋ฆฝ์ ์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค. ๊ฐ€์ƒํ™”๋„ ์—†๋‹ค. github action cache ๊ฐ™์€ ๋ถ€๊ฐ€์ ์ธ ๊ธฐ๋Šฅ๋“ค๋„ ํ™œ์šฉํ•˜๋Š”๋ฐ ์ œํ•œ์ด ์žˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๊ฐ€์ƒํ™” ์—†์ด ํ•ด๋‹น ๋จธ์‹ ์— ์ง์ ‘ ์‹คํ–‰๋˜๋Š” ๊ฒƒ์ด๋ผ์„œ ๋น ๋ฅด๊ธด ํ•œ๋ฐ, ๋ณด์•ˆ์ด๋‚˜ ๋นŒ๋“œ ๋ฆฌ์†Œ์Šค cleanup์— ๋Œ€ํ•œ ๊ณ ๋ ค๊ฐ€ ์กฐ๊ธˆ ํ•„์š”ํ•  ์ˆ˜ ์žˆ๋‹ค.




์„ค์ •ํ•ด๋ณด๊ธฐ

๊ฐ ๋ ˆํฌ์˜ Runner ํŽ˜์ด์ง€๋กœ ๊ฐ€๋ฉด,

New Self Hosted Runner... ๋ฒ„ํŠผ ๋ˆ„๋ฅด๋ฉด ํŽธ๋ฆฌํ•˜๊ฒŒ ๊ฐ€์ด๋“œํ•ด์ฃผ๋Š” ํŽ˜์ด์ง€๊ฐ€ ์žˆ๋‹ค.

์ ๋‹นํžˆ ๋”ฐ๋ผ์ง€๋ฉด ๋œ๋‹ค. ๊ณ ๋ฏผํ• ๊ฑด ๋ณ„๋กœ ์—†๋‹ค.

# Create a folder
$ mkdir actions-runner && cd actions-runner
Copied!# Download the latest runner package
$ curl -o actions-runner-linux-x64-2.321.0.tar.gz -L https://github.com/actions/runner/releases/download/v2.321.0/actions-runner-linux-x64-2.321.0.tar.gz
# Optional: Validate the hash
$ echo "ba46ba7ce3a4d7236b16fbe44419fb453bc08f866b24f04d549ec89f1722a29e  actions-runner-linux-x64-2.321.0.tar.gz" | shasum -a 256 -c
# Extract the installer
$ tar xzf ./actions-runner-linux-x64-2.321.0.tar.gz
./config.sh --url https://github.com/..๋ ˆํฌ์ง€ํ† ๋ฆฌ --token ํ† ํฐ

๋Œ€ํ™”ํ˜•์œผ๋กœ ์„ค์ •๊ฐ’์„ ๋ช‡๊ฐœ ๋ฌผ์–ด๋ณด๋Š”๋ฐ, label๋งŒ ์ž˜ ์ฃผ๋ฉด ๋œ๋‹ค.
๋‚ด ๊ฒฝ์šฐ์—๋Š” ์ด๋ฆ„์€ ๊ณ ์œ ํ•˜๊ฒŒ onpremise-crawler-1, ๊ทธ๋ฃน ๋‹จ์œ„์ธ label์—๋Š” onpremise-crawler๋กœ ์ง€์—ˆ๋‹ค.
๋ ˆ์ด๋ธ”์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์—ฌ๋Ÿฌ๊ฐœ์˜ ๋Ÿฌ๋„ˆ๋ฅผ ๊ทธ๋ฃนํ™”ํ•ด์„œ ๊ด€๋ฆฌํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์‹คํ–‰ํ•˜๋ฉด ๋ฐ”๋กœ ๋œฌ๋‹ค.

๊ทธ๋Ÿฌ๋ฉด github์˜ ๋Ÿฌ๋„ˆ ํŽ˜์ด์ง€์—์„œ๋„ ๋œจ๊ธฐ ์‹œ์ž‘ํ•  ๊ฒƒ์ด๋‹ค.

์ด๋Ÿฌ๋ฉด ์‚ฌ์šฉํ•  ์ค€๋น„๊ฐ€ ์™„๋ฃŒ๋œ ๊ฒƒ์ด๋‹ค.




Daemon ๊ตฌ์„ฑํ•˜๊ธฐ (Linux)

github action runner๋Š” ๊ทธ๋ƒฅ ์‹คํ–‰ํ•˜๊ธฐ์—๋Š” ์ถฉ๋ถ„ํ•˜์ง€๋งŒ, ์ง€์†์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ๋ชฌ์— ๋Œ€ํ•œ ๊ตฌ์„ฑ์€ ์‚ฌ์ „ ์ œ๊ณตํ•˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™๋‹ค.

๋จธ์‹ ์ด ์žฌ๋ถ€ํŒ…๋˜์–ด๋„ ์•Œ์•„์„œ ์ž˜ ๋œจ๊ณ , ํ•ญ์ƒ ์‚ด์•„์žˆ๊ฒŒ ๋งŒ๋“ค๋ ค๋ฉด systemd๋ฅผ ํ™œ์šฉํ•˜๋Š”๊ฒŒ ๊ฐ„ํŽธํ•˜๋‹ค.
https://blog.naver.com/sssang97/223374364520

์„ค์ •ํŒŒ์ผ ๋งŒ๋“ค๊ณ 

sudo vi /etc/systemd/system/action-runner-1.service

[Unit]
Description=Github Action Runner

[Service]
Type=simple
Restart=on-failure
RestartSec=1
User=user
WorkingDirectory=/home/user/actions-runner
ExecStart=/home/user/actions-runner/run.sh

[Install]
WantedBy=network-online.target

์ ๋‹นํžˆ ์ด๋ ‡๊ฒŒ ๋„ฃ์–ด์ค€๋‹ค.
User๊ฐ€ ํ˜„์žฌ ์‚ฌ์šฉ์ค‘์ธ ์œ ์ € ์ •๋ณด๊ฐ€ ๋˜์–ด์•ผ ํ•œ๋‹ค. root๋Š” ์•ˆ๋œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ํ™œ์„ฑํ™”ํ•˜๋ฉด

sudo systemctl enable --now action-runner-1.service
sudo systemctl status action-runner-1.service

์ž˜ ์‚ด์•„๋‚  ๊ฒƒ์ด๋‹ค.




์›Œํฌํ”Œ๋กœ ์ •์˜ํ•˜๊ธฐ

self hosted runner์—์„œ ๋Œ๊ฒŒ ํ•˜๋ ค๋ฉด, ์›Œํฌํ”Œ๋กœ์— runs-on์œผ๋กœ ์กฐ๊ฑด์„ ์ ๋‹นํžˆ ๊ฑธ๋ฉด ๋œ๋‹ค.

๋ ˆ์ด๋ธ” ๊ธฐ๋ฐ˜์œผ๋กœ ๋ช…์‹œํ•ด์„œ ์ € ๋ ˆ์ด๋ธ”์— ์†ํ•˜๋Š” ๋Ÿฌ๋„ˆ๋งŒ ์„ ํƒ๋˜๋„๋ก ํ–ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์›Œํฌํ”Œ๋กœ๋ฅผ ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ๋“  ํŠธ๋ฆฌ๊ฑฐํ•˜๋ฉด

๋Ÿฌ๋„ˆ๊ฐ€ ๋ฐ›์•„์„œ ์ž˜ ์‹คํ–‰ํ•  ๊ฒƒ์ด๋‹ค.
์ด ์›Œํฌํ”Œ๋กœ๋Š” ์ค‘๊ฐ„์— ๋ญ ํ„ฐ์ ธ์„œ ์‹คํŒจํ•˜๊ธด ํ–ˆ๋Š”๋ฐ, ์ผ๋‹จ ๋Œ๊ธด ์ž˜ ๋ˆ ๊ฒƒ์ด๋‹ค.


๊ทธ๋ฆฌ๊ณ  ๋Ÿฌ๋„ˆ๊ฐ€ ๋ฐ›์•„์„œ ์‹คํ–‰ํ•œ ๋ฒ ์ด์Šค ์ฝ”๋“œ๋Š” ์•ž์„œ ์ง€์ •ํ–ˆ๋˜ action-runner ๋ฒ ์ด์Šค ๊ฒฝ๋กœ์˜ work ๊ฒฝ๋กœ์— ์ฐจ๊ณก์ฐจ๊ณก ์Œ“์ธ๋‹ค.