[Reach Rich 개발기] PR 시 빌드 가능함을 체크하는 CI 구축

wannabeking·2023년 3월 8일
0

Reach Rich 개발기

목록 보기
3/10

PR 시 해당 커밋이 반영될때 빌드 가능함을 확인할 수 있다면, Merge 시킬지 여부를 판단할 수 있는 좋은 지표가 될 것입니다.

따라서 저는 GitHub Action을 사용하여 Reach Rich 프로젝트에 PR 시 빌드시키는 Action을 추가하여 성공, 실패 여부를 확인 가능하게 구현하려 합니다.



Secret

Yaml과 같은 특정 Config 파일에는 서버 도메인, 계정명, 비밀번호 등 보안상 취약한 데이터가 존재합니다.

따라서 레파지토리에는 push하면 안되므로 gitignore을 사용합니다.

그렇다면 저장소에는 Config 파일이 존재하지 않기 때문에 빌드에서 에러가 발생할 것입니다.

이는 GitHub의 Secret에 작성해놓고 GitHub Action 수행 시 Write 작업을 수행하여 해결할 수 있습니다.

위와 같이 Yaml 파일들을 Secret에 작성합니다.



Script

CI에 사용될 GitHub Action Yaml 파일은 다음과 같습니다.

name: CI

on:
  pull_request:
    branches: [ "develop" ]

jobs:
  build:
    runs-on: ubuntu-latest
    
    steps:
      # 체크아웃
      - name: checkout
        uses: actions/checkout@v3

      # JDK version 설정
      - name: Set up JDK 11
        uses: actions/setup-java@v3
        with:
          java-version: '11'
          distribution: 'temurin'
          
      ## 그래들 캐싱
      - name: Gradle Caching
        uses: actions/cache@v3
        with:
          path: |
            ~/.gradle/caches
            ~/.gradle/wrapper
          key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
          restore-keys: |
            ${{ runner.os }}-gradle-
            
      # Config 파일 Write
      - name: make env file
        run: |
          # main 설정 파일 디렉토리로 이동
          cd ./src/main/resources
          
          # application-mysql.yml
          touch ./application-mysql.yml
          echo "${{secrets.CI_APPLICATION_MYSQL}}" >> ./application-mysql.yml
          
          # application-redis.yml
          touch ./application-redis.yml
          echo "${{ secrets.CI_APPLICATION_REDIS }}" >> ./application-redis.yml
        shell: bash

      # Gradle build
      - name: Grant execute permission for gradlew
        run: chmod +x gradlew

      - name: Build Gradle wrapper
        run: gradle wrap

      - name: Build with Gradle
        run: ./gradlew build
        shell: bash

순서대로 설명하면,

  • develop 브랜치 PR 시
  • Action을 수행할 서버는 Ubuntu로
  • 기본적인 체크아웃을 수행하고
  • JDK 버전을 설정하고
  • 성능 향상을 위해 Gradle 캐싱 작업 후
  • Secret에 저장한 Config 파일 Write
  • Gradle Build

와 같은 과정으로 이루어집니다.



CI Test

이제 간단하게 develop에서 새로운 브랜치를 파서 간단하게 리드미를 수정 후 PR을 올리면..

위와 같이 CI Action을 수행합니다.

빌드에 성공하면 "All checks have passed" 문구가 표시됩니다.

이제 PR 공간에서 해당 브랜치를 반영하면 빌드에 성공할 수 있는지 간편하게 확인할 수 있습니다!


다음 포스팅에선 Docker를 이용한 CD 구축으로 찾아뵙겠습니다~



profile
내일은 개발왕 😎

0개의 댓글