-
Notifications
You must be signed in to change notification settings - Fork 2
131 lines (119 loc) · 4.73 KB
/
api-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
name: API Server Ci/Cd
on:
push:
branches:
- develop
- Fix/296
# paths:
# - 'apps/api/**'
jobs:
build-and-push:
runs-on: ubuntu-latest
env:
IMAGE_NAME: api-camon
DB_HOST: ${{ secrets.DB_HOST }}
DB_PORT: ${{ secrets.DB_PORT }}
DB_USERNAME: ${{ secrets.DB_USERNAME }}
DB_PASSWORD: ${{ secrets.DB_PASSWORD }}
DB_NAME: ${{ secrets.DB_NAME }}
GH_CLIENT_ID: ${{ secrets.GH_CLIENT_ID }}
GH_SECRET: ${{ secrets.GH_SECRET }}
GH_CALLBACK_URL: ${{ secrets.GH_CALLBACK_URL }}
JWT_SECRET: ${{ secrets.JWT_SECRET }}
GG_CLIENT_ID: ${{ secrets.GG_CLIENT_ID }}
GG_SECRET: ${{ secrets.GG_SECRET }}
GG_CALLBACK_URL: ${{ secrets.GG_CALLBACK_URL }}
CALLBACK_URI: ${{ secrets.CALLBACK_URI }}
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Log in to Ncloud Container Registry
env:
USERNAME: ${{ secrets.NCLOUD_ACCESS_KEY }}
PASSWORD: ${{ secrets.NCLOUD_SECRET_KEY }}
REGISTRY_URL: ${{ secrets.NCLOUD_REGISTRY_URL }}
run: |
echo "$PASSWORD" | docker login -u "$USERNAME" "$REGISTRY_URL" --password-stdin
- name: Build Docker image
run: |
docker build -f ./apps/api/Dockerfile -t ${{ secrets.NCLOUD_REGISTRY_URL }}/$IMAGE_NAME:latest \
--build-arg DB_HOST=$DB_HOST \
--build-arg DB_PORT=$DB_PORT \
--build-arg DB_USERNAME=$DB_USERNAME \
--build-arg DB_PASSWORD=$DB_PASSWORD \
--build-arg DB_NAME=$DB_NAME \
--build-arg GH_CLIENT_ID=$GH_CLIENT_ID \
--build-arg GH_SECRET=$GH_SECRET \
--build-arg GH_CALLBACK_URL=$GH_CALLBACK_URL \
--build-arg JWT_SECRET=$JWT_SECRET \
--build-arg GG_CLIENT_ID=$GG_CLIENT_ID \
--build-arg GG_SECRET=$GG_SECRET \
--build-arg GG_CALLBACK_URL=$GG_CALLBACK_URL \
--build-arg CALLBACK_URI=$CALLBACK_URI \
.
- name: Push to Ncloud Container Registry
run: |
docker push ${{ secrets.NCLOUD_REGISTRY_URL }}/$IMAGE_NAME:latest
deploy-and-run:
runs-on: ubuntu-latest
needs: build-and-push
steps:
- name: Checkout for docker-compose
uses: actions/checkout@v2
# - name: Copy docker-compose file
# uses: appleboy/scp-action@master
# with:
# host: ${{ secrets.SERVER_IP }}
# username: ${{ secrets.SERVER_USER }}
# key: ${{ secrets.SSH_SERVER_KEY }}
# source: "docker-compose.yml"
# target: "/home/${{ secrets.SERVER_USER }}/camon"
- name: Create .env.api file
uses: appleboy/[email protected]
with:
host: ${{ secrets.SERVER_IP }}
username: ${{ secrets.SERVER_USER }}
key: ${{ secrets.SSH_SERVER_KEY }}
script: |
cd /home/${{ secrets.SERVER_USER }}/camon
cat << EOF > .env.api
NCLOUD_REGISTRY_URL=${{ secrets.NCLOUD_REGISTRY_URL }}
DB_HOST=${{ secrets.DB_HOST }}
DB_PORT=${{ secrets.DB_PORT }}
DB_USERNAME=${{ secrets.DB_USERNAME }}
DB_PASSWORD=${{ secrets.DB_PASSWORD }}
DB_NAME=${{ secrets.DB_NAME }}
GH_CLIENT_ID=${{ secrets.GH_CLIENT_ID }}
GH_SECRET=${{ secrets.GH_SECRET }}
GH_CALLBACK_URL=${{ secrets.GH_CALLBACK_URL }}
JWT_SECRET=${{ secrets.JWT_SECRET }}
GG_CLIENT_ID=${{ secrets.GG_CLIENT_ID }}
GG_SECRET=${{ secrets.GG_SECRET }}
GG_CALLBACK_URL=${{ secrets.GG_CALLBACK_URL }}
CALLBACK_URI=${{ secrets.CALLBACK_URI }}
EOF
- name: SSH and deploy
uses: appleboy/[email protected]
with:
host: ${{ secrets.SERVER_IP }}
username: ${{ secrets.SERVER_USER }}
key: ${{ secrets.SSH_SERVER_KEY }}
port: 22
script: |
cd /home/${{ secrets.SERVER_USER }}/camon
sudo docker login -u ${{secrets.NCLOUD_ACCESS_KEY}} -p ${{ secrets.NCLOUD_SECRET_KEY }} ${{ secrets.NCLOUD_REGISTRY_URL }}
sudo docker stop api-camon || true
sudo docker rm api-camon || true
sudo docker rmi ${NCLOUD_REGISTRY_URL}/api-camon:latest || true
sudo docker pull ${NCLOUD_REGISTRY_URL}/api-camon:latest
sudo docker-compose --env-file .env.api up -d api
sudo docker image prune -f
- name: Check container status
uses: appleboy/[email protected]
with:
host: ${{ secrets.SERVER_IP }}
username: ${{ secrets.SERVER_USER }}
key: ${{ secrets.SSH_SERVER_KEY }}
port: 22
script: |
sudo docker ps -f name=api-camon