Skip to content

open API Docs link in new tab from navigation bar #65

open API Docs link in new tab from navigation bar

open API Docs link in new tab from navigation bar #65

name: Deploy the prod branch code to an Azure Virtual Machine
on:
push:
branches: [ prod ]
jobs:
deployment:
runs-on: [self-hosted, Linux, X64]
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
persist-credentials: false
- name: Copy files using SCP
uses: appleboy/scp-action@v0.1.7
with:
host: ${{ secrets.PANKB_PROD_HOST_VNET }}
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@v1.2.0
with:
host: ${{ secrets.PANKB_PROD_HOST_VNET }}
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="self_deployed" >> .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 "## Django: MongoDB-DEV (self-deployed) connection parameters" >> .env
echo "MONGODB_HOST='mongodb://mongodb:27017'" >> .env
echo "MONGODB_AUTH_MECHANISM='SCRAM-SHA-1'" >> .env
echo "" >> .env
echo "MONGODB_USERNAME='${{secrets.PANKB_PROD_MONGODB_USERNAME}}'" >> .env
echo "MONGODB_PASSWORD='${{secrets.PANKB_PROD_MONGODB_PASSWORD}}'" >> .env
echo "MONGODB_AUTH_SOURCE='${{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
echo "" >> .env
echo "## PanKB Base URL for interop query responses" >> .env
echo PANKB_BASE_URL="${{secrets.PANKB_PROD_BASE_URL}}" >> .env
cat .env
docker compose --profile prod down
docker compose --profile prod up -d --build --force-recreate --remove-orphans
docker system prune --all --force