-
Notifications
You must be signed in to change notification settings - Fork 13
131 lines (107 loc) · 3.97 KB
/
Copy pathdevelop-push-deploy.yml
File metadata and controls
131 lines (107 loc) · 3.97 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
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: MCDA-test | push | deploy
on:
push:
branches: develop
jobs:
test:
runs-on: ${{ matrix.os }}
strategy:
matrix:
node-version: ['18']
os: [ubuntu-22.04]
steps:
- uses: actions/checkout@v3
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
- name: Cache node modules
uses: actions/cache@v3
with:
path: node_modules
key: ${{ runner.OS }}-build-${{ hashFiles('package.json') }}
- name: run yarn
run: yarn
- name: unit tests
id: jest
run: yarn jest
- name: build docker image
run: ./build-docker.sh GOOGLE Test https://mcda.dev.drugis.org test
- name: docker login
run: docker login -u addis -p ${{ secrets.dockerRegistryPassword }}
- name: docker push
run: docker push addis/mcda:test
- name: Configure SSH
run: |
mkdir -p ~/.ssh/
echo "$SSH_KEY" > ~/.ssh/id_ed25519.key
chmod 600 ~/.ssh/id_ed25519.key
cat >>~/.ssh/config <<END
Host jumphost
HostName $SSH_JUMP_HOST
User $SSH_JUMP_USER
IdentityFile ~/.ssh/id_ed25519.key
StrictHostKeyChecking no
Host internalserver
HostName $SSH_INTERNAL_HOST
User $SSH_INTERNAL_USER
IdentityFile ~/.ssh/id_ed25519.key
StrictHostKeyChecking no
END
env:
SSH_JUMP_USER: ${{ secrets.devJumpHostUser }}
SSH_KEY: ${{ secrets.deployPrivateKey }}
SSH_JUMP_HOST: ${{ secrets.devJumpHost }}
SSH_INTERNAL_HOST: ${{ secrets.devInternalServer }}
SSH_INTERNAL_USER: ${{ secrets.devInternalUser }}
- name: pull latest from github on the server
run: ssh -J jumphost internalserver 'cd git/mcda-elicitation-web && git checkout develop && git pull'
- name: pull image on server
run: ssh -J jumphost internalserver 'podman pull addis/mcda:test'
- name: remove service on the server
run: >
ssh -J jumphost internalserver \
"if systemctl list-unit-files | grep mcda
then
systemctl stop mcda
systemctl disable mcda
rm -f /etc/systemd/system/mcda.service
systemctl daemon-reload
fi"
- name: remove container on the server
run: ssh -J jumphost internalserver "podman rm -f mcda || true"
- name: update database
run: >
ssh -J jumphost internalserver \
"cd git/mcda-elicitation-web/liquibase && git pull && cp ../database.pg.sql liquibase-changelog.sql"
- name: run liquibase
run: ssh -J jumphost internalserver './run-mcda-liquibase.sh'
- name: run mcda container on the server
run: ssh -J jumphost internalserver './run-mcda.sh'
- name: generate mcda system service file
run: >
ssh -J jumphost internalserver \
'podman generate systemd --name mcda > /etc/systemd/system/mcda.service'
- name: stop mcda container
run: ssh -J jumphost internalserver 'podman stop mcda'
- name: start mcda service
run: >
ssh -J jumphost internalserver \
"systemctl daemon-reload && \
systemctl enable mcda && \
systemctl start mcda"
- name: notify on slack channel on failure
if: failure()
uses: rtCamp/action-slack-notify@master
env:
SLACK_WEBHOOK: ${{ secrets.slackWebhook }}
SLACK_USERNAME: gitbot
SLACK_TITLE: 'Develop push:'
SLACK_MESSAGE: 'MCDA-test deploy failed'
- name: notify on slack channel on success
uses: rtCamp/action-slack-notify@master
env:
SLACK_WEBHOOK: ${{ secrets.slackWebhook }}
SLACK_USERNAME: gitbot
SLACK_TITLE: 'Develop push:'
SLACK_MESSAGE: 'MCDA-test deployed'