Git Actions?

Git Actions란?

소프트웨어 개발 워크플로우를 자동화할 수 있는 CI/CD(지속적 통합/지속적 배포) 플랫폼.

 

주요 특징

 

  • 자동화된 워크플로우: 코드 빌드, 테스트, 배포 등을 자동으로 실행.
  • 다양한 트리거: push, pull request, 스케줄링 등 다양한 이벤트로 워크플로우 실행 가능.
  • 매트릭스 빌드: 여러 운영체제나 Node.js 버전에서 동시에 테스트 가능.
  • 재사용 가능한 액션: 커뮤니티에서 제공하는 다양한 액션 사용 가능.

실습

먼저 .github/workflows 디렉토리 생성 후 ci.yml 파일 만들기.

name: Node.js CI

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

jobs:
  test:
    runs-on: ubuntu-latest

    strategy:
      matrix:
        node-version: [18.x, 20.x] # Node.js 버전을 18.x와 20.x로 변경

    steps:
      - uses: actions/checkout@v3

      - name: Node.js ${{ matrix.node-version }} 설정
        uses: actions/setup-node@v3
        with:
          node-version: ${{ matrix.node-version }}

      - name: yarn 캐시 설정
        uses: actions/cache@v3
        with:
          path: |
            **/node_modules
          key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
          restore-keys: |
            ${{ runner.os }}-yarn-

      - name: 의존성 설치
        run: yarn install --frozen-lockfile

      - name: 린트 검사
        run: yarn lint

      - name: 테스트 실행
        run: yarn test

해당 워크플로우는 다음과 같은 작업을 수행한다.

  • main 브랜치에 push하거나 pull request가 생성될 때 실행
  • Node.js 16.x와 18.x 버전에서 테스트
  • 드 체크아웃
  • Node.js 설정
  • 의존성 설치
  • 린트 검사
  • 테스트 실행
더보기

참고로 ESLint Jest 같은 개발 의존성 설치 꼭 기억하자!

 

다음으로 테스트 코드를 작성한다. 나는 간단하게 세션 생성과 조회 API로 테스트 코드를 작성했다.

describe("세션 API 테스트", () => {
  test("POST /sessions - 세션 생성", async () => {
    const response = await request(app)
      .post("/sessions")
      .send({ userId: "testUser" });

    expect(response.status).toBe(200);
    expect(response.body.message).toBe("세션 설정을 완료하였습니다.");
  });

  test("GET /sessions - 세션 조회", async () => {
    const response = await request(app).get("/sessions");

    expect(response.status).toBe(200);
    expect(response.body.message).toBe("세션을 조회하였습니다.");
  });
});

 

이후 터미널로 가서 아래를 순서대로 입력한다.

git add .
git commit -m "GitHub Actions CI 설정 추가"
git push origin main

 

Github에 접속해서 해당 레포지토리의 Actions 탭을 클릭해서 결과를 확인할 수 있다.

 

 

Git Actions 설정이 완료되었으니 main 브랜치에 push하거나, 다른 브랜치에서 main으로 pull request를 생성하면 자동으로 CI가 실행된다.

 

실행 결과 양식은 아래와 같다.

 

  • ✅ 초록색 체크표시: 모든 테스트 통과
  • ❌ 빨간색 X표시: 테스트 실패
  • 각 단계별 로그 확인 가능
  • 실패한 경우 어떤 테스트가 실패했는지 자세히 확인 가능
더보기

실패 예시.

 

 

 

 

 

 

 

 

'Side Projects' 카테고리의 다른 글

체스말 이동하기 로직  (0) 2025.02.21
채팅 시스템 성능 향상시키기  (0) 2025.02.18
DI(의존성 주입)?  (0) 2025.01.12
분산서버 확립하기  (0) 2025.01.10
서비스 레이어 패턴 활용하기  (0) 2024.12.28