사이드 프로젝트를 진행 하면서 CI/CD까지 구축해보려고 한다!
회사에서는 Jenkins와 CodeDeploy를 써서 CI/CD가 구축 되어져있었는데
나는 잘 구축된 배포 프로세스를 사용하고 따르기만 했었다!
그래서 내가 한번 직접 구축해보기로 결정했다.
처음에 Jenkins로 하려고 했는데
Github Actions라고 간편한 서비스가 있어서 Github Actions를 먼저 사용하고 나중에 사이즈가 좀 더 커지면 jenkins를 사용해보자!
1. Github Actions 설정
New workflow를 누르면 다양한 것들이 나오는데
나는 Gradle 프로젝트를 빌드할것이기 때문에 Java with Gradle을 선택!
2. gradle.yml 설정
# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.
# This workflow will build a Java project with Gradle and cache/restore any dependencies to improve the workflow execution time
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-java-with-gradle
name: Java CI with Gradle
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
permissions:
contents: read
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up JDK 11
uses: actions/setup-java@v3
with:
java-version: '11'
distribution: 'temurin'
# - name: Build with Gradle
# uses: gradle/gradle-build-action@bd5760595778326ba7f1441bcf7e88b49de61a25 # v2.6.0
# with:
# arguments: build
-- 주석처리된 내용이 default --
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Cache Gradle dependencies
uses: actions/cache@v2
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: |
${{ runner.os }}-gradle-
- name: Build with Gradle
run: ./gradlew build
들어가면 기본적으로 이렇게 세팅 되어져 있다!
Java 버전이나 그런 내용들을 자기한테 맞게 입력하면 된다!
또 Github에는 보안을 위해서 key값들이 들어있는 properties 정보들을 그대로 올리면 안되는데
Github Actions는 Github에 push된 내용들을 가지고 build가 되기 때문에 yml파일들이 필요하다..
그래서 yml파일에 중요한 정보들을
이런식으로 환경변수로 관리를 하도록 하고
나는 인텔리제이를 활용해서 로컬에 환경변수를 세팅하는 법을 검색해서 적용했다!
그러면 로컬환경에서도 저렇게 관리가 가능!
Secrets에서 Key와 Value로 저장해주면 완료!
그러면 위에서 보였던 것 처럼 ${{secrets.KEY}} 로 사용 가능하다!
3. Push하기
Actions에 들어가면 이렇게 진행 상황이 나오는데..
나는 계속 빌드에서 실패했다..
로그를 보니 Test코드의 문제인것 같은데
계속 삽질하다가.. 결국 못찾고 졸려서 Test코드를 주석처리하고 빌드하니 성공해서 우선 잤다 ..
Junit5 코드들이 왜 안되는지 찾아보고 해결하고 추가로 포스팅 해야겠다..!
💦 참고자료
https://stalker5217.netlify.app/devops/github-action-aws-ci-cd-1/
+ 추가
[Github Actions] Spring Boot 프로젝트 CI 구축하기 (2) 에러 수정
Github Actions를 이용해 CI를 구축하던중 로컬에서도 그렇고 Github Actions에서도 그렇고 Gradle Build 중에 자꾸 다음 사진처럼 에러가 났었다.. 테스트 코드에서 DB 연결이 문제가 있는것 같다는 것은 확
jihoon2723.tistory.com
Build 시 Test에서 에러 나오는 문제 해결!