-
Notifications
You must be signed in to change notification settings - Fork 0
90 lines (76 loc) · 2.92 KB
/
ci-cd.yml
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
89
90
name: Main Branch CI Pipeline
on:
pull_request:
branches:
- main
push:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
env:
# 데이터베이스 환경변수 (RDS)
DB_URL: ${{ secrets.DB_URL }}
DB_USERNAME: ${{ secrets.DB_USERNAME }}
DB_PASSWORD: ${{ secrets.DB_PASSWORD }}
## Redis 환경변수
REDIS_HOST: ${{ secrets.REDIS_HOST }}
REDIS_PORT: ${{ secrets.REDIS_PORT }}
# FCM 환경변수
BOTTLER_FCM_BASE64: ${{ secrets.BOTTLER_FCM_BASE64 }}
# AWS 환경변수
AWS_ACCESS_KEY: ${{ secrets.AWS_ACCESS_KEY }}
AWS_SECRET_KEY: ${{ secrets.AWS_SECRET_KEY }}
AWS_REGION: ${{ secrets.AWS_REGION }}
# ECR 환경변수
ECR_URI: ${{ secrets.ECR_URI }}
# S3 환경변수
BUCKET_NAME: ${{ secrets.BUCKET_NAME }}
BASE_URL: ${{ secrets.BASE_URL }}
# gpt 환경변수
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
steps:
- name: 코드 가져오기
uses: actions/checkout@v4
- name: JDK 17 설정
uses: actions/setup-java@v4
with:
java-version: 17
distribution: temurin
deploy:
# 우리가 등록한 Github Self Hosted Runner 에서 실행합니다
runs-on: self-hosted
# 잡의 구체적인 단계입니다
steps:
# 처음 _work 폴더에 github actions 프로그램이 파일을 수정할 권한이 없어서, 권한을 부여해 주기 위한 작업입니다
# 이 명령을 통해서 이미 있는 폴더에 git pull 을 사용할 수 있습니다
- name: change permission
# 마지막 jwp-shopping-order 는 repository 이름입니다.
run: |
sudo chown -R ubuntu:ubuntu /home/ubuntu/actions-runner/_work/WEB1_1_Postman_BE
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'corretto'
# git clone, git pull, git fetch 같은 작업을 단순화 하기 위한 action 입니다. actions/checkout@v3
# 미리 다른 개발자가 만들어둔 action 을 사용한다는 의미입니다
- uses: actions/checkout@v3
# bootjar 를 만들고, 실행시키는 과정을 담고 있습니다
- name: gradle build
# 처음에 ./gradlew 파일을 실행할 수 없어서, chmod 로 실행 가능하도록 바꿔줍니다
run: |
chmod +x ./gradlew
./gradlew build -x test
# 80 번 포트가 이미 있다면, 그 프로그램을 종료합니다
- name: kill 80 port if exist
run: |
if sudo lsof -i :80; then
echo "Port 80 is already in use. Killing the process..."
sudo lsof -i :80 | awk 'NR!=1 {print $2}' | sudo xargs kill -9
fi
# 스프링 프로그램을 실행합니다
- name: deploy
run: |
sudo java -jar build/libs/WEB1_1_Postman_BE.jar --spring.profiles.active=prod &