@@ -2,14 +2,12 @@ name: Blue/Green CD
2
2
3
3
on :
4
4
push :
5
+ paths : ["backend/**"]
5
6
branches : ["dev"]
6
7
7
8
env :
8
9
DOCKER_USERNAME : ${{ secrets.DOCKER_USERNAME }}
9
10
GITHUB_SHA : ${{ github.sha }}
10
- TURN_SERVER_NAME : ${{ secrets.TURN_SERVER_NAME }}
11
- TURN_SERVER_USER : ${{ secrets.TURN_SERVER_USER }}
12
- TURN_SERVER_PASSWORD : ${{ secrets.TURN_SERVER_PASSWORD }}
13
11
14
12
jobs :
15
13
build :
@@ -25,28 +23,29 @@ jobs:
25
23
echo "${{ secrets.ENV_FILE }}" > .env
26
24
echo "DOCKER_USERNAME=${{ secrets.DOCKER_USERNAME }}" >> .env
27
25
echo "GITHUB_SHA=${{ github.sha }}" >> .env
28
- echo "TURN_SERVER_NAME=${{ secrets.TURN_SERVER_NAME }}" >> .env
29
- echo "TURN_SERVER_USER=${{ secrets.TURN_SERVER_USER }}" >> .env
30
- echo "TURN_SERVER_PASSWORD=${{ secrets.TURN_SERVER_PASSWORD }}" >> .env
31
- echo "SENTRY_DSN=${{ secrets.SENTRY_DSN }}" >> .env
32
26
mkdir -p config/nginx/ssl/
33
27
echo "${{ secrets.SSL_OPTIONS }}" > config/nginx/ssl/options-ssl-nginx.conf
34
28
echo "${{ secrets.SSL_FULLCHAIN }}" > config/nginx/ssl/fullchain.pem
35
29
echo "${{ secrets.SSL_PRIVKEY }}" > config/nginx/ssl/privkey.pem
36
30
echo "${{ secrets.SSL_DHPARAMS }}" > config/nginx/ssl/ssl-dhparams.pem
37
31
38
- - name : Copy .env, deploy script, SSL files to Remote Server
32
+ - name : Add Remote Host Key to known_hosts
33
+ run : |
34
+ mkdir -p ~/.ssh
35
+ echo "${{ secrets.SSH_PUBLIC_KEY }}" >> ~/.ssh/known_hosts
36
+
37
+ - name : Copy some files needed for Deployment to Remote Server
39
38
uses : appleboy/scp-action@master
40
39
with :
41
40
host : ${{ secrets.SSH_HOST }}
42
41
username : ${{ secrets.SSH_USERNAME }}
43
- password : ${{ secrets.SSH_PASSWORD }}
42
+ key : ${{ secrets.SSH_PRIVATE_KEY }}
44
43
port : ${{ secrets.SSH_PORT }}
45
- source : " backend/.env,backend/deploy.sh,backend/config"
44
+ source : " backend/.env,backend/deploy.sh,backend/config,backend/compose.blue-deploy.yml,backend/compose.green-deploy.yml,backend/Dockerfile.nginx "
46
45
target : " ~/app/"
47
46
overwrite : true
48
47
49
- - name : Docker login
48
+ - name : Login to Docker Hub
50
49
uses : docker/login-action@v3
51
50
with :
52
51
username : ${{ secrets.DOCKER_USERNAME }}
@@ -55,21 +54,10 @@ jobs:
55
54
- name : Build & Push Docker Images (Blue & Green)
56
55
run : |
57
56
cd backend
58
- docker-compose -f docker-compose.blue.yml build --no-cache
59
- docker-compose -f docker-compose.green.yml build --no-cache
60
- docker-compose -f docker-compose.blue.yml push
61
- docker-compose -f docker-compose.green.yml push
62
-
63
- - name : Copy Dockerfiles to Remote Server
64
- uses : appleboy/scp-action@master
65
- with :
66
- host : ${{ secrets.SSH_HOST }}
67
- username : ${{ secrets.SSH_USERNAME }}
68
- password : ${{ secrets.SSH_PASSWORD }}
69
- port : ${{ secrets.SSH_PORT }}
70
- source : " backend/docker-compose.blue.yml,backend/docker-compose.green.yml,backend/Dockerfile.nginx,backend/Dockerfile.was,backend/Dockerfile.signal"
71
- target : " ~/app/"
72
- overwrite : true
57
+ docker-compose -f compose.blue-build.yml build
58
+ docker-compose -f compose.green-build.yml build
59
+ docker-compose -f compose.blue-build.yml push
60
+ docker-compose -f compose.green-build.yml push
73
61
74
62
deploy :
75
63
needs : build
@@ -82,12 +70,12 @@ jobs:
82
70
username : ${{ secrets.DOCKER_USERNAME }}
83
71
password : ${{ secrets.DOCKER_ACCESS_TOKEN }}
84
72
85
- - name : Run Docker on Remote Server
73
+ - name : Run a New Version of the application on Remote Server
86
74
uses : appleboy/ssh-action@master
87
75
with :
88
76
host : ${{ secrets.SSH_HOST }}
89
77
username : ${{ secrets.SSH_USERNAME }}
90
- password : ${{ secrets.SSH_PASSWORD }}
78
+ key : ${{ secrets.SSH_PRIVATE_KEY }}
91
79
port : ${{ secrets.SSH_PORT }}
92
80
script : |
93
81
cd ~/app/backend
0 commit comments