Repository navigation
72 lines (60 loc) · 2.21 KB
/
Copy pathdeploy.yml
File metadata and controls
72 lines (60 loc) · 2.21 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
name: CI/CD Pipeline
on:
push:
branches: [ "main" ]
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
#1. 소스 코드 가져오기
- name: Checkout code
uses: actions/checkout@v4
#2. Java 25 환경 설정 및 Gradle 캐싱
- name: Set up JDK 25
uses: actions/setup-java@v4
with:
java-version: '25'
distribution: 'temurin'
cache: gradle
#3. application-prod.yml 보안 정보 주입
- name: Create application-prod.yml
run: |
mkdir -p src/main/resources
echo "${{ secrets.APP_PROD_YML }}" > src/main/resources/application-prod.yml
#4. 빌드 (수동: ./gradlew clean build)
- name: Build with Gradle
run: |
chmod +x gradlew
./gradlew clean build -x test
#5. 도커 이미지 빌드 (수동: --platform linux/amd64 적용)
- name: Build and Save Docker Image
run: |
docker build --platform linux/amd64 -t begroom-back .
docker save -o begroom-back.tar begroom-back
sudo chmod 644 begroom-back.tar
#6. EC2로 파일 전송 (수동: scp 명령어 자동화)
- name: Copy Files to EC2
uses: appleboy/scp-action@v0.1.7
with:
host: ${{ secrets.EC2_HOST }}
username: ${{ secrets.EC2_USERNAME }}
key: ${{ secrets.EC2_SSH_KEY }}
source: "begroom-back.tar,docker-compose.yml"
target: "/home/ec2-user"
#7. EC2에서 실행 (수동: ssh 접속 후 실행 로직)
- name: Deploy to EC2
uses: appleboy/ssh-action@v1.0.3
with:
host: ${{ secrets.EC2_HOST }}
username: ${{ secrets.EC2_USERNAME }}
key: ${{ secrets.EC2_SSH_KEY }}
script: |
export MYSQL_ROOT_PASSWORD=${{ secrets.MYSQL_ROOT_PASSWORD }}
export MYSQL_USER_PASSWORD=${{ secrets.MYSQL_USER_PASSWORD }}
export JWT_SECRET_KEY=${{ secrets.JWT_SECRET_KEY }}
cd /home/ec2-user
docker load -i begroom-back.tar
docker-compose down
docker-compose up -d
docker image prune -f
rm begroom-back.tar