diff --git a/.github/workflows/CICD_dev_be_merge.yml b/.github/workflows/CICD_dev_be_merge.yml new file mode 100644 index 000000000..e247f5516 --- /dev/null +++ b/.github/workflows/CICD_dev_be_merge.yml @@ -0,0 +1,54 @@ +name: Spring Boot & Gradle CICD Jobs (With. dev branches push) + +on: + push: + branches: [ dev ] + +jobs: + build: + # 실행 환경 (Git Runners 개인 서버) + runs-on: self-hosted + steps: + - uses: actions/checkout@v3 + - name: Set up JDK 17 + uses: actions/setup-java@v3 + with: + java-version: '17' + distribution: 'adopt' + + # application.yml 파일 설정 + - name: resources 폴더 생성 + run: | + mkdir -p ./backend/src/main/resources + + - name: yml 파일 생성 + run: | + echo "${{ secrets.APPLICATION_DEFAULT_DEV }}" > ./backend/src/main/resources/application.yml + echo "${{ secrets.APPLICATION_DEV }}" > ./backend/src/main/resources/application-dev.yml + echo "${{ secrets.APPLICATION_DB }}" > ./backend/src/main/resources/database.yml + + # gradlew를 실행시키기 위해 권한 부여 + - name: Gradlew에게 실행권한 부여 + run: chmod +x ./backend/gradlew + + # 멀티모듈 빌드하기 + - name: 멀티모듈 전체 빌드 + run: | + cd ./backend + ./gradlew clean build -x test + + deployment: + name: docker deployment + needs: build # depends on + runs-on: self-hosted + + steps: + - name: 도커 컴포즈 복사 + run: echo "${{ secrets.DOCKER_COMPOSE_DEV }}" > ./backend/docker-compose.yml + + - name: 도커 컴포즈 재실행 + run: | + cd ./backend + docker-compose down + docker rmi `docker images | grep gitudy | awk '{print $3}'` + docker-compose up -d diff --git a/.github/workflows/CI_dev_be_pull_request.yml b/.github/workflows/CI_dev_be_pull_request.yml index 1fbfd603d..90dbb09a4 100644 --- a/.github/workflows/CI_dev_be_pull_request.yml +++ b/.github/workflows/CI_dev_be_pull_request.yml @@ -40,6 +40,7 @@ jobs: test: runs-on: self-hosted + needs: build steps: - name: Gradle 테스트 run: | @@ -49,3 +50,17 @@ jobs: - name: yaml 파일 변경 run: | echo "${{ secrets.APPLICATION_DEFAULT_DEV }}" > ./backend/src/main/resources/application.yml + + coverage: + runs-on: self-hosted + needs: test + steps: + - name: 테스트 커버리지를 PR에 코멘트로 등록합니다 + id: jacoco + uses: madrapps/jacoco-report@v1.2 + with: + title: 📝 테스트 커버리지 리포트 + paths: ${{ github.workspace }}/backend/build/reports/jacoco/test/jacocoTestReport.xml + token: ${{ secrets.GITHUB_TOKEN }} + min-coverage-overall: 50 + min-coverage-changed-files: 50 diff --git a/backend/Dockerfile-dev b/backend/Dockerfile-dev new file mode 100644 index 000000000..22daaaaaa --- /dev/null +++ b/backend/Dockerfile-dev @@ -0,0 +1,11 @@ +# Dockerfile-dev +FROM openjdk:17-jdk-slim + +ARG PROFILE +ENV PROFILE=${PROFILE} + +ARG JAR_FILE=/build/libs/backend-0.0.1-SNAPSHOT.jar + +COPY ${JAR_FILE} /app.jar + +ENTRYPOINT ["java","-jar","-Dspring.profiles.active=${PROFILE}", "/app.jar"] diff --git a/backend/build.gradle b/backend/build.gradle index f7e6c02e1..d7ced5b3e 100644 --- a/backend/build.gradle +++ b/backend/build.gradle @@ -2,6 +2,7 @@ plugins { id 'java' id 'org.springframework.boot' version '3.2.1' id 'io.spring.dependency-management' version '1.1.4' + id 'jacoco' } group = 'com.example' @@ -67,3 +68,20 @@ dependencies { tasks.named('test') { useJUnitPlatform() } + +test { + finalizedBy jacocoTestReport +} + +jacoco { + toolVersion = "0.8.11" // 버전 명시 +} + +jacocoTestReport { + dependsOn test + reports { + xml.required.set(true) + csv.required.set(false) + html.required.set(true) + } +}