* CI/CD ๊ฐ๋
โ CI ๋ ?
Continuous Integration์ ์ฌ๋ฌ ๊ฐ๋ฐ์๋ค์ด ํจ๊ป ๊ฐ๋ฐ์ ํ๋ ๊ณผ์ ์์ ์ฝ๋๊ฐ ์ ์๋ ํ๋์ง๋ฅผ ํ์ธํ๋ ๊ฒ์ผ๋ก์ CI๋ฅผ ํ๋ฉด ์ ํ๋ฆฌ์ผ์ด์
์ ๋ํ ์๋ก์ด ์ฝ๋ ๋ณ๊ฒฝ ์ฌํญ์ด ์ ๊ธฐ์ ์ผ๋ก ๋น๋ ๋ฐ ํ
์คํธ๋์ด ๊ณต์ ๋ฆฌํฌ์งํ ๋ฆฌ์ ํตํฉ๋๊ธฐ๋๋ฌธ์ ์๋ก์ ์์
์์ญ์ด ์ถฉ๋๋ ๊ฐ๋ฅ์ฑ์ด ์ ์ด์ ธ ๋ฐฐํฌ๋ฅผ ํ๊ธฐ ์ ์ ์ด ๋ฐฐํฌ๋ฅผ ํด๋ ๊ด์ฐฎ์ ์ํ์ธ์ง ํ์ธํ๊ธฐ ์ํด์ CI๋ฅผ ์ฌ์ฉํ๋ค.
โ CD ๋ ?
Continuous Deployment๋ ๋ฐ์๋ ์์ค์ฝ๋๊ฐ ์ค์ ์๋น์ค์๋ ์๋์ผ๋ก ๋ฐ์์ด ๋๊ฒ ํ๋ ๊ฒ์ผ๋ก์ ๋์ปค๋ฅผ ์ฌ์ฉํ๋ฉด Continuous Deployment ๊ณผ์ ์ด ๋ ์ฝ๊ณ ๋น ๋ฅด๊ฒ ์งํ๋ ์ ์๋ค.
* github action์ ์ฌ์ฉํ์ฌ CI ํ์ดํ๋ผ์ธ ๊ตฌ์ถ
โ github action ๋ ?
Github ์ ์ฅ์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ํํธ์จ์ด ๊ฐ๋ฐ Workflow๋ฅผ ์๋ํ ํ ์ ์๋ ๋๊ตฌ์ด๋ค. ๊ฐ๋จํ๊ฒ ๋งํ์๋ฉด Github์์ ์ง์ ์ ๊ณตํ๋ CI/CD ๋๊ตฌ๋ผ๊ณ ํ ์ ์๋ค.
* github action ๊ธฐ๋ณธ ๋ฌธ๋ฒ ์์๋ณด๊ธฐ
github action๋ฅผ ์ ์ํ๋ ๊ธฐ๋ณธ 6๊ฐ์ง ์ฉ์ด
1. `Workflows`: ์๋ํ ํ๋ ค๊ณ ํ๋ ๊ณผ์ ๋ค
- ํ๊ฐ ๋๋ ์ฌ๋ฌ๊ฐ์ job์ผ๋ก ๊ตฌ์ฑ๋๋ฉฐ, event์ ์ํด์ ์์๋๋ค.
- ๋น๋, ํ
์คํธ, ๋ฆด๋ฆฌ์ฆ, ๋ฐฐํฌ ๋ฑ์ ์์
์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค.
2. `Events` : workflow๋ฅผ trigger๋๋ ํ๋๋ค
- push, pull request, cronjob ๋ฑ์ด ์๋ค.
3. `Jobs`: ๋์ผํ runner์์ ์คํํ๋ ค๊ณ ํ๋ ์ฌ๋ฌ๊ฐ์ step์ ๋ชจ์
4. `Steps`: job์ ๊ตฌ์ฑํ๋ ํ๊ฐ์ ์ปค๋งจ๋๋ก action์ด๊ฑฐ๋ shell command๋ก ๊ตฌ์ฑ๋๋ค.
5. `Actions`: ๋ค๋ฅธ ๊ณณ์์ ์ ์๋ ์ปค๋งจ๋์ ๋ชจ์
6. `Runner`: Job์ด ์คํ๋๋ ํ๊ฒฝ