-
Notifications
You must be signed in to change notification settings - Fork 1
68 lines (59 loc) · 2.15 KB
/
deploy.yml
File metadata and controls
68 lines (59 loc) · 2.15 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
# 워크플로우의 전체 이름
name: 픽픽 CI/CD 배포
# 워크플로우가 언제 실행될지 정의하는 트리거
on:
# main 브랜치에 push 이벤트가 발생했을 때 실행
push:
branches: [ "main" ]
# 실행될 작업(Job)들을 정의
jobs:
# '빌드와 배포' 작업
build-and-deploy:
# 이 작업이 실행될 가상 머신의 종류 (최신 우분투)
runs-on: ubuntu-latest
# 작업 내에서 순서대로 실행될 단계(Step)들
steps:
# 1. 소스 코드 체크아웃
- name: 소스 코드 체크아웃
uses: actions/checkout@v4
# 2. JDK 17 설치
- name: JDK 17 설치
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
# 3. Gradle 캐시 설정
# 매번 Gradle 의존성 받을 필요 없어 빌드 속도 빨라짐
- name: Gradle 캐시 설정
uses: actions/cache@v4
with:
path: ~/.gradle/caches
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*') }}
restore-keys: |
${{ runner.os }}-gradle-
# 4. gradlew 실행 권한 부여
- name: gradlew 실행 권한 부여
run: chmod +x ./gradlew
# 5. Gradle로 빌드하기
- name: Gradle로 빌드하기
run: ./gradlew bootJar
# 6. EC2에 배포 스크립트와 JAR 파일 업로드
- name: EC2에 파일 업로드
uses: appleboy/scp-action@master
with:
host: 3.39.139.208
username: ubuntu
key: ${{ secrets.EC2_SSH_KEY }}
source: "build/libs/*.jar,deploy.sh" # .jar 파일과 deploy.sh 파일을 함께 업로드
target: "/home/ubuntu/app"
# 7. EC2에서 배포 스크립트 실행
- name: EC2에서 배포 스크립트 실행
uses: appleboy/ssh-action@master
with:
host: 3.39.139.208 # EC2 퍼블릿 IP
username: ubuntu
key: ${{ secrets.EC2_SSH_KEY }}
script: |
cd /home/ubuntu/app
chmod +x deploy.sh # 스크립트 실행 권한 부여
sudo ./deploy.sh # 스크립트 실행