-
Notifications
You must be signed in to change notification settings - Fork 0
88 lines (73 loc) · 3.06 KB
/
Copy pathdeploy-to-dev-ec2.yml
File metadata and controls
88 lines (73 loc) · 3.06 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
name: Deploy to Dev EC2
on:
workflow_dispatch:
jobs:
deploy:
name: Build and Deploy to EC2
runs-on: ubuntu-latest
environment: dev
steps:
- name: Checkout source code
uses: actions/checkout@v3
- name: Set up JDK 21
uses: actions/setup-java@v3
with:
distribution: 'corretto'
java-version: '21'
- name: Grant execute permission for Gradle
run: chmod +x gradlew
- name: Fix Docker API compatibility for Testcontainers
run: echo 'api.version=1.44' > ~/.docker-java.properties
- name: Build with Gradle
run: ./gradlew test bootJar
- name: Copy JAR to EC2
uses: appleboy/scp-action@v0.1.7
with:
host: ${{ secrets.EC2_HOST }}
username: ubuntu
key: ${{ secrets.EC2_SSH_PRIVATE_KEY }}
source: build/libs/*.jar
target: ~/saerok/
strip_components: '2'
- name: Restart application on EC2
uses: appleboy/ssh-action@v1
with:
host: ${{ secrets.EC2_HOST }}
username: ubuntu
key: ${{ secrets.EC2_SSH_PRIVATE_KEY }}
debug: true
script: |
set -euxo pipefail
cd ~/saerok
echo ">>> 현재 위치: $(pwd)"
echo ">>> 파일:"
ls -al
# JAR 확인
JAR_NAME=$(ls -1t *.jar | head -n1)
[ -n "$JAR_NAME" ] || { echo "❌ JAR 없음"; exit 2; }
echo ">>> 선택된 JAR: $JAR_NAME"
# 기존 프로세스 종료
pkill -f "$JAR_NAME" || true
# 백그라운드 실행
DB_URL="${{ secrets.DB_URL }}" \
DB_USERNAME="${{ secrets.DB_USERNAME }}" \
DB_PASSWORD="${{ secrets.DB_PASSWORD }}" \
IAM_ACCESS_KEY="${{ secrets.IAM_ACCESS_KEY }}" \
IAM_SECRET_KEY="${{ secrets.IAM_SECRET_KEY }}" \
UPLOAD_IMAGE_BUCKET_NAME="${{ vars.UPLOAD_IMAGE_BUCKET_NAME }}" \
UPLOAD_IMAGE_DOMAIN="${{ vars.UPLOAD_IMAGE_DOMAIN }}" \
DEX_IMAGE_BUCKET_NAME="${{ vars.DEX_IMAGE_BUCKET_NAME }}" \
DEX_IMAGE_DOMAIN="${{ vars.DEX_IMAGE_DOMAIN }}" \
APPLE_CLIENT_ID="${{ secrets.APPLE_CLIENT_ID }}" \
APPLE_TEAM_ID="${{ secrets.APPLE_TEAM_ID }}" \
APPLE_KEY_ID="${{ secrets.APPLE_KEY_ID }}" \
APPLE_PRIVATE_KEY="${{ secrets.APPLE_PRIVATE_KEY }}" \
JWT_SECRET="${{ secrets.JWT_SECRET }}" \
KAKAO_ADMIN_KEY="${{ secrets.KAKAO_ADMIN_KEY }}" \
KAKAO_CLIENT_ID="${{ secrets.KAKAO_CLIENT_ID }}" \
KAKAO_REDIRECT_URI="${{ secrets.KAKAO_REDIRECT_URI }}" \
KAKAO_CLIENT_SECRET="${{ secrets.KAKAO_CLIENT_SECRET }}" \
KMS_KEY_ID="${{ secrets.KMS_KEY_ID }}" \
FIREBASE_ADMIN_KEY="${{ secrets.FIREBASE_ADMIN_KEY }}" \
nohup java -Duser.timezone=Asia/Seoul -jar $JAR_NAME --spring.profiles.active=dev > app.log 2>&1 &
echo "✅ 배포 완료"