Github Actions
Github Actions
νΉμ μ΄λ²€νΈκ° λ°μνμ λ μνλ μμ μ μλμΌλ‘ μννκ² λ§λ€μ΄μ£Όλ λꡬ
νλ‘μ νΈ λ£¨νΈ κ²½λ‘μ
.github/workflows/
λλ ν 리λ₯Ό μμ±νκ³.yml
νμΌμ λ§λ€μ΄ μν¬νλ‘μ°λ₯Ό μ μνλ€.
// workflows μ΄λ¦
name: CI
// workflowsλ₯Ό μ€νμν¬ νΈλ¦¬κ±°
// κ° μ΄λ²€νΈ νμμ μ§μ νλ μμΈ μ€μ μ AND μ°μ°μλ₯Ό μ¬μ©νμ¬ μ‘°κ±΄μ΄ μΆ©μ‘±λμ΄μΌ μ€νλ¨
on:
push:
branches:
- main
pull_request:
types: [opened, synchronize, reopened]
jobs:
build:
// jobμ μ€νμν¬ νκ²½μ μ§μ
runs-on: ubuntu-latest
steps:
// usesλ μ΄λ―Έ λ§λ€μ΄λ Actionμ μ¬μ©νκ² λ€λ κ²
// checkoutμ 'runs-on'μ λͺ
μν μν¬νλ‘μ° μ€ν νκ²½μμ ν΄λΉ νλ‘μ νΈλ₯Ό λΆλ¬μ€λ λμμ μλ―Έ
// μν¬νλ‘μ°μ 첫 λ²μ§Έ λ¨κ³μμ μ¬μ©λλ©° κΌ νμνλ€.
- name: Checkout
uses: actions/checkout@v3
// node.js νκ²½ μΈν
- name: Set up Node.js
uses: actions/setup-node@v3
// withμ μ¬μ©νμ¬ μ‘μ
μ κ° μ λ¬
with:
node-version: '16'
// μ’
μμ±μ κ΄λ¦¬νκ³ μΊμ±ν ν¨ν€μ§λ§€λμ μ§μ
cache: npm
// μ’
μμ± μ€μΉ
- name: Install dependencies
// runμ package.jsonμ μ μν μ€ν¬λ¦½νΈ λͺ
λ Ήμ΄λ₯Ό μ€νμν€κΈ° μν΄ μ¬μ©λ¨
run: npm ci
- name: Lint
run: npx eslint --ext .js,.jsx,.ts,.tsx .
- name: Compile to check syntax
run: npx tsc --noEmit
- name: Run tests
run: npx jest --verbose --coverage
- name: Build
run: npm run build
- name: Run E2E test
run: HEADLESS=true npm run ci
Events
When - μνν μμ μ΄ νΈλ¦¬κ±°λλ μν©
githubμμ λ°μλλ λλΆλΆμ μ΄λ²€νΈλ₯Ό μ§μ ν μ μλ€.
ex) push, merge, pr μμ± λ±
μ΄λ²€νΈκ° νΈμΆλλ©΄ μν¬νλ‘μ°κ° μ€νλλ€.
Workflow
νΉμ μ΄λ²€νΈκ° λ°μνμ λ μ€νλλ μμ λ€μ μ§ν©
νλμ
workflows
λ νλ λλ λ€μμjob
μ κ°λλ€.
Job
μν¬νλ‘μ° λ΄μμ μ€νλλ λ 립μ μΈ μμ
κΈ°λ³Έμ μΌλ‘ λ³λ ¬λ‘ μ€νλλ€.
job
μ νλ μ΄μμstep
μΌλ‘ ꡬμ±λλ€.shell script
λλnpm λͺ λ Ήμ΄
μμ± κ°λ₯
Actions
νΉμ μμ , λͺ λ Ήμ΄λ₯Ό μ€ννλ λ¨μ
μμ£Ό μνλλ μμ μ μ‘μ μΌλ‘ μ μνμ¬ μ¬μ¬μ©μ±μ λνλ€.
Github actions μλ μ¬μ μ μ μλ λ€μν μ‘μ λ€μ μ 곡νλ€.
Composite Action
μ¬λ¬ κ°μ λ¨μΌ μ‘μ μΌλ‘ ꡬμ±λμ΄ λ 볡μ‘ν μμ μ μννκΈ° μν΄ μ¬μ©λλ€.
Composite Actionμ μν¬νλ‘μ°μ λ 립μ μΌλ‘ κ΄λ¦¬νκΈ° μν΄ λ³λμ λλ ν 리λ₯Ό μμ±νμ¬ κ΄λ¦¬νμ.
Composit Actionλ§λ€ κ°λ³ ν΄λλ₯Ό λ§λ€κ³
action.yml
νμΌμ μμ±νμ¬ μ μνλ€.using: 'composite'
λ‘ μ μΈν΄μΌ νλ€.ν΄λΉ μ‘μ μ μ¬μ©νλ κ³³μμ
uses
λ₯Ό ν΅ν΄ μ‘μ μ μλ κ²½λ‘λ₯Ό μ§μ νμ¬ μ¬μ©νλ€.uses: ./.github/actions/yarn-install
Runner
μμ μ μνν μ€ν νκ²½μΌλ‘ githubμμ νΈμ€ν νμ¬ μν¬νλ‘μ°λ₯Ό μ€νμν€κΈ° μν΄ μ¬μ©λλ€.
job
μ μ€ννλ κ²μ΄ λ°λ‘Runner
,job
μ λ 립μ μΈRunner Container
μμ μ€νλλ€.
Last updated