Skip to content

Merge pull request #825 from jan-stanek/new-vaccines #383

Merge pull request #825 from jan-stanek/new-vaccines

Merge pull request #825 from jan-stanek/new-vaccines #383

name: deploy-acceptance
on:
push:
branches: [develop]
concurrency:
group: acceptance_env
cancel-in-progress: true
jobs:
deploy:
name: Deploy to acceptance
environment: acceptance
runs-on: ubuntu-22.04
env:
APP_DIR: '${HOME}/acc/app'
TMP_DIR: '${HOME}/acc/tmp'
RELEASES_DIR: '${HOME}/acc/releases'
SSH_HOST: ${{ secrets.SSH_HOST }}
SSH_KEY: ${{ secrets.SSH_KEY }}
SSH_PORT: ${{ secrets.SSH_PORT }}
SSH_USER: ${{ secrets.SSH_USER }}
SSH_USER_WEB: ${{ secrets.SSH_USER_WEB }}
CFA_USER: ${{ secrets.CFA_USER }}
CFA_PASS: ${{ secrets.CFA_PASS }}
UZIS_TOKEN: ${{ secrets.UZIS_TOKEN }}
steps:
- uses: actions/checkout@v4
- name: Prepare config file
uses: falnyr/replace-env-vars-action@v1.3.2
env:
DB_HOST: ${{ secrets.DB_HOST }}
DB_PORT: ${{ secrets.DB_PORT }}
DB_USER: ${{ secrets.DB_USER }}
DB_PASSWORD: ${{ secrets.DB_PASSWORD }}
DB_NAME: ${{ secrets.DB_NAME }}
TWITTER_CONSUMER_KEY: ${{ secrets.TWITTER_CONSUMER_KEY }}
TWITTER_CONSUMER_SECRET: ${{ secrets.TWITTER_CONSUMER_SECRET }}
TWITTER_ACCESS_TOKEN_KEY: ${{ secrets.TWITTER_ACCESS_TOKEN_KEY }}
TWITTER_ACCESS_TOKEN_SECRET: ${{ secrets.TWITTER_ACCESS_TOKEN_SECRET }}
CFA_USER: ${{ secrets.CFA_USER }}
CFA_PASS: ${{ secrets.CFA_PASS }}
UZIS_TOKEN: ${{ secrets.UZIS_TOKEN }}
with:
filename: config.ci.py
- name: Build release package
run: |
mv config.ci.py config.py
tar -cvf release.tar app data migrations scripts .flaskenv config.py ockovani.py requirements.txt
- name: Setup SSH key
run: |
mkdir -p ~/.ssh/
ssh-keyscan -H ${SSH_HOST} >> ~/.ssh/known_hosts
eval `ssh-agent -s`
echo "${SSH_KEY}" | tr -d '\r' | ssh-add -
echo "SSH_AUTH_SOCK=$SSH_AUTH_SOCK" >> $GITHUB_ENV
- name: Upload release package
run: scp -P ${SSH_PORT} release.tar ${SSH_USER_WEB}@${SSH_HOST}:${TMP_DIR}
- name: Prepare relase directory
run: |
RELEASE_DIR=${RELEASES_DIR}/release_`date "+%Y%m%d_%H%M%S"`
echo "RELEASE_DIR=$RELEASE_DIR" >> $GITHUB_ENV
ssh ${SSH_USER_WEB}@${SSH_HOST} -p ${SSH_PORT} "mkdir ${RELEASE_DIR}"
- name: Unpack release and clean tmp
run: ssh ${SSH_USER_WEB}@${SSH_HOST} -p ${SSH_PORT} "tar -xvf ${TMP_DIR}/release.tar -C ${RELEASE_DIR} && rm ${TMP_DIR}/*"
- name: Create venv and install requirements
run: ssh ${SSH_USER_WEB}@${SSH_HOST} -p ${SSH_PORT} "cd ${RELEASE_DIR} && python3 -m venv venv && source venv/bin/activate && pip install -r requirements.txt --no-cache-dir"
- name: Swap releases
run: ssh ${SSH_USER_WEB}@${SSH_HOST} -p ${SSH_PORT} "rm -f ${APP_DIR} && ln -s ${RELEASE_DIR} ${APP_DIR} && find ${RELEASES_DIR} -maxdepth 1 -mindepth 1 -not -path ${RELEASE_DIR} -exec rm -rf {} \;"
- name: Execute migrations
run: ssh ${SSH_USER_WEB}@${SSH_HOST} -p ${SSH_PORT} "cd ${APP_DIR} && source venv/bin/activate && flask db upgrade"
- name: Restart flask
run: ssh ${SSH_USER}@${SSH_HOST} -p ${SSH_PORT} "sudo systemctl stop ockovani-acc && sudo systemctl start ockovani-acc"