Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Continuous Deployment Pipeline #21

Merged
merged 8 commits into from
Apr 18, 2024
Merged
Changes from 7 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
91 changes: 91 additions & 0 deletions .github/workflows/deploy.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
name: Continuous Deployment for backend

on:
push:
branches: ["main"]

jobs:
pull:
name: Pull Stage
runs-on: ubuntu-latest

steps:
- name: Sync with remote repository
uses: appleboy/ssh-action@master
env:
IQPS_DIR: ${{ secrets.IQPS_DIR }}
with:
host: ${{ secrets.HOSTNAME }}
username: ${{ secrets.USERNAME }}
key: ${{ secrets.SSH_PRIVATE_KEY }}
passphrase: ${{ secrets.PASSPHRASE }}
envs: IQPS_DIR
script: |
cd "$IQPS_DIR" >/dev/null 2>&1 || {
echo "[ERROR]: Failed to cd into 'iqps' directory"
exit 1
}
sudo git fetch origin || {
echo "[ERROR]: Failed to fetch origin"
exit 1
}
sudo git reset --hard origin/main || {
echo "[ERROR]: Failed to sync with remote repo"
exit 1
}

build:
name: Build Stage
needs: pull
runs-on: ubuntu-latest

steps:
- name: Build the latest docker container
uses: appleboy/ssh-action@master
env:
IQPS_DIR: ${{ secrets.IQPS_DIR }}
with:
host: ${{ secrets.HOSTNAME }}
username: ${{ secrets.USERNAME }}
key: ${{ secrets.SSH_PRIVATE_KEY }}
passphrase: ${{ secrets.PASSPHRASE }}
envs: IQPS_DIR
script: |
cd "${IQPS_DIR}/backend/" >/dev/null 2>&1 || {
echo "[ERROR]: Failed to cd into 'backend' directory"
exit 1
}
sudo docker compose build || {
echo "[ERROR]: Build stage failed"
exit 1
}

deploy:
name: Deploy Stage
needs: [pull, build]
runs-on: ubuntu-latest

steps:
- name: Deploy the latest build
uses: appleboy/ssh-action@master
env:
IQPS_DIR: ${{ secrets.IQPS_DIR }}
with:
host: ${{ secrets.HOSTNAME }}
username: ${{ secrets.USERNAME }}
key: ${{ secrets.SSH_PRIVATE_KEY }}
passphrase: ${{ secrets.PASSPHRASE }}
envs: IQPS_DIR
script: |
cd "${IQPS_DIR}/backend/" >/dev/null 2>&1 || {
echo "[ERROR]: Failed to cd into 'scripts' directory"
proffapt marked this conversation as resolved.
Show resolved Hide resolved
exit 1
}
sudo docker compose down || {
echo "[ERROR]: Failed to takedown the previous deployment"
exit 1
}
sudo docker compose up -d || {
echo "[ERROR]: Failed to deploy the latest version"
exit 1
}