-
Notifications
You must be signed in to change notification settings - Fork 2
136 lines (118 loc) · 4.16 KB
/
deploy.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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
name: Java CI with Gradle
on:
push:
branches: [ "release" ]
permissions:
contents: read
jobs:
ci-pipeline:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'
- uses: actions/checkout@v3
- name: create-json
id: create-json
uses: jsdaniell/[email protected]
with:
name: "jikgong-firebase.json"
json: ${{ secrets.JIKGONG_FIREBASE }}
dir: ./src/main/resources/firebase/
- name: Run chmod to make graldew executable
run: chmod +x ./gradlew
- name: Build with Gradle
uses: gradle/gradle-build-action@67421db6bd0bf253fb4bd25b31ebb98943c375e1
with:
arguments: clean bootJar -Pspring.profiles.active=prod
options: '--no-build-cache'
- name: docker login
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
# 무중단 배포 시 기존 이미지로 실행되는 것을 막기 위해 a, b로 나눔
- name: Build jikgong-a Docker Image
run: docker build -t ${{ secrets.DOCKERHUB_USERNAME }}/jikgong-a .
- name: Push jikgong-a Docker Image
run: docker push ${{ secrets.DOCKERHUB_USERNAME }}/jikgong-a
- name: Build jikgong-b Docker Image
run: docker build -t ${{ secrets.DOCKERHUB_USERNAME }}/jikgong-b .
- name: Push jikgong-b Docker Image
run: docker push ${{ secrets.DOCKERHUB_USERNAME }}/jikgong-b
cd-pipeline:
needs: ci-pipeline
runs-on: ubuntu-latest
steps:
# docker compose a 파일 scp
- uses: actions/checkout@master
- name: copy docker-compose.a.yml to remote server
uses: appleboy/scp-action@master
with:
host: ${{ secrets.SSH_HOST }}
username: ubuntu
password: ${{ secrets.SSH_PASSWORD }}
port: 22
source: "./docker-compose.a.yml"
target: "/home/ubuntu/"
# docker compose b 파일 scp
- uses: actions/checkout@master
- name: copy docker-compose.b.yml to remote server
uses: appleboy/scp-action@master
with:
host: ${{ secrets.SSH_HOST }}
username: ubuntu
password: ${{ secrets.SSH_PASSWORD }}
port: 22
source: "./docker-compose.b.yml"
target: "/home/ubuntu/"
# - name: executing remote ssh commands using password
# uses: appleboy/ssh-action@master
# with:
# host: ${{ secrets.SSH_HOST }}
# username: ubuntu
# password: ${{ secrets.SSH_PASSWORD }}
# port: 22
# script: |
# sudo docker rm -f $(sudo docker ps -q -f "expose=8080")
# sudo docker rm -f $(sudo docker ps -q -f "expose=6379")
# sudo docker pull ${{ secrets.DOCKERHUB_USERNAME }}/jikgong
# sudo docker-compose up -d
# sudo docker image prune -f
- name: copy deploy.sh to remote server
uses: appleboy/scp-action@master
with:
host: ${{ secrets.SSH_HOST }}
username: ubuntu
password: ${{ secrets.SSH_PASSWORD }}
port: 22
source: "./deploy.sh"
target: "/home/ubuntu/"
- name: Execute deploy.sh script remotely
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.SSH_HOST }}
username: ubuntu
password: ${{ secrets.SSH_PASSWORD }}
port: 22
script: |
chmod +x /home/ubuntu/deploy.sh
/home/ubuntu/deploy.sh
notify-slack:
needs: cd-pipeline
runs-on: ubuntu-latest
if: always() # 이 작업은 성공하거나 취소되었을 때에도 실행
steps:
- name: action-slack
uses: 8398a7/action-slack@v3
with:
status: ${{ needs.cd-pipeline.result }}
author_name: jikgong backend - prod
fields: repo,commit,message,author
mention: here
if_mention: failure,cancelled
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}