Skip to content

Deploy

Deploy #38

Workflow file for this run

name: Deploy
on:
workflow_run:
workflows: ["Test"]
branches: [main]
types:
- completed
permissions: read-all
jobs:
config:
name: Config project
runs-on: ubuntu-latest
if: ${{ github.event.workflow_run.conclusion == 'success' }}
steps:
- uses: actions/checkout@v2
- name: Pull repository
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
key: ${{ secrets.PRIVATE_KEY }}
port: ${{ secrets.SSH_PORT }}
script: |
sudo -i
cd root
if [ -d "quiz-guru" ]; then
cd ./quiz-guru
git pull https://github.com/KhaiNguyenDuc/quiz-guru.git --ff --no-edit
wait
cd ../
else
git clone https://github.com/KhaiNguyenDuc/quiz-guru.git
wait
fi
stop-old-container:
name: Stop container
runs-on: ubuntu-latest
needs: config
steps:
- name: SSH into VPS
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
key: ${{ secrets.PRIVATE_KEY }}
port: ${{ secrets.SSH_PORT }}
script: |
sudo docker ps -a --format '{{.ID}}' | xargs -r sudo docker stop
remove-old-container:
name: Remove container
needs: stop-old-container
runs-on: ubuntu-latest
steps:
- name: SSH into EC2 instance
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
key: ${{ secrets.PRIVATE_KEY }}
port: ${{ secrets.SSH_PORT }}
script: |
sudo docker ps -a --format '{{.ID}}' | xargs -r sudo docker rm
remove-old-images:
name: Remove old image
needs: remove-old-container
runs-on: ubuntu-latest
steps:
- name: SSH into vps
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
key: ${{ secrets.PRIVATE_KEY }}
port: ${{ secrets.SSH_PORT }}
script: |
sudo docker images --quiet | xargs -r sudo docker rmi
start-container:
name: Deploy
runs-on: ubuntu-latest
needs: remove-old-images
steps:
- name: SSH into Vps
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
key: ${{ secrets.PRIVATE_KEY }}
port: ${{ secrets.SSH_PORT }}
script: |
if [ ! -d "app-logs" ]; then
mkdir app-logs
fi
cd quiz-guru
sudo docker compose up --build -d