← 글 목록

notes

GitHub Action

GitHub Actions 워크플로 작성·실행과 CI/CD 자동화 설정 메모.

  • 서버 없이 저장소 안에서 빌드, 테스트, 배포를 돌린다
  • 워크플로는 이벤트, 작업, 단계 세 층으로 짠다
  • 자주 쓰는 일은 마켓플레이스 액션을 가져다 쓴다

GitHub Actions 는

GitHub 에 들어 있는 CI/CD 도구다. 코드를 push 하거나 PR 을 열면 그걸 신호로 빌드, 테스트, 배포 같은 작업을 알아서 돌린다. Jenkins 처럼 서버를 따로 띄울 필요가 없다는 게 제일 크다.

워크플로 구조

워크플로는 저장소의 .github/workflows/ 폴더에 YAML 파일로 둔다. on 에 언제 돌지를 적고, jobs 아래에 작업을, 작업 안의 steps 에 한 단계씩 할 일을 적는다. 단계는 uses 로 남이 만든 액션을 가져오거나 run 으로 명령을 직접 쓴다.

Node 프로젝트 CI 예제
name: CI

on:
  push:
    branches: [main]
  pull_request:

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v7
      - uses: actions/setup-node@v7
        with:
          node-version: 24
      - run: npm ci
      - run: npm test
      - run: npm run build

실행 흐름

이벤트가 오면 GitHub 가 러너라는 VM 을 하나 잡아서 steps 를 위에서부터 차례로 실행한다. runs-on 으로 Linux, macOS, Windows 중 고를 수 있고, 결과는 커밋이랑 PR 에 체크 표시로 붙는다.

API 키나 비밀번호는 저장소 Settings 의 Secrets 에 넣고 워크플로에서 환경 변수로 꺼낸다. 로그에는 값이 가려져서 찍힌다.

- run: npm run deploy
  env:
    API_KEY: ${{ secrets.API_KEY }}

Jenkins 랑 비교

나는 회사에서 Jenkins 를 직접 운영해 봤는데, 설치부터 플러그인 관리까지 손이 꽤 간다. Actions 는 YAML 하나 올리면 끝이고 마켓플레이스에 만들어진 액션이 많아서 간단한 저장소는 이쪽이 훨씬 편하다. 반대로 사내망 서버에 배포하거나 빌드를 오래 돌려야 하면 Jenkins 쪽이 나을 때도 있다.