Skip to content

Release v1.0.0

Release v1.0.0 #8

Workflow file for this run

name: Deploy Production πŸš€
on:
release:
types:
- published
- edited
jobs:
deploy-production:
name: Deploy to production server πŸš€
runs-on: ubuntu-latest
steps:
- name: Execute deployment command
uses: appleboy/[email protected]
env:
APP_PATH_PROD: ${{ vars.APP_PATH_PROD }}
GIT_URL: ${{ vars.GIT_URL }}
POSTGRES_USER: ${{ secrets.DB_USER_PROD }}
POSTGRES_PASSWORD: ${{ secrets.DB_PASSWORD_PROD }}
POSTGRES_DB: ${{ vars.DB_DBNAME_PROD }}
DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }}
APP_NAME: ${{ vars.APP_NAME }}
APP_TAG: ${{ github.event.release.tag_name }}
REACT_APP_API_URL: ${{ vars.REACT_APP_API_URL_PROD }}
with:
host: ${{ secrets.SSH_HOST_PROD }}
username: ${{ secrets.SSH_USER_NAME_PROD }}
key: ${{ secrets.SSH_PRIVATE_KEY_PROD }}
envs: APP_PATH_PROD, GIT_URL, POSTGRES_USER, POSTGRES_PASSWORD, POSTGRES_DB, DOCKERHUB_USERNAME, DOCKERHUB_TOKEN, APP_NAME, APP_TAG, REACT_APP_API_URL
script: |
sudo docker login -u $DOCKERHUB_USERNAME -p $DOCKERHUB_TOKEN
if [[ -d "/home/ubuntu/${APP_PATH_PROD}" ]]; then
cd /home/ubuntu/$APP_PATH_PROD
sudo docker compose down
git stash
git pull --rebase
else
ssh-keyscan github.com > ~/.ssh/known_hosts
git clone $GIT_URL /home/ubuntu/$APP_PATH_PROD
cd /home/ubuntu/$APP_PATH_PROD
fi
# If there are any envars update
echo "POSTGRES_USER=$POSTGRES_USER" > .env
echo "POSTGRES_PASSWORD=$POSTGRES_PASSWORD" >> .env
echo "POSTGRES_DB=$POSTGRES_DB" >> .env && cp .env backend/.env
echo "APP_IMAGE=${DOCKERHUB_USERNAME}/${APP_NAME}" >> .env
echo "APP_TAG=$APP_TAG" >> .env
echo "REACT_APP_API_URL= ${{ vars.REACT_APP_API_URL_PROD }}" > frontend/.env
# Run app
sudo docker compose up my-database my-backend-prod my-frontend-prod --build --detach