๋ชฉ์ฐจ
1. Github Actions๋?
2. ์์ฑ ์์
3. ๊ตฌ์ฑ ์์ ์์ธํ ๋ณด๊ธฐ
3-1. Workflow
3-2. Event
3-3. Job
3-4. Runner
3-5. Step
3-6. Action
1. Github Actions๋?
Github์์ ์ ๊ณตํ๋ ๋น๋, ํ ์คํธ ๋ฐ ๋ฐฐํฌ ํ์ดํ๋ผ์ธ์ ์๋ํํ ์ ์๋ CI/CD ํ๋ซํผ
Github ์ ์ฅ์์ ์ด๋ฒคํธ(push, pr..)๊ฐ ๋ฐ์ํ๋ฉด ๋ฏธ๋ฆฌ ์ ์ํ ์์ (ํ ์คํธ-๋น๋-๋ฐฐํฌ..)์ ์๋์ผ๋ก ์คํํด์ค๋ค.
Github Actions์ ๊ตฌ์ฑ ์์์ ๋ํด ์์๋ณด์
๊ตฌ์ฑ ์์ | ์ค๋ช |
Workflow | ์๋ํ ํ๋ก์ธ์ค๊ฐ ์ ์๋ ์คํฌ๋ฆฝํธ ํ์ผ๋ก, Github Actions์์ ๊ฐ์ฅ ์ต์์ ๊ฐ๋ ์ด๋ค. |
Event | Workflow๋ฅผ ์คํ์ํค๋ ํธ๋ฆฌ๊ฑฐ๋ก, push/pull request์ ๊ฐ์ ๋์์ด๋ค. |
Job | ๋ ๋ฆฝ์ ์ผ๋ก ์คํ๋๋ ์์ ๋จ์๋ก, ๋ณ๋ ฌ/์์ฐจ ์คํ์ด ๊ฐ๋ฅํ๋ค |
Step | Job ๋ด๋ถ์์ ์คํ๋๋ ์ธ๋ถ ์์ ์ผ๋ก, ์คํฌ๋ฆฝํธ ์คํ/์ก์ ์ ์ฌ์ฉํ๋ค. |
Action | Step์์ ์คํํ๋ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ์์ ์ผ๋ก, npm ์ค์น/๋น๋/ํ ์คํธ ๋ฑ์ด ์๋ค. |
Runner | workflow๋ฅผ ์คํ์ํค๋ ์๋ฒ ํ๊ฒฝ์ผ, ๊ฐ runner๋ ํ ๋ฒ์ ํ๋์ Job์ ์คํํ ์ ์๋ค. |
2. ์์ฑ ์์
name: CI
on: [push, pull_request]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Use Node.js
uses: actions/setup-node@v3
with:
node-version: 18
- name: Install dependencies
run: npm install
- name: Run test
run: npm test
- push, pull_request ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ฉด ์คํ
- ๋ฌด์์?
- Node.js ํ๊ฒฝ์์
- npm install, npm test๋ฅผ ์๋ ์คํ
3. ๊ตฌ์ฑ ์์ ์์ธํ ๋ณด๊ธฐ
1. Workflow
์์ ๊ฐ์ด ์๋ํ๋ฅผ ๊ตฌ์ฑํ๊ธฐ ์ํ ๋ฌธ์์ด๋ค.
์ํฌํ๋ก์ฐ์ ์ด๋ฆ์ name ํค์๋๋ก ์์ฑํ๋ค.
2. Event
์ด๋ฒคํธ๋ on ํค์๋์ ์ํด ์ง์ ๋๋ค.
on: [push, pull_request]
ํน์ ๋ธ๋์น๊น์ง ๋ช ์ํ์ฌ ๋ ์ ํํ๊ฒ ์์ฑํ ์๋ ์๋ค.
on:
push:
branches:
- main
pull_request:
branches:
- develop
3. Job
์ ์์์์๋ ๊ฐ๋จํ๊ฒ ์์ฑํ์ง๋ง Job์ ๊ตฌ์ฑ์์๋ ๋ ์๋ค.
ํค | ์ค๋ช |
name | (์ ํ) Job์ ์ด๋ฆ. ์๋ตํ๋ฉด ID๋ก ํ์๋๋ค |
runs-on | Runner ์ง์ ํค์๋์ด๋ค. |
steps | Job ๋ด์์ ์คํํ ์์ ๋ค์ ์์๋๋ก ์ ์ํ ๋ฐฐ์ด๋ก, ๊ฐ step์ run์ด๋ uses๋ก ์ ์๋๋ค. |
needs | (์ ํ) ๋ค๋ฅธ Job์ด ์ ํ๋์ด์ผ ์ด Job์ด ์คํ๋๋๋ก ์ ์ ํ๋ค. (์์กด์ฑ ์ง์ ) ์์กด์ฑ์ด ์๋ Job๋ค์ ๋ชจ๋ ๋ณ๋ ฌ๋ก ์์๋์ด ์ฒ๋ฆฌ๋๋ค. |
envs | (์ ํ) Job ๋ด์์ ์ฌ์ฉํ ํ๊ฒฝ ๋ณ์๋ฅผ ์ค์ ํ๋ค. |
defaults | (์ ํ) Step ๋ด ๊ธฐ๋ณธ ์ค์ ๊ฐ์ ์ง์ ํ๋ค. (ex. shell, working-directory ๋ฑ) |
if | (์ ํ) Job์์คํ ์กฐ๊ฑด์ผ๋ก, ํน์ ์กฐ๊ฑด์ Job์ด ์คํ๋๋๋ก ์ ์ดํ๋ค. |
timeout-minutes | (์ ํ) Job์ด ์คํ๋ ์ต๋ ์๊ฐ์ผ๋ก, ์ด๊ณผ ์ ์๋ ์ทจ์ ๋๋ค |
continue-on-error | (์ ํ) Job์ด ์คํจํด๋ ์ํฌํ๋ก์ฐ๋ฅผ ๊ณ์ ์คํํ ์ง ์ง์ ํ๋ค. (true / false) |
jobs:
build:
name: Build Job
runs-on: ubuntu-latest
needs: test
env:
NODE_ENT: production
steps:
- name: Checkout
uses: actions/checkout@v3
...
4. Runner
Runner๋ runs-on ํค์๋์ ์ํด ์ง์ ๋๋ค.
runner๋ Github Actions ์ํฌํ๋ก์ฐ๋ฅผ ์ค์ ๋ก ์คํํ๋ ๋จธ์ (๊ฐ์๋จธ์ or ์ปจํ ์ด๋)์ผ๋ก,
๋ ๊ฐ์ง ์ ํ์ด ์๋ค.
Github host runner (๊ณต์ ์ ๊ณต ๋ฌ๋)์ ๋ํ์ ์ธ ๊ฐ๋ค :
์ด์์ฒด์ | runs-on ๊ฐ |
Ubuntu Linux | ubuntu-latest ubuntu-22.04 ubuntu-20.04 ubuntu-18.04 |
Windows | windows-latest windows-2022 windows-2019 |
macOS | macos-latest macos-13 macos-12 macos-11 |
์ด๋ ๊ฒ ๋ฒ์ ์ ๋ช ์ํ์ฌ ์คํํ๋ค.
self hosted runner
์ฌ์ฉ์๊ฐ ์ง์ ๊ด๋ฆฌํ๋ ๋ฌ๋๋ ๋ค์๊ณผ ๊ฐ์ด ์ง์ ํ๋ค.
runs-on: [self-hosted, linux, x64]
์ ํ ํธ์คํฐ๋ ๋ฌ๋์์ ๋ช ์ํ๋ฉฐ, OS, ์ํคํ ์ฒ ๋ฑ ํ๊ทธ๋ฅผ ์กฐํฉํ์ฌ ์ ํํ ์ ์๋ค.
5. Step
step์ ์ฃผ์ ๊ตฌ์ฑ ์์๋ ์ด๋ฐ ๊ฒ๋ค์ด ์๋ค.
ํค | ์ค๋ช | ์ฉ๋ | ์์ |
name | step์ ์ด๋ฆ ์ง์ | ๋ก๊ทธ/์คํ ๊ฒฐ๊ณผ์์ ์๋ณ์ด ์ฉ์ดํ๋๋ก ๋์ | name: Checkout repository |
uses | ์ธ๋ถ/์ปค์คํ ์ก์ ํธ์ถ | ๋ฏธ๋ฆฌ ๋ง๋ค์ด์ง ์ฌ์ฌ์ฉ ์ก์ ์ ์คํ | uses: actions/checkout@v3 |
run | ์ ธ๋ช ๋ น์ด/์คํฌ๋ฆฝํธ ์คํ | ๋ณต์กํ ์์ ์ ์ง์ ์ปค๋งจ๋๋ก ์ํ | - run: echo "Hello, world!" |
with | uses๋ก ํธ์ถํ ์ก์
์ ์ ๋ ฅ๊ฐ ์ ๋ฌ |
์ก์ ์ ์ค์ ๊ฐ/์ต์ ์ง์ | uses: actions/setup-node@v3 with: node-version: '16' |
env | ํด๋น step์์ ์ฌ์ฉํ ํ๊ฒฝ๋ณ์ ์ค์ |
step ๋ด ์
ธ๋ช
๋ น์ด๋ ์ก์ ์์ ์ฐธ์กฐํ ๋ณ์ ์ง์ |
run: echo $MY_VAR env: MY_VAR: "value" |
if | ์กฐ๊ฑด์ ๋ฐ๋ผ ์คํ ์ฌ๋ถ ๊ฒฐ์ | ํน์ ์กฐ๊ฑด์์๋ง step ์คํํ๋๋ก ์ ์ด | - run: echo "this runs only on main branch" if: github.ref == 'refs/heads/main' |
6. Action
uses ํค์๋๋ฅผ ํตํด ๋ฏธ๋ฆฌ ๋ง๋ค์ด๋ ์ก์ ์ ํธ์ถํ์ฌ ์ฌ์ฉํ ์ ์๋ค.
๋ณ๋์ ์ ์ฅ์์์ ๊ด๋ฆฌ๋๋ฉฐ, ์ํฌํ๋ก์ฐ ๋ด์์ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ๋ค.
์ฐธ๊ณ
'ํ๋ก ํธ์๋(Front-end) > Tools' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Github Actions ์ฌ์ฉํด๋ณด๊ธฐ (1) | 2025.05.26 |
---|---|
axios ์ฌ์ฉํด๋ณด๊ธฐ (0) | 2025.05.26 |
axios๋ ๋ญ๊น (1) | 2025.05.22 |
Zustand ์ฌ์ฉํด๋ณด๊ธฐ (0) | 2025.05.15 |
TanStack Query ์ฌ์ฉํด๋ณด๊ธฐ (0) | 2025.05.14 |