FrontEngineer JungBam

깃헙 액션으로 CI 파이프라인 설정하기 본문

개발일지

깃헙 액션으로 CI 파이프라인 설정하기

정밤톨 2023. 8. 20. 23:51

기본적인 CI/CD의 설명이 필요하다면 아래 링크를 통해 CI/CD에 대해서 알압보고 글을 읽으면 좋을 것 같다.

 

CI/CD(CI CD, 지속적 통합/지속적 배포): 개념, 툴, 구축, 차이

CI/CD는 애플리케이션의 통합 및 테스트 단계부터 제공 및 배포까지 애플리케이션 라이프사이클 전체에서 지속적인 자동화와 지속적인 모니터링을 제공하는 것을 뜻합니다.

www.redhat.com

깃헙 액션을 활용하는 것은 이전에 gpt를 통한 코드리뷰 이후 두번째인데 이번에는 깃헙 액션을 통한 CI 파이프라인을 설정하는 방법에 대해서 알아보자.

 CI파이프 라인이라는 것은 지속적 통합을 의미하는 것으로 ' BUILD > TEST > MERGE ' 의 워크플로우를 의미한다. 왜 필요한지에 대해서는 테스트 코드를 작성한 사람이라면 이 의미가 더 다가올텐데, 병합을 하는데에 있어서 통합 테스트와 단위 테스트가 통과되도록 하여 기존에 작성된 코드가 새로 추가된 코드로 인하여 기능에 문제가 발생하지 않도록 하고 이를 통해 CI과정에서 발견된 버그에 대한 수정이 이루어지도록 하기 위함이다.

 그렇다면 어떤식으로 적용하는지에 대해서 알아보자. 예전 프로젝트를 진행하며 jenkins에서 설정하는 것을 봤었는데 제대로 된 CI/CD를 구축하기 위해서는 꽤나 복잡했다. 하지만 깃헙액션은 그에 비해 간단하게 설정이 가능하고 공식문서에서 많은 부분을 제공하기 때문에 훨씬 쉽게 접근할 수 있는 장점이 있는 것 같다.

 


1. 깃헙의 워크플로우를 추가하기 위해서는 먼저 root 경로에 .github/workflows 경로를 만들어주고 그 아래에 settings.yml 파일을 만들어주자.

2. settings.yml 파일 내부 코드를 작성해주자.

// .github\workflows\main.yml

name: CI

on: [push, pull_request]  // 워크플로우 트리거 이벤트 설정				

jobs:
  build-and-test:
    runs-on: ubuntu-latest	// ubuntu 최신 버전 환경을 가정하고 테스트

    steps:
    - name: Checkout code
      uses: actions/checkout@v3	// GitHub 저장소의 코드를 해당 실행 환경에 체크아웃

    - name: Setup Node.js
      uses: actions/setup-node@v3	// 지정된 버전의 노드 설치 
      with:
        node-version: "18"

    - name: Install dependencies
      run: npm ci

    - name: Run Jest tests
      run: npm run test:ci		// 실제 test 명령어

    - name: Build the app
      run: npm run build	// 실제 build 명령어

3. 특정 경로나 특정 브랜치의 설정을 위해서는 on 을 통해 설정이 가능하다.

// 특정 브랜치 예시
on:
  push:
    branches:
      - main

4. 특정 노드버전에서의 CI 설정

    strategy:
      matrix:
        node-version: [16.x, 18.x]

    steps:
	//...

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

5. CI 단계에서 테스트를 진행하는 명령어를 별도로 설정이 필요하다.
why? --watch를 통해 테스트를 할경우 계속해서 테스트를 진행하기 때문

// package.json
    "test": "jest --watch",
    "test:ci": "jest",

 

 

깃허브 액션 (GitHub Actions) 설정

https://docs.github.com/ko/actions/using-workflows/about-workflows 워크플로 정보 - GitHub Docs 트리거, 구문 및 고급 기능을 포함하여 GitHub Actions 워크플로에 대한 개략적인 개요를 알아봅니다. docs.github.com Next에

jhchoi1182.tistory.com

아직 끝난 것이 아니라 github 레포지토리에서 설정해줘야 할 부분들이 있다.

1. settings - Branches 에서 add rules를 하고 아래와 같이 설정을 해준다.

 Require status checks to pass before merging을 체크를 해주고 아래 Search for status에서 검색을 통해 설정된 파이프라인을 가져오면 된다.
 * github/workflow의 세팅이 적용된 시점에서 해당 검색을 통해 적용할 수 있다.

2. settings - General 에 있는 Pull Requests 파트르에 Allow auto-merge를 설정해줌으로써 해당 파이프라인이 다 통과되면 자동으로 머지할 수 있도록 설정해준다.

반응형
Comments