-
Notifications
You must be signed in to change notification settings - Fork 0
89 lines (78 loc) · 2.87 KB
/
Copy pathcicd.yml
File metadata and controls
89 lines (78 loc) · 2.87 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
89
# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.
# This workflow will build a Java project with Gradle and cache/restore any dependencies to improve the workflow execution time
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-java-with-gradle
name: CI/CD
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
jobs:
# ci
build:
runs-on: ubuntu-latest
permissions:
contents: read
steps:
# repository checkout
- uses: actions/checkout@v4
# jdk 환경 설치
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
# gradle 환경 설치
- name: Setup Gradle
uses: gradle/actions/setup-gradle@af1da67850ed9a4cedd57bfd976089dd991e2582 # v4.0.0
# 권한 부여
- name: Grant execute permission for Gradle wrapper
run: chmod +x ./gradlew
# 빌드
- name: Build (skip tests)
run: ./gradlew clean bootJar -x test --stacktrace
env:
AWS_DB_URL: ${{secrets.AWS_DB_URL}}
AWS_DB_USER: ${{secrets.AWS_DB_USER}}
AWS_DB_PASSWORD: ${{secrets.AWS_DB_PASSWORD}}
SECURITY_JWT_SECRET: ${{secrets.SECURITY_JWT_SECRET}}
SECURITY_JWT_AT_EXPIRE: ${{secrets.SECURITY_JWT_AT_EXPIRE}}
AWS_ACCESS_KEY_ID: ${{secrets.AWS_ACCESS_KEY_ID}}
AWS_SECRET_ACCESS_KEY: ${{secrets.AWS_SECRET_ACCESS_KEY}}
# 빌드된 파일 이름 변경
- name: 빌드된 파일 이름 변경
run: mv ./build/libs/*SNAPSHOT.jar ./agree.jar
# 빌드된 파일 ec2 전송
- name: ec2 전송
uses: appleboy/scp-action@master
with:
host: ${{secrets.SERVER_IP}}
username: ${{secrets.SSH_USER}}
key: ${{secrets.SSH_PRIVATE_KEY}}
source: agree.jar
target: /home/ubuntu
# cd
deploy:
needs: build
runs-on: ubuntu-latest
steps:
- name: ssh로 ec2 접속
uses: appleboy/ssh-action@master
with:
host: ${{secrets.SERVER_IP}}
username: ${{secrets.SSH_USER}}
key: ${{secrets.SSH_PRIVATE_KEY}}
script_stop: true
script: |
export AWS_DB_URL='${{secrets.AWS_DB_URL}}'
export AWS_DB_USER='${{secrets.AWS_DB_USER}}'
export AWS_DB_PASSWORD='${{secrets.AWS_DB_PASSWORD}}'
export SECURITY_JWT_SECRET='${{secrets.SECURITY_JWT_SECRET}}'
export SECURITY_JWT_AT_EXPIRE='${{secrets.SECURITY_JWT_AT_EXPIRE}}'
export AWS_ACCESS_KEY_ID='${{secrets.AWS_ACCESS_KEY_ID}}'
export AWS_SECRET_ACCESS_KEY='${{secrets.AWS_SECRET_ACCESS_KEY}}'
fuser -k -n tcp 8080 || true
nohup java -jar agree.jar > output.log 2>&1 &