-
Notifications
You must be signed in to change notification settings - Fork 0
149 lines (134 loc) · 5.22 KB
/
dongurami-v2.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
136
137
138
139
140
141
142
143
144
145
146
147
148
149
name: dongurami-server-v2
on:
push:
branches:
- develop
paths-ignore:
- 'README.md'
- 'LICENSE'
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
- name: Generate Environment Variables File
run: |
echo "NODE_ENV=${{ secrets.DEV_NODE_ENV }}" >> $GITHUB_ENV
echo "PORT=${{ secrets.DEV_PORT }}" >> $GITHUB_ENV
echo "RDB_HOST=${{ secrets.DEV_RDB_HOST }}" >> $GITHUB_ENV
echo "RDB_PORT=${{ secrets.DEV_RDB_PORT }}" >> $GITHUB_ENV
echo "RDB_USER_NAME=${{ secrets.DEV_RDB_USER_NAME }}" >> $GITHUB_ENV
echo "RDB_PASSWORD=${{ secrets.DEV_RDB_PASSWORD }}" >> $GITHUB_ENV
echo "RDB_DATABASE=${{ secrets.DEV_RDB_DATABASE }}" >> $GITHUB_ENV
echo "JWT_SECRET=${{ secrets.DEV_JWT_SECRET }}" >> $GITHUB_ENV
echo "DOMAIN=${{ secrets.DEV_DOMAIN }}" >> $GITHUB_ENV
cat $GITHUB_ENV
- name: Build and package
run: |
npm install
npm run build
sudo docker build --platform linux/amd64 \
--build-arg NODE_ENV=${{ secrets.DEV_NODE_ENV }} \
--build-arg PORT=${{ secrets.DEV_PORT }} \
--build-arg RDB_HOST=${{ secrets.DEV_RDB_HOST }} \
--build-arg RDB_PORT=${{ secrets.DEV_RDB_PORT }} \
--build-arg RDB_USER_NAME=${{ secrets.DEV_RDB_USER_NAME }} \
--build-arg RDB_PASSWORD=${{ secrets.DEV_RDB_PASSWORD }} \
--build-arg RDB_DATABASE=${{ secrets.DEV_RDB_DATABASE }} \
--build-arg JWT_SECRET=${{ secrets.DEV_JWT_SECRET }} \
--build-arg DOMAIN=${{ secrets.DEV_DOMAIN }} \
-t ${{ secrets.DOCKER_IMAGE_NAME }}:latest .
- name: Login to Docker Hub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_PASSWORD }}
- name: Push Docker image
run: docker push ${{ secrets.DOCKER_IMAGE_NAME }}:latest
build-notify-slack:
needs: build
runs-on: ubuntu-latest
steps:
- name: Slack Notification
id: slack-notification
uses: slackapi/slack-github-action@v1.24.0
with:
payload: |
{
"channel": "${{ secrets.SLACK_BACKEND_CHANNEL_ID }}",
"attachments": [
{
"color": "${{ job.status == 'success' && '#36a64f' || job.status == 'failure' && '#ff0000' || '#fffff' }}",
"title": "${{ github.repository }}",
"title_link": "https://github.com/${{ github.repository }}",
"text": "${{ job.status == 'success' && 'GitHub Action Build 성공' || job.status == 'failure' && 'GitHub Action Build 실패 :x:' || '' }}",
"fields": [
{
"title": "Repository",
"value": "${{ github.repository }}",
"short": true
},
{
"title": "Tag",
"value": "${{ github.ref_name }}",
"short": true
}
]
}
]
}
env:
SLACK_WEBHOOK_URL: ${{ secrets.DEV_DEPLOY_SLACK_WEBHOOK_URL }}
SLACK_WEBHOOK_TYPE: INCOMING_WEBHOOK
deploy:
needs: build
runs-on: self-hosted # runner로 ec2 연결
steps:
- name: Login to Docker Hub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_PASSWORD }}
- name: Docker run
run: |
sudo docker pull ${{ secrets.DOCKER_IMAGE_NAME }}:latest
sudo docker-compose down
sudo docker-compose up --force-recreate --build -d
deploy-notify-slack:
needs: deploy
runs-on: ubuntu-latest
steps:
- name: Slack Notification
id: slack-notification
uses: slackapi/slack-github-action@v1.24.0
with:
payload: |
{
"channel": "${{ secrets.SLACK_BACKEND_CHANNEL_ID }}",
"attachments": [
{
"color": "${{ job.status == 'success' && '#36a64f' || job.status == 'failure' && '#ff0000' || '#fffff' }}",
"title": "${{ github.repository }}",
"title_link": "https://github.com/${{ github.repository }}",
"text": "${{ job.status == 'success' && 'GitHub Action Deploy 성공' || job.status == 'failure' && 'GitHub Action Deploy 실패 :x:' || '' }}",
"fields": [
{
"title": "Repository",
"value": "${{ github.repository }}",
"short": true
},
{
"title": "Tag",
"value": "${{ github.ref_name }}",
"short": true
}
]
}
]
}
env:
SLACK_WEBHOOK_URL: ${{ secrets.DEV_DEPLOY_SLACK_WEBHOOK_URL }}
SLACK_WEBHOOK_TYPE: INCOMING_WEBHOOK