Skip to content

[Refactor] 크로스 도메인 수정 #76

[Refactor] 크로스 도메인 수정

[Refactor] 크로스 도메인 수정 #76

Workflow file for this run

name: Deploy to EC2
on:
push:
branches: [ main, develop ]
jobs:
deploy:
runs-on: ubuntu-latest
env:
EC2_USER: ubuntu
EC2_KEY: ${{ secrets.EC2_KEY }}
EC2_MAIN_HOST: ${{ secrets.EC2_MAIN_HOST }}
EC2_DEV_HOST: ${{ secrets.EC2_DEV_HOST }}
APPLICATION_YML_PROD: ${{ secrets.APPLICATION_YML_PROD }}
APPLICATION_YML_DEV: ${{ secrets.APPLICATION_YML_DEV }}
steps:
- name: Checkout source
uses: actions/checkout@v4
- name: Set up JDK
uses: actions/setup-java@v4
with:
java-version: '17' # 또는 사용하는 Java 버전으로 변경
distribution: 'temurin'
- name: Cache Gradle packages
uses: actions/cache@v3
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: |
${{ runner.os }}-gradle-
- name: Make gradlew executable
run: chmod +x ./gradlew
- name: Test build locally first
run: ./gradlew clean build -x test --no-daemon --refresh-dependencies
- name: Set deployment variables
id: vars
run: |
if [[ "${{ github.ref }}" == "refs/heads/main" ]]; then
echo "HOST=${EC2_MAIN_HOST}" >> "$GITHUB_ENV"
echo "DOCKER_YML=docker-compose.prod.yml" >> "$GITHUB_ENV"
echo "${APPLICATION_YML_PROD}" > yml.txt
else
echo "HOST=${EC2_DEV_HOST}" >> "$GITHUB_ENV"
echo "DOCKER_YML=docker-compose.dev.yml" >> "$GITHUB_ENV"
echo "${APPLICATION_YML_DEV}" > yml.txt
fi
- name: Create PEM file
run: |
echo "$EC2_KEY" | base64 -d > ec2-key.pem
chmod 600 ec2-key.pem
- name: Send code and application.yml.b64 to EC2
run: |
rsync -av --exclude='.git' --exclude='.gradle' --exclude='build' --delete -e "ssh -i ec2-key.pem -o StrictHostKeyChecking=no" ./ $EC2_USER@$HOST:/home/ubuntu/app/
scp -i ec2-key.pem -o StrictHostKeyChecking=no yml.txt $EC2_USER@$HOST:/home/ubuntu/app/application.yml.b64
- name: Build and restart container on EC2
run: |
ssh -i ec2-key.pem -o StrictHostKeyChecking=no $EC2_USER@$HOST << EOF
set -e
cd /home/ubuntu/app
# 전송된 파일들 확인
echo "=== 전송된 파일 목록 확인 ==="
find src -name "*HallResponse*" || echo "HallResponse 파일 없음"
ls -la src/main/java/spring/encorely/dto/ || echo "dto 폴더 없음"
# Git 상태 확인
echo "=== Git 브랜치 확인 ==="
git branch -a || echo "Git 정보 없음"
git log --oneline -3 || echo "Git 로그 없음"
mkdir -p src/main/resources
base64 -d application.yml.b64 > src/main/resources/application.yml
chmod +x ./gradlew
# 빌드 시도
./gradlew clean build -x test --no-daemon --refresh-dependencies || {
echo "=== 빌드 실패 시 상세 정보 ==="
echo "현재 디렉토리: \$(pwd)"
echo "Java 버전: \$(java -version)"
ls -la
exit 1
}
docker-compose -f /home/ubuntu/app/$DOCKER_YML down
docker-compose -f /home/ubuntu/app/$DOCKER_YML up --build -d
EOF