Skip to content

CI ( 지속적 통합 )

김규성(LUKAS) edited this page Sep 2, 2023 · 1 revision

CI

빌드 / 테스트 자동화를 통한 지속적인 통합

필요성

커밋할 때마다 빌드 및 일련의 자동 테스트가 이루어져 동작을 확인하고 변경으로 인한 문제가 있는지 없는지 체크한다.

적용 방법

github action flow 설정

github/workflows/에 github action flow 를 담은 YAML 파일을 추가한다.

name: CI 빌드 테스트 자동화

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

jobs:
  build:

    runs-on: ubuntu-latest

    steps:

    - name: 체크아웃
      uses: actions/checkout@v3

    - name: 서브모듈 레파지토리 가져오기
      uses: actions/checkout@v3
      with:
        token: ${{ secrets.SUBMODULE_TOKEN }}
        submodules: recursive    
      
    - name: JDK 11 설치
      uses: actions/setup-java@v3
      with:
        java-version: '11'
        distribution: 'temurin'

    - name: Gradle 캐싱
      uses: actions/cache@v3
      with:
        path: |
          ~/.gradle/caches
          ~/.gradle/wrapper
        key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
        restore-keys: |
          ${{ runner.os }}-gradle-    

    - name: Gradle 명령 실행을 위한 권한을 부여
      run: chmod +x gradlew

    - name: Gradle 빌드
      uses: gradle/gradle-build-action@bd5760595778326ba7f1441bcf7e88b49de61a25 # v2.6.0
      with:
        arguments: build

외부 레포지토리(SUBMODULE) 접근을 위한 깃헙 토큰 설정

    - name: 서브모듈 레파지토리 가져오기
      uses: actions/checkout@v3
      with:
        token: ${{ secrets.SUBMODULE_TOKEN }}
        submodules: recursive  

현재 사용하는 서브 모듈은 다른 GIT 저장소를 현재 저장소의 하위 디렉토리로 포함하는 GIT의 버전 관리 기능 중 하나로 프로젝트에서 사용되는 중요한 설정정보들을 담고 있다. 따라서 빌드 테스트를 수행할 때마다 최신 코드를 가져오도록 업데이트하는 것이 중요하다.

현재 저장소가 아닌 다른 저장소에 위치해 있으므로 접근할 수 있는 토큰이 필요한데, 저장소의 권한이 담겨 있는 토큰 값을 그대로 노출 시킬 수는 없으니, 깃헙에서 제공하는 secret token 을 활용하여 주입하도록 한다.

image

🏠 HOME

  • 프로젝트 빌드 및 실행 방법

🧑‍💻 개발 컨벤션

  • 코드 스타일
  • Git 브랜치 전략
  • 예외 처리 방식 및 예외 코드

🛠 기술

Clone this wiki locally