Skip to content

pull request 템플릿 추가 #11

pull request 템플릿 추가

pull request 템플릿 추가 #11

Workflow file for this run

name: CI-CD_Pipeline
permissions:
contents: read
packages: write
id-token: write
on:
push:
branches: [ main, develop ]
pull_request:
branches: [ main, develop ]
workflow_dispatch:
jobs:
tests:
strategy:
fail-fast: false
matrix:
os: [ ubuntu-latest ]
include:
- os: ubuntu-latest
gradle_cmd: "./gradlew"
report_path: "backend/build/reports/tests"
domain_tasks: "testUser testExchange testTrade_log testWallet testCoin"
runs-on: ${{ matrix.os }}
env:
SPRING_PROFILES_ACTIVE: test
JWT_SECRET_KEY: ${{ secrets.JWT_SECRET_KEY }}
REDIS_PORT: ${{ secrets.REDIS_PORT }}
REDIS_HOST: ${{ secrets.REDIS_HOST }}
steps:
- uses: actions/checkout@v4
- name: Set up JDK 21
uses: actions/setup-java@v4
with:
java-version: '21'
distribution: 'temurin'
cache: gradle
# ✅ gradlew 실행 권한 부여
- name: Grant execute permission for gradlew
run: chmod +x backend/gradlew
- name: Run unit, and domain tests
run: ${{ matrix.gradle_cmd }} clean test
working-directory: backend
- name: Upload Test Reports
if: always()
uses: actions/upload-artifact@v4
with:
name: test-reports-${{ matrix.os }}
path: ${{ matrix.report_path }}
retention-days: 7
build-artifacts:
needs: tests
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main' # ✅ main 브랜치일 때만 실행
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
distribution: temurin
java-version: 21
cache: gradle
# ✅ gradlew 실행 권한 부여
- name: Grant execute permission for gradlew
run: chmod +x backend/gradlew
- name: Gradle bootJar
working-directory: backend
run: ./gradlew --no-daemon clean bootJar -x test
- name: Copy JAR to dist
working-directory: backend
run: |
mkdir -p dist
cp $(ls build/libs/*.jar | grep -v plain | head -n 1) dist/app.jar
- name: Upload backend jar
uses: actions/upload-artifact@v4
with:
name: backend-jar
path: backend/dist/app.jar
docker-build:
needs: build-artifacts
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main' # ✅ main 브랜치일 때만 실행
env:
REGISTRY: ghcr.io
IMAGE_PREFIX: ${{ github.repository_owner }}
steps:
- uses: actions/checkout@v4
- name: Download backend jar
uses: actions/download-artifact@v4
with:
name: backend-jar
path: backend/dist
- uses: docker/setup-buildx-action@v3
- uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build & push backend (runtime-only)
uses: docker/build-push-action@v6
with:
context: backend
file: backend/Dockerfile
push: true
tags: |
${{ env.REGISTRY }}/${{ env.IMAGE_PREFIX }}/back9-backend:${{ github.sha }}
${{ env.REGISTRY }}/${{ env.IMAGE_PREFIX }}/back9-backend:latest
cache-from: type=gha
cache-to: type=gha,mode=max