@@ -35,46 +35,62 @@ jobs:
35
35
needs : build
36
36
37
37
steps :
38
+ - name : SSH to VM and Execute Docker-Compose Down
39
+
40
+ with :
41
+ host : ${{ secrets.SERVER_DOMAIN }}
42
+ username : ${{ secrets.SERVER_USER }}
43
+ key : ${{ secrets.SSH_KEY }}
44
+ script : |
45
+ docker compose -f compose.yml --env-file=.env down --remove-orphans --rmi all
46
+
38
47
- name : Checkout Code
39
48
uses : actions/checkout@v3
40
49
41
- - name : Install SSH Client
42
- run : sudo apt-get update && sudo apt-get install -y openssh-client
43
-
44
- - name : Add SSH Key
45
- uses :
webfactory/[email protected]
46
- with :
47
- ssh-private-key : ${{ secrets.SSH_KEY }}
48
-
49
50
- name : Copy Files to Server
50
- run : |
51
- scp -o StrictHostKeyChecking=no ./compose.yml ${{ secrets.SERVER_USER }}@${{ secrets.SERVER_DOMAIN }}:~/compose.yml
52
- scp -o StrictHostKeyChecking=no -r ./letsencrypt ${{ secrets.SERVER_USER }}@${{ secrets.SERVER_DOMAIN }}:~/letsencrypt
51
+
52
+ with :
53
+ host : ${{ secrets.SERVER_DOMAIN }}
54
+ username : ${{ secrets.SERVER_USER }}
55
+ key : ${{ secrets.SSH_KEY }}
56
+ script : |
57
+ scp -o StrictHostKeyChecking=no ./compose.yml ${{ secrets.SERVER_USER }}@${{ secrets.SERVER_DOMAIN }}:~/compose.yml
58
+ scp -o StrictHostKeyChecking=no -r ./letsencrypt ${{ secrets.SERVER_USER }}@${{ secrets.SERVER_DOMAIN }}:~/letsencrypt
53
59
54
60
- name : Set Up Environment Variables
55
- run : |
56
- ssh -o StrictHostKeyChecking=no ${{ secrets.SERVER_USER }}@${{ secrets.SERVER_DOMAIN }} << 'EOF'
57
- echo "OPENAI_API_KEY=${{ secrets.OPENAI_API_KEY }}" >> .env
58
- echo "DEBUG=${{ secrets.DEBUG }}" >> .env
59
- echo "SECRET_KEY=${{ secrets.SECRET_KEY }}" >> .env
60
- echo "POSTGRES_DB=${{ secrets.POSTGRES_DB }}" >> .env
61
- echo "POSTGRES_USER=${{ secrets.POSTGRES_USER }}" >> .env
62
- echo "POSTGRES_PASSWORD=${{ secrets.POSTGRES_PASSWORD }}" >> .env
63
- echo "POSTGRES_HOST=${{ secrets.POSTGRES_HOST }}" >> .env
64
- echo "EMAIL_USE_TLS=${{ secrets.EMAIL_USE_TLS }}" >> .env
65
- echo "EMAIL_HOST=${{ secrets.EMAIL_HOST }}" >> .env
66
- echo "EMAIL_HOST_USER=${{ secrets.EMAIL_HOST_USER }}" >> .env
67
- echo "EMAIL_HOST_PASSWORD=${{ secrets.EMAIL_HOST_PASSWORD }}" >> .env
68
- echo "DEFAULT_FROM_EMAIL=${{ secrets.DEFAULT_FROM_EMAIL }}" >> .env
69
- echo "EMAIL_PORT=${{ secrets.EMAIL_PORT }}" >> .env
70
- echo "DJANGO_SUPERUSER_USERNAME=${{ secrets.DJANGO_SUPERUSER_USERNAME }}" >> .env
71
- echo "DJANGO_SUPERUSER_PASSWORD=${{ secrets.DJANGO_SUPERUSER_PASSWORD }}" >> .env
72
- echo "DJANGO_SUPERUSER_EMAIL=${{ secrets.DJANGO_SUPERUSER_EMAIL }}" >> .env
73
- EOF
61
+ with :
62
+ host : ${{ secrets.SERVER_DOMAIN }}
63
+ username : ${{ secrets.SERVER_USER }}
64
+ key : ${{ secrets.SSH_KEY }}
65
+ script : |
66
+ ssh -o StrictHostKeyChecking=no ${{ secrets.SERVER_USER }}@${{ secrets.SERVER_DOMAIN }} << 'EOF'
67
+ touch .env
68
+ echo "OPENAI_API_KEY=${{ secrets.OPENAI_API_KEY }}" >> .env
69
+ echo "DEBUG=${{ secrets.DEBUG }}" >> .env
70
+ echo "SECRET_KEY=${{ secrets.SECRET_KEY }}" >> .env
71
+ echo "POSTGRES_DB=${{ secrets.POSTGRES_DB }}" >> .env
72
+ echo "POSTGRES_USER=${{ secrets.POSTGRES_USER }}" >> .env
73
+ echo "POSTGRES_PASSWORD=${{ secrets.POSTGRES_PASSWORD }}" >> .env
74
+ echo "POSTGRES_HOST=${{ secrets.POSTGRES_HOST }}" >> .env
75
+ echo "EMAIL_USE_TLS=${{ secrets.EMAIL_USE_TLS }}" >> .env
76
+ echo "EMAIL_HOST=${{ secrets.EMAIL_HOST }}" >> .env
77
+ echo "EMAIL_HOST_USER=${{ secrets.EMAIL_HOST_USER }}" >> .env
78
+ echo "EMAIL_HOST_PASSWORD=${{ secrets.EMAIL_HOST_PASSWORD }}" >> .env
79
+ echo "DEFAULT_FROM_EMAIL=${{ secrets.DEFAULT_FROM_EMAIL }}" >> .env
80
+ echo "EMAIL_PORT=${{ secrets.EMAIL_PORT }}" >> .env
81
+ echo "DJANGO_SUPERUSER_USERNAME=${{ secrets.DJANGO_SUPERUSER_USERNAME }}" >> .env
82
+ echo "DJANGO_SUPERUSER_PASSWORD=${{ secrets.DJANGO_SUPERUSER_PASSWORD }}" >> .env
83
+ echo "DJANGO_SUPERUSER_EMAIL=${{ secrets.DJANGO_SUPERUSER_EMAIL }}" >> .env
84
+ EOF
74
85
75
- - name : Deploy on Server
76
- run : |
77
- ssh -o StrictHostKeyChecking=no ${{ secrets.SERVER_USER }}@${{ secrets.SERVER_DOMAIN }} "mkdir -p ~/"
78
- ssh -o StrictHostKeyChecking=no ${{ secrets.SERVER_USER }}@${{ secrets.SERVER_DOMAIN }} "touch ~/letsencrypt/acme.json && chmod 600 ~/letsencrypt/acme.json"
79
- ssh -o StrictHostKeyChecking=no ${{ secrets.SERVER_USER }}@${{ secrets.SERVER_DOMAIN }} "docker login ghcr.io -u ${{ github.actor }} --password-stdin <<< ${{ secrets.GITHUB_TOKEN }}"
80
- ssh -o StrictHostKeyChecking=no ${{ secrets.SERVER_USER }}@${{ secrets.SERVER_DOMAIN }} "docker compose pull && docker compose up -d && docker compose logs"
86
+ - name : SSH to VM and Execute Docker-Compose Up
87
+
88
+ with :
89
+ host : ${{ secrets.SERVER_DOMAIN }}
90
+ username : ${{ secrets.SERVER_USER }}
91
+ key : ${{ secrets.SSH_KEY }}
92
+ script : |
93
+ ssh -o StrictHostKeyChecking=no ${{ secrets.SERVER_USER }}@${{ secrets.SERVER_DOMAIN }} "mkdir -p ~/"
94
+ ssh -o StrictHostKeyChecking=no ${{ secrets.SERVER_USER }}@${{ secrets.SERVER_DOMAIN }} "touch ~/letsencrypt/acme.json && chmod 600 ~/letsencrypt/acme.json"
95
+ ssh -o StrictHostKeyChecking=no ${{ secrets.SERVER_USER }}@${{ secrets.SERVER_DOMAIN }} "docker login ghcr.io -u ${{ github.actor }} --password-stdin <<< ${{ secrets.GITHUB_TOKEN }}"
96
+ ssh -o StrictHostKeyChecking=no ${{ secrets.SERVER_USER }}@${{ secrets.SERVER_DOMAIN }} "docker compose pull && docker compose up -d && docker compose logs"
0 commit comments