๋ค์ด๊ฐ๊ธฐ ์์ ํด๋น ๊ธ์์๋ C Compiler ์ ๋ํ ์ง์์ ํ์๋ก ํฉ๋๋ค. ํ์ง๋ง ์ C Compiler ์ ๋ํด ์์ธํ๊ฒ ์์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ ํ๋ฆฐ ๋ถ๋ถ์ด ์์ ์ ์์ต๋๋ค. ์ง์ ์ ์ธ์ ๋ ์ง ํ์ํฉ๋๋ค :)
Github Action Marketplace ์๋ ๋ค์ํ ์ก์ ๋ค์ด ์กด์ฌํฉ๋๋ค. ๊ทธ ์ค Setup Node, Setup Go, Setup Python ์ก์ ๋ฑ์ ํตํด์ ํ์ํ ์ธ์ด๋ ํด์ ๋ฌ๋์ ์ค์นํ๊ฒ ๋ฉ๋๋ค.
๋ง์ฝ ๋ฌ๋์์ ํ์ด์ฌ์ด ํ์ํ๋ค๋ฉด, Setup Python ์ก์ ์ ์คํํด์ ํ์ด์ฌ์ ์ฌ์ฉํ ์ ์๋ ํ๊ฒฝ์ ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
๊ทธ๋ฐ๋ฐ, ์์ฝ๊ฒ๋ Setup Python ์ก์ ์ Linux x64, Windows x64, MacOS Apple Silicon(Intel ํฌํจ) ์ ์ง์ํ์ง๋ง Linux arm64 ๋ ์ง์ํ์ง ์์ต๋๋ค.
๋ ๋ง์ ๋ฒ์ ์ ๋ณด๊ณ ์ถ๋ค๋ฉด ์ฌ๊ธฐ ์ฐธ๊ณ !
MacOS Apple Silicon ๊ฒฝ์ฐ์๋ 3.12.0-alpha.7 ๋ฒ์ ์ดํ๋ง ์ง์ํจ
Linux Arm64 ๋ฅผ ์ง์ํ์ง ์๋ ์ด์ ๋ ์ฌ๊ธฐ ์ฐธ๊ณ !
๊ทธ๋์ Linux arm64 ํ๊ฒฝ์์ ํ์ด์ฌ์ ์ฌ์ฉํ ์ผ์ด ์๋ค๋ฉด, Setup Python ์ก์ ๋ง๊ณ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ์์๋ด์ผ ํฉ๋๋ค.
๊ณ ๋ฏผ ํด๋ณธ ๋ฐฉ๋ฒ์ผ๋ก๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ฒซ๋ฒ์งธ, Docker Container ๋ฅผ ํ์ฉํฉ๋๋ค.
Python ์ด๋ฏธ์ง๋ฅผ ํตํด์ ์ปจํ ์ด๋ ๋ด์์ ํ์ด์ฌ ๊ด๋ จ ์์ ์ ์งํํ๋ ๊ฒ์ด์ง์. ๊ฐ์ฅ ์ฝ๊ณ ๊น๋ํ ๋ฐฉ๋ฒ์ด๋ผ๊ณ ์๊ฐ์ ํฉ๋๋ค๋ง, ํ๊ณ์ ์ด ์์ต๋๋ค.
์ ํ๊ฒฝ ๊ฐ์ ๊ฒฝ์ฐ ๋ฌ๋๋ค์ ์ฟ ๋ฒ๋คํฐ์ค ์์์ ARC ๋ฅผ ํตํด ๋์ ํฉ๋๋ค. ์ฆ ์ด๋ฏธ ํธ์คํธ ์์์ ์ปจํ ์ด๋๋ก ์คํ๋๊ณ ์๋ค๋ ๋ป์ ๋๋ค.
Docker Container ํ์ฉํ๋ ค๋ฉด ๋ฌ๋์ Docker in Docker ๋ Out of Docker ๋ฅผ ๊ตฌ์ฑํด์ผ ํฉ๋๋ค.
ARC ๋ ๊ธฐ๋ณธ์ ์ผ๋ก Docker in Docker ๋ฅผ ์ฌ์ฉํ๋, ๋ง์ฝ Docker ๊ฐ ์๋ ๋จ์ Host ์์ ์คํ๋๋ ๋ฌ๋์ผ ๊ฒฝ์ฐ ์ด ๋ฐฉ๋ฒ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
Docker ๋ฅผ ์ค์นํ๋ฉด ๋์ง๋ง, Docker ์ ๊ฐ์ ์ปจํ ์ด๋ ์์ง์ ์ค์นํ ์ ์๋ ๊ฒฝ์ฐ๋ผ๋ฉด?!
๋๋ฒ์งธ, ์บ์ ๊ธฐ๋ฅ์ ํ์ฉํฉ๋๋ค.
2vCPU, 8G RAM ์คํ์ ๊ฐ์ง Host ์์์ ํ์ด์ฌ์ ์ค์นํ๊ธฐ ์ํด make ๋ฅผ ํตํด ์ง์ ๋น๋ ํ ๊ฒฝ์ฐ, 10๋ถ์ด ๋๊ฒ ์์๋ฉ๋๋ค. ์งง๋ค๋ฉด ์งง๊ณ , ๊ธธ๋ค๋ฉด ๊ธด ์๊ฐ์ ๋๋ค.
ํ์คํ ๊ฑด ๋งค๋ฒ ์ก์ ์ ์คํ ํ ๋๋ง๋ค ๊ฒช๊ธด์ ๋๋ฌด๋ ํฐ ์๊ฐ์ ๋๋ค.
ํํธ, ARC ๋ก ๊ด๋ฆฌ๋๋ ๋ฌ๋๋ค์ Ephemeral(์ผ์์ ) ํฉ๋๋ค. ์ฆ ์ด์ ์ ์คํ๋ ์ก์ ์ด๋ Jobs ์ ๋ํด์ ์ด๋ ํ ๋ฐ์ดํฐ๋ ๊ฐ์ง๊ณ ์์ง์๊ณ , ๋งค๋ฒ ์คํ๋ ๋๋ง๋ค ์๋ก์ด ํ๊ฒฝ์ ์ ๊ณตํด์ค๋๋ค. Stateful ํ์ง ์๊ณ Stateless ํ์ฃ !
๊ทธ๋์ ์บ์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ ค๋ฉด ๊นํ ์ก์ ์์ ์ ๊ณต๋๋ ์บ์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๊ฑฐ๋ AWS EFS ์ ๊ฐ์ ํ์ผ ์์คํ ์ ์ฌ์ฉํด์ Stateful ํ๊ฒ ์ ์ง์์ผ์ผ ํฉ๋๋ค.
๊นํ ์ก์ ์์ ์ ๊ณต๋๋ ์บ์ ๊ธฐ๋ฅ์ ์ ์ฅ ์ต๋ ์๊ฐ์ 7์ผ
AWS EFS ์ ๊ฐ์ ํ์ผ ์์คํ ์ ์ฌ์ฉํด์ ARC ๋ก ๊ด๋ฆฌ๋๋ ๋ฌ๋์ ๋ฐ์ดํฐ๋ฅผ Stateful ํ๊ฒ ์ ์งํ๋ ๋ฐฉ๋ฒ์ด ๊ถ๊ธํ๋ค๋ฉด ์ฌ๊ธฐ ์ฐธ๊ณ !
๋ค์ ๋ณธ๋ก ์ผ๋ก ๋์์, ๊ฒฐ๊ตญ ๋น๋ ์๊ฐ์ ์ค์ฌ์ผ ํฉ๋๋ค. ccache, conan ๋ฑ๊ณผ ๊ฐ์ ํด์ ์ด์ฉํด์ ์บ์ฑ์ ์งํํ๊ณ , ์บ์๋ ๋ฐ์ดํฐ๋ ARC ๊ฐ ๊ด๋ฆฌํ๋ ๋ฌ๋๋ค๊ณผ ๋ง์ดํธ๋ AWS EFS ์์ ์ ์ฅ๋ฉ๋๋ค.
์ค์ ๋ก ๋ช๋ช ์บ์ ๋ฐ์ดํฐ๋ฅผ ์ด๋ฐ์์ผ๋ก ๊ด๋ฆฌํ์ง๋ง ๊ฐ๋ฅํ๋ค๋ฉด ์ด ๋ฐฉ๋ฒ์ ํผํ๊ณ ์ถ์ต๋๋ค. ์๋๋ฉด ๊ด๋ฆฌ ํฌ์ธํธ๋ฅผ ์ต์ํ์ผ๋ก ํ๊ณ ์ถ๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋ฐ๋ผ์ ์ด ๋ฐฉ๋ฒ์ด ์ต์ ์ ์๋๋ผ๊ณ ์๊ฐํฉ๋๋ค.
์ธ๋ฒ์งธ, Pyenv ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค.
Pyenv๋ฅผ ์ฌ์ฉํ๋ฉด ์์คํ ์ ์ฒด์ ์ํฅ์ ์ฃผ์ง ์๊ณ ์ฌ๋ฌ ๋ฒ์ ์ Python์ ์ค์นํ๊ณ ์ฝ๊ฒ ์ ํํ ์ ์์ต๋๋ค. ์ฌ๋ฌ ํ์ด์ฌ ๋ฒ์ ์ด ์์ด๋ ์๋ก ์ถฉ๋ ๋ ๊ฐ๋ฅ์ฑ์ ํ์ ํ ์ค์ด์ฃผ๊ธฐ ๋๋ฌธ์ ๊ด์ฐฎ์ ๋ฐฉ๋ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
ํ์ง๋ง Pyenv ๋ฅผ ์จ๋ ํ์ด์ฌ์ ๋น๋ํด์ผ ํ๋ ๊ณผ์ ์ด ํ์ํ๊ณ , ๋น๋ ํ๋ ์๊ฐ์ ๋จ์ถ์ํค๊ฑฐ๋ ์์ ๊ณ ์ ํ๋ ค๋ฉด AWS EFS ๋ฅผ ๋ง์ดํธํด์ ๋ฐ์ดํฐ๋ฅผ ์ ์ง์์ผ ์ค์ผํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ Pyenv ์์ฒด๋ฅผ ์ค์นํ๊ณ ๊ด๋ฆฌํด์ผ ํ๋ AWS EFS ์ก์ธ์ค ํฌ์ธํธ๋ผ๋ ๊ด๋ฆฌ ํฌ์ธํธ ํ๋, Pyenv ๊ด๋ฆฌ ํฌ์ธํธ ํ๋ ์ด 2๊ฐ์ ๊ด๋ฆฌํฌ์ธํธ๊ฐ ๋ ์๊ธฐ๊ฒ ๋ฉ๋๋ค.
์ธ๊ฐ์ง ๋ฐฉ๋ฒ ๋ชจ๋ 100% ๋ง์กฑ์ค๋ฝ์ง ๋ชปํฉ๋๋ค.
์ฌ์ค ์ด ์ธ๊ฐ์ง ๋ฐฉ๋ฒ์ ๊ณ ๋ คํ ํ์๋ ์์ต๋๋ค. Setup Python ์ก์ ์์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๊ทธ๋๋ก ์ฌ์ฉํ๋ฉด ๋๊ฑฐ๋ ์!
Setup Python ์ก์ ์ ์ฝ๋๋ฅผ ์ดํด๋ณด๋ฉด, ๊ฒฐ๊ตญ python ๊ณผ ๊ด๋ จ๋ ๊ฒ๋ค์ ์ค์น(install-python.ts, setup-python.ts)ํ๊ณ , ์ฌ์ฉํ ์ ์๋๋ก ํ๊ฒฝ ๋ณ์ ๋ฑ์ผ๋ก ๋ฑ๋กํด์ฃผ๋ ์ฝ๋(find-python.ts)๊ฐ ์ ๋ถ์ ๋๋ค.
install-python.ts ์ฝ๋๋ฅผ ์กฐ๊ธ ๋ ์์ธํ ์ดํด๋ณด๋ฉด, make ๋ฅผ ํตํด ์ง์ ๋น๋ํ๋ ๊ฒ์ด ์๋ ์ด๋ฏธ ๋น๋๋ Artifact ๋ฅผ ๊ฐ์ ธ์ค๋ ๊ฒ์ ํ์ธ ํ ์ ์์ต๋๋ค.
ํ์ ์คํฌ๋ฆฝํธ ์ฝ๋๋ ํ๋๋ ๋ชจ๋ฅด์ง๋ง, ์ฝ๋๋ฅผ ๋ณด์ํ๋ MANIFEST_URL ์์ ๋ฏธ๋ฆฌ ๋น๋ํ๊ณ ์์ถํ ํ์ด์ฌ Artifact ๋ฅผ ๊ฐ์ ธ์์ ์์ถ์ ํด์ ํ ํ find-python.ts ๋ฅผ ํตํด ํ์ด์ฌ์ ์ฌ์ฉํ ์ ์๋๋ก ๋ฌ๋์ ๋ฑ๋กํด์ฃผ๋ ๊ฑฐ ๊ฐ์ต๋๋ค.
์ํ! Setup Python ์ก์ ์ ๋ฒค์น๋งํนํ์ฌ ๋ง๋๋ ๊ฒ์ด ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ด๋ผ๋ ์๊ฐ์ด ๋ญ๋๋ค!
์ต๋ํ ๋๊ฐ์ด ๋ง๋๋ ๊ฒ์ด์ฃ .
์๊ฐํด๋ณธ ์๋๋ฆฌ์ค๋,
๋ก์ปฌ์์
- Docker Buildx ๋ฅผ ํ์ฉํ์ฌ Linux arm64 ํ๊ฒฝ์์ Python ์ ๋น๋ํฉ๋๋ค.
- ๋น๋ํ Python Artifact ๋ฅผ Nexus ์ ๊ฐ์ ์ ์ฅ์์ ์ ์ฅํฉ๋๋ค.
- versions-manifest.json ์ ๋ง๋ค์ด ์ฌ์ฉ๊ฐ๋ฅํ Python Artifact ๋ฅผ Following ํฉ๋๋ค.
์ก์ ๋ถ๋ถ์์
- ์ํ๋ ํ์ด์ฌ ๋ฒ์ ์ ๋ช ์ํฉ๋๋ค.
- versions-manifest.json ์ ํตํด์ ์ํ๋ Python Artifact ๋ฅผ ๊ฐ์ ธ์ต๋๋ค.
- ์์ถ์ ํด์ ํ ํ์, ์ฌ์ฉํ ์ ์๋๋ก ํ๊ฒฝ ๋ณ์ ๋ฑ์ ๋ฑ๋กํฉ๋๋ค.
๊ทธ๋ผ ๋ฐ๋ก ํํธ์์๋ ์ ์๋๋ฆฌ์ค๋ฅผ ๋ฐํ์ผ๋ก ์ง์ ๊ตฌํ ํด๋ณด๊ฒ ์ต๋๋ค!
ํํธ์์ ๋ฐ๋ก ์ด์ด์ง๋๋ค.
'DevOps > Github Action' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Github Action] ๋ด์ง๋ด๋ง - Setup Python Arm64 ์ก์ ๋ง๋ค๊ธฐ (ํํธ) (37) | 2024.06.05 |
---|---|
[Github Action] MacOS.. ๋ ์ ARC ์ง์์ด ์๋์... - Runner with MacOS (6) | 2023.11.12 |
[Github Action] EKS, Karpenter ๊ทธ๋ฆฌ๊ณ Window Runner (7) | 2023.11.06 |
[Github Action] cmake ์ ์ผ๊ณฑ ํ์ด์ฌ (5) | 2023.10.06 |
[Github Action] ๋ cache ๋๊ฑฐ์ผ! - ccache ๋ฅผ ์ด์ฉํ c/c++ ๋น๋ (7) | 2023.10.05 |