[Github] Action: Self Hosted Runner ๊ตฌ์ฑ
Github Action์ ํ๋ฅญํ๊ณ ์ฌ์ฉ๊ฐ ๊ด์ฐฎ์ CI/CD์ฉ ์๋น์ค์ง๋ง, ๊ทธ๋ฅ ๊ธฐ๋ณธ ์ ๊ณต ํธ์คํธ๋ง ์จ์๋ ํ๊ณ๊ฐ ์์ ๋๊ฐ ๋ง๋ค.
-
ํ๋ก๋น์ ๋ ์๊ฐ์ด ์ข ๊ฑธ๋ฆฌ๊ณ
-
์๋ฒ ์ฑ๋ฅ๋ ๊ทธ๋ ๊ฒ ์ข์ ํธ์ ์๋๊ณ
-
์๊ธ๋ ๋ง์ง ์์ง๋ง ์กฐ๊ธ ๋์ค๋๋ฐ๋ค
-
์จํ๋ ๋ฏธ์ค ๋จธ์ ์ ์ง์ ์ ๊ทผํด์ ์ฒ๋ฆฌํ๋๊ฒ ๋ถํธํ๊ธฐ ๋๋ฌธ์ด๋ค.
๊ทธ๋์ ์ถ๊ฐ์ ์ธ ์๊ตฌ์ฌํญ์ด ์๋ค๋ฉด 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 ๊ฒฝ๋ก์ ์ฐจ๊ณก์ฐจ๊ณก ์์ธ๋ค.