Github Action - SpringBoot에 CI 적용

dragonappear·2022년 7월 9일
0

CI/CD

목록 보기
1/2

출처

제목: "[Github Action] SpringBoot 프로젝트에 CI(Continuous Integration) 적용하기"
작성자: tistory.com(earth-95)
작성자 수정일: 2021년10월12일
링크: https://earth-95.tistory.com/107
작성일: 2022년7월9일

글 작성 계기

  • 불과 2년전에는 CI가 뭔지 CD가 뭔지도 몰랐다. 그래서 코드에 변화가 생길때마다 EC2에서 깃허브 레포지토리에서 PULL을 하였다. 이게 정말 귀찮았다. 정말 귀찮았다! 하루에 EC2에 코드 반영을 3번한다고 치면 일주일에 21번, 똑같은 커맨드를 치는게 얼마나 귀찮은가. 또 EC2 서버에 접속을 매번 해야 한다. 이게 정말 귀찮았다.

  • 세상에는 뛰어나신 분들이 많아서, 귀찮은 것들(ex: 코드 테스트, 빌드 등등 여러 작업 후 코드 배포)을 해결해주는 도구들을 개발했다는 것을 알고나서 CI 툴(Jenkins,TravisCI,Github Action)을 조금 알아보았다.

  • 젠킨스,travic CI 둘 다 엄청 깊게 써보지는 않았지만, 장단점이 확실히 있었다. 젠킨스는 많은 사람들이 사용한 덕분에 레퍼런스도 많았지만, 젠킨스를 위한 별도의 EC2를 생성해야 한다는 단점이 있었고, travis CI는 사용하기에 엄청 편리한데, 일정 기능이상 사용하려면 돈을 지불해야 한다는 점 등등이 있었다.

  • 버전관리를 위해 원격 저장소에 코드를 어차피 올려야 하는데, Github Action은 깃허브 브랜치에 push 되면 그 이후 작업들을 github 안에서 진행된다는 점이 사용하기에 편리해보였고, 다른 툴들보다 내가 사용하기에 쉬워보였다.

  • 하여간 이러한 점들 때문에 깃허브 액션을 사용해보았고, 위 출처 글을 보고 글을 작성하게 되었다.


Github Action을 통해 CI 적용하기

먼저 적용하고자 하는 깃허브 레포지토리에 접근하여 Actions 탭을 통해 set up a workflow yourself를 클릭하여 신규 workflow를 생성한다.

생성하는 workflow 명은 yml 확장자로 구성하면 되며, .github/workflows 내에 존재해야 한다. 파일명은 무관하다.


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

위 코드를 github action에 적용하면 , dev, feat/* 브랜치로 push 또는 PR 시 위와 같이 github action이 수행되는 것을 확인할 수 있다.

0개의 댓글