Skip to content

Optimized image builds #74

Optimized image builds

Optimized image builds #74

Workflow file for this run

name: Deployment
on:
push:
branches:
- master
jobs:
upload:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Clean remote directory
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.REMOTE_HOST }}
username: ${{ secrets.REMOTE_USERNAME }}
key: ${{ secrets.REMOTE_SSH_KEY }}
script: |
rm -rf ./app
- name: Copy repo to remote server
uses: appleboy/scp-action@master
with:
host: ${{ secrets.REMOTE_HOST }}
username: ${{ secrets.REMOTE_USERNAME }}
key: ${{ secrets.REMOTE_SSH_KEY }}
source: "."
target: "./app"
prune:
runs-on: ubuntu-latest
steps:
- name: Run Docker Compose Prune on remote server
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.REMOTE_HOST }}
username: ${{ secrets.REMOTE_USERNAME }}
key: ${{ secrets.REMOTE_SSH_KEY }}
script: |
docker builder prune -f
docker image prune -f
build_backend:
runs-on: ubuntu-latest
needs:
- upload
- prune
steps:
- name: Run Docker Compose Build on remote server
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.REMOTE_HOST }}
username: ${{ secrets.REMOTE_USERNAME }}
key: ${{ secrets.REMOTE_SSH_KEY }}
script: |
cd ./app/deployment/prod
export FRONTEND_URL=$FRONTEND_URL
export POSTGRES_USER=${{ secrets.POSTGRES_USER }}
export POSTGRES_PASSWORD=${{ secrets.POSTGRES_PASSWORD }}
export POSTGRES_DB=${{ secrets.POSTGRES_DB }}
export COOKIE_SECRET=${{ secrets.COOKIE_SECRET }}
export REDIS_PASSWORD=${{ secrets.REDIS_PASSWORD }}
export ADMIN_URL=$ADMIN_URL
docker compose build backend
build_frontend:
runs-on: ubuntu-latest
needs:
- build_backend
steps:
- name: Run Docker Compose Build on remote server
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.REMOTE_HOST }}
username: ${{ secrets.REMOTE_USERNAME }}
key: ${{ secrets.REMOTE_SSH_KEY }}
script: |
cd ./app/deployment/prod
export VITE_BASE_PATH=${{ secrets.VITE_BASE_PATH }}
docker compose build frontend
deploy:
runs-on: ubuntu-latest
needs:
- build_backend
- build_frontend
steps:
- name: Run Docker Compose Up on remote server
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.REMOTE_HOST }}
username: ${{ secrets.REMOTE_USERNAME }}
key: ${{ secrets.REMOTE_SSH_KEY }}
script: |
cd ./app/deployment/prod
export ADMIN_URL=$ADMIN_URL
export FRONTEND_URL=$FRONTEND_URL
export POSTGRES_USER=${{ secrets.POSTGRES_USER }}
export POSTGRES_PASSWORD=${{ secrets.POSTGRES_PASSWORD }}
export POSTGRES_DB=${{ secrets.POSTGRES_DB }}
export COOKIE_SECRET=${{ secrets.COOKIE_SECRET }}
export VITE_BASE_PATH=${{ secrets.VITE_BASE_PATH }}
export REDIS_PASSWORD=${{ secrets.REDIS_PASSWORD }}
docker compose up -d --remove-orphans