깃허브 액션을 통하여 CI를 구축 해보고자 한다. CD는 AWS 과금 이슈 떄문에 CI 부터 해보고자 합니다
name: Java CI with Gradle
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
permissions:
contents: read
jobs:
build:
runs-on: ubuntu-latest
steps:
# 1) 워크플로우 실행 전 기본으로 체크아웃 필요
- uses: actions/checkout@v3
# 2) JDK 11버전 설치, 다른 jdk 버전을 사용한다면 수정 필요
- name: Set up JDK 11
uses: actions/setup-java@v3
with:
java-version: '11'
distribution: 'temurin'
#3) # 3) Gradle 사용. arguments 를 붙이면 뒤에 그대로 실행된다고 생각하면 됨
# 이 워크플로우는 gradle clean build 를 수행함
- name: Build with Gradle
uses: gradle/gradle-build-action@67421db6bd0bf253fb4bd25b31ebb98943c375e1
with:
arguments: build
java.lang.IllegalStateException at DefaultCacheAwareContextLoaderDelegate.java:98 Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException at ConstructorResolver.java:800 Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException at ConstructorResolver.java:800 Caused by: org.springframework.beans.factory.BeanCreationException at BeanDefinitionValueResolver.java:342 Caused by: org.springframework.beans.factory.BeanCreationException at ConstructorResolver.java:658 Caused by: org.springframework.beans.BeanInstantiationException at SimpleInstantiationStrategy.java:185 Caused by: java.lang.IllegalStateException at Assert.java:76
-
구글링을 해보니 MYSQL 오류라는데 프로젝트 진행을 오라클로 진행을 하여서
- name: Setup Oracle Database
uses: sath89/oracle-xe-11g-action@v1
with:
character_set_server: 'AL32UTF8'
oracle_sid: 'xe'
oracle_home: '/u01/app/oracle/product/11.2.0/xe'
oracle_base: '/u01/app/oracle'
oracle_password: 'your_password'
해당 코드에 맞게끔 YML 에 추가를 해도 여전히 해결 되지 않았다
그러고선 우연히 테스트 코드를 작성하지 않았는데 CI 빌드 그래들시 테스트쪽에서 빌드가 진행되어 오류 나서 해결을 했다는 블로그를 보니 Application.yml 에서 다음과 같은 코드를 지우고 나니 해결이 되었다.., 너무 허무하다....
tasks.named('test') {
useJUnitPlatform()
}
name: Java CI with Gradle on: #이 워크플로우를 어떤 이벤트 트리거에 연결할지 지정합니다. push: branches: [ "main" ] ## main에 push가 되거나 pull_request: branches: [ "main" ] ## pull request가 될시에 진행 permissions: ##이 워크플로우가 읽을 수 있는 콘텐츠 권한을 설정합니다. contents: read jobs: ##이 워크플로우에서 실행할 작업을 정의합니다. build: runs-on: ubuntu-latest ##작업이 실행되는 환경을 지정합니다. 여기서는 최신 버전의 Ubuntu를 사용합니다. steps: ##작업을 수행하기 위해 필요한 단계를 정의합니다. - uses: actions/checkout@v3 ##현재 리포지토리의 코드를 체크아웃하여 작업 디렉토리로 가져오는 작업입니다. - name: Set up JDK 11 uses: actions/setup-java@v3 ##JDK를 설정하기 위한 GitHub Actions 액션을 사용합니다. with: java-version: '11' distribution: 'temurin' - name: Run chmod to make gradlew executable run: chmod +x ./gradlew ##chmod 명령을 사용하여 gradlew 파일의 실행 권한을 변경합니다. - name: Build with Gradle run: ./gradlew build #프로젝트를 빌드합니다. ```
CI 테스트가 되고 머지를 성공적으로 했을때 이미지이다.
CD도 진행을 해야 하는데 AWS 를 사용하여 프로젝트를 수동으로 배포 하고나서 몇개월이 지나서 청구 메일이 계속와 확인을 해보니 과금 때문에 문의를 하여 결제 금액 일부를 면제 받고 중지를 해놓은 상태라 해제를 하고나서 다시 진행을 해볼 예정이다...
참고문헌
https://enant.tistory.com/29
https://devhooney.tistory.com/172
https://a-half-human-half-developer.tistory.com/168