Skip to content

Merge all dev, prod, pre-prod code. Use docker compose profiles to bu… #26

Merge all dev, prod, pre-prod code. Use docker compose profiles to bu…

Merge all dev, prod, pre-prod code. Use docker compose profiles to bu… #26

name: Deploy the prod branch code to an Azure Virtual Machine
on:
push:
branches: [ prod ]
jobs:
deployment:
runs-on: ubuntu-24.04
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Copy files using SCP
uses: appleboy/scp-action@@v0.1.7
with:
host: ${{ secrets.PANKB_PROD_HOST }}
username: ${{ secrets.PANKB_PROD_SSH_USERNAME }}
key: ${{ secrets.PANKB_PROD_PRIVATE_SSH_KEY }}
source: "."
target: "/projects/pankb_web/django_project"
- name: Create the .env file and (re-)start containers over SSH
uses: appleboy/ssh-action@@v0.1.7
with:
host: ${{ secrets.PANKB_PROD_HOST }}
username: ${{ secrets.PANKB_PROD_SSH_USERNAME }}
key: ${{ secrets.PANKB_PROD_PRIVATE_SSH_KEY }}
port: 22
script: |
cd /projects/pankb_web/django_project
touch .env
echo $"## Do not put this file under version control!" > .env
echo "" >> .env
echo "## Server type, where the web project is located, values = ('dev' for the DEV server, 'prod' for the both PRE-PROD and PROD servers)" >> .env
echo PROJECT_SERVER="prod" >> .env
echo "" >> .env
echo "## MongoDB type. Only two possible values:" >> .env
echo "# - 'self_deployed' (standalone, deployed on the DEV server in a docker container)" >> .env
echo "# or" >> .env
echo "# - 'cloud' (MongoDB Atlas or Azure CosmosDB for MongoDB)" >> .env
echo DB_TYPE="cloud" >> .env
echo "" >> .env
echo "## Django: The secret key" >> .env
echo SECRET_KEY="${{secrets.PANKB_PROD_DJANGO_SECRET_KEY}}" >> .env
echo "" >> .env
echo "## Django: Super-User Credentials" >> .env
echo SUPER_USER_NAME="${{secrets.PANKB_PROD_DJANGO_SUPER_USER_NAME}}" >> .env
echo SUPER_USER_PASSWORD="${{secrets.PANKB_PROD_DJANGO_SUPER_USER_PASSWORD}}" >> .env
echo SUPER_USER_EMAIL="${{secrets.PANKB_PROD_DJANGO_SUPER_USER_EMAIL}}" >> .env
echo "" >> .env
echo "## Mongo database name - same both for the PROD and DEV servers" >> .env
echo MONGODB_NAME="${{secrets.PANKB_PROD_MONGODB_NAME}}" >> .env
echo "" >> .env
echo "## MongoDB-PROD (Azure CosmosDB for MongoDB) Connection String" >> .env
echo MONGODB_CONN_STRING="${{secrets.PANKB_PROD_MONGODB_CONN_STRING}}" >> .env
echo "" >> .env
echo "## URL address of the separately deployed AI Assistant Web Application" >> .env
echo AI_ASSISTANT_APP_URL="${{vars.PANKB_PROD_AI_ASSISTANT_APP_URL}}" >> .env
cat .env
docker compose up -d --build --force-recreate
docker system prune --all --force