Skip to content

Merge pull request #169 from 2025TUKCOMCD/#82-AQ-delete #98

Merge pull request #169 from 2025TUKCOMCD/#82-AQ-delete

Merge pull request #169 from 2025TUKCOMCD/#82-AQ-delete #98

Workflow file for this run

name: Backend CI/CD Pipeline
on:
push:
paths:
- 'HalfFifty_BE/**'
pull_request:
paths:
- 'HalfFifty_BE/**'
jobs:
# 1. 테스트 및 빌드
test:
name: Test and Build Backend
runs-on: ubuntu-latest
steps:
# 1.1 코드 체크아웃
- name: Checkout code
uses: actions/checkout@v3
# 1.2 JDK 17 설치
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'
- name: Add execute permissions to Gradlew
run: chmod +x ./gradlew
working-directory: HalfFifty_BE
# Gradle 빌드 및 테스트
- name: Build and Test
working-directory: HalfFifty_BE
env:
DB_DRIVER_CLASS_NAME: ${{ secrets.DB_DRIVER_CLASS_NAME }}
DB_URL: ${{ secrets.DB_URL }}
DB_USERNAME: ${{ secrets.DB_USERNAME }}
DB_PASSWORD: ${{ secrets.DB_PASSWORD }}
run: |
./gradlew clean build
- name: Verify JAR File
working-directory: HalfFifty_BE
run: ls -la build/libs/
# 빌드 결과물을 아티팩트로 업로드
- name: Upload Build Artifacts
uses: actions/upload-artifact@v3
with:
name: build-artifact
path: HalfFifty_BE/build/libs/*.jar
deploy:
name: Deploy Backend
needs: test
if: github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
steps:
# 1. 코드 체크아웃
- name: Checkout code
uses: actions/checkout@v3
# 2. JDK 17 설치
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'
# 3. 빌드 아티팩트 다운로드
- name: Download Build Artifacts
uses: actions/download-artifact@v3
with:
name: build-artifact
# 4. 호스트 키 등록
- name: Add Host Key to known_hosts
run: |
mkdir -p ~/.ssh
ssh-keyscan -H ${{ secrets.AWS_IP }} >> ~/.ssh/known_hosts
# 5. SSH 키 파일 생성 및 권한 설정
- name: Set permissions for private key
run: |
echo "${{ secrets.AWS_KEY }}" > ${{ github.workspace }}/HalfFifty.pem
chmod 600 ${{ github.workspace }}/HalfFifty.pem
# 6. SSH 연결 테스트
- name: Test SSH Connection
run: |
ssh -i HalfFifty.pem ubuntu@${{ secrets.AWS_IP }} "echo 'SSH connection successful'"
# 7. JAR 파일 EC2로 업로드
- name: Upload JAR to EC2
uses: appleboy/[email protected]
with:
host: ${{ secrets.AWS_IP }}
username: ${{ secrets.AWS_USER }}
key: ${{ github.workspace }}/HalfFifty.pem
source: /home/runner/work/HalfFifty/HalfFifty/HalfFifty_BE-0.0.1-SNAPSHOT.jar
target: ~/HalfFifty_BE-0.0.1-SNAPSHOT.jar
debug: true
- name: Debug Key File
run: |
ls -la ${{ github.workspace }}/HalfFifty.pem
cat ${{ github.workspace }}/HalfFifty.pem
# 8. Docker Compose를 사용하여 EC2에서 배포
- name: Deploy to EC2 using Docker Compose
uses: appleboy/[email protected]
with:
host: ${{ secrets.AWS_IP }}
username: ${{ secrets.AWS_USER }}
key: ${{ github.workspace }}/HalfFifty.pem
script: |
cd ~
docker-compose down || true
docker-compose up -d --build