DEVELOPMENT TOOLS/Git

[Github Action] SpringBoot 프로젝트에 CI(Continuous Integration) 적용하기

EARTH_ROOPRETELCHAM 2021. 10. 12. 01:30
728x90
반응형

들어가기 전에

Github Action을 통해 CI를 적용한 Springboot 환경은 다음과 같습니다. 만약, maven을 사용하신다면 하기 내용을 통해 적용이 어려울 수 있는 점 참고 부탁드립니다.

plugins {
	id 'org.springframework.boot' version '2.4.10'
	id 'io.spring.dependency-management' version '1.0.11.RELEASE'
	id 'java'
}

group = 'jpabook'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'

Github Action을 통해 CI(Continuous Integration) 적용하기

먼저 적용하고자 하는 github repository에 접근하여 Actions 탭을 통해 set up a workflow yourself를 클릭하여 신규 workflow를 생성합니다. 생성하는 workflow 명은 yml 확장자로 구성하면 되며, .github/workflows 내에 존재한다면, 파일명은 어떤것으로 해도 상관없습니다.

신규 workflow 생성하기

위에 작성한 ci.yml 파일은 하기에 정리하였습니다.

name: earth-github-action-test CI

# 하기 내용에 해당하는 이벤트 발생 시 github action 동작
on:
  push: # feature/*와 develop 브랜치에서 push가 일어났을 때 github action 동작
    branches:
      - 'feature/*'
      - 'develop'
  pull_request: # feature/*와 develop 브랜치에서 PR이 일어났을 때 github action 동작
    branches:
      - 'feature/*'
      - 'develop'

# 참고사항
# push가 일어난 브랜치에 PR이 존재하면, push에 대한 이벤트와 PR에 대한 이벤트 모두 발생합니다.

jobs:
  build: 
    runs-on: ubuntu-latest # 실행 환경 지정

    steps:
      - uses: actions/checkout@v2 # github action 버전 지정(major version)

      - name: Set up JDK 11 # JAVA 버전 지정
        uses: actions/setup-java@v1
        with:
          java-version: 11 

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

      - name: Build with Gradle # 실제 application build(-x 옵션을 통해 test는 제외)
        run: ./gradlew build -x test

      - name: Test with Gradle # test application build
        run: ./gradlew test

      - name: Publish Unit Test Results # test 후 result를 보기 위해 추가
        uses: EnricoMi/publish-unit-test-result-action@v1
        if: ${{ always() }} # test가 실패해도 report를 남기기 위해 설정
        with:
          files: build/test-results/**/*.xml

ci.yml 결과물

위 스크립트를 github action에 적용하면, develop, feature/* 브랜치로 push 또는 PR 시 위와 같이 github action이 수행되는 것을 확인할 수 있습니다.

참고자료

728x90
반응형