Skip to content

Deploy To Production #153

Deploy To Production

Deploy To Production #153

Workflow file for this run

name: Deploy To Production
concurrency: production
on:
workflow_dispatch:
workflow_run:
workflows: [Pest Tests and Upload Coverage]
branches:
- main
types:
- completed
jobs:
deploy:
# Use 2024 Ubuntu, because of newer node version
runs-on: ubuntu-24.04
environment: Production
steps:
- name: checkout
uses: actions/checkout@v4
- name: install ssh keys
# Check this thread to understand why it's needed:
# https://stackoverflow.com/a/70447517
run: |
install -m 600 -D /dev/null ~/.ssh/id_rsa
echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_rsa
ssh-keyscan -H ${{ secrets.SSH_HOST }} > ~/.ssh/known_hosts
- name: setup php
uses: shivammathur/setup-php@v2
with:
php-version: 8.3
extensions: dom, curl, libxml, mbstring, zip, fileinfo
- name: install composer deps
run: |
composer install -q --no-ansi --no-interaction --no-scripts --no-dev
tar -czf vendor.tar.gz vendor
- name: install and build npm deps
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
run: |
npm ci
# TODO: Possible to maybe use this: https://import-meta-env.org/guide/getting-started/introduction.html#guide
VITE_POSTHOG_API_KEY=${{ secrets.POSTHOG_API_KEY }} VITE_ARCHYVAS_PASSWORD=${{ secrets.ARCHYVAS_PASSWORD }} VITE_ATSTOVAI_PASSWORD=${{ secrets.ATSTOVAI_PASSWORD }} VITE_SHAREPOINT_CLIENT_ID=${{ secrets.SHAREPOINT_CLIENT_ID }} VITE_SHAREPOINT_TENANT_ID=${{ secrets.SHAREPOINT_TENANT_ID }} npm run build
tar -czf build.tar.gz public/build
- name: build docs
run: |
npm run docs:build
tar -czf docs.tar.gz -C docs/.vitepress/dist .
- name: upload and run on server
# Unpack
run: |
# Test connection
scp build.tar.gz ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }}:${{ vars.SITE_DIR }}/build.tar.gz
scp vendor.tar.gz ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }}:${{ vars.SITE_DIR }}/vendor.tar.gz
scp docs.tar.gz ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }}:${{ vars.SITE_DIR }}/docs.tar.gz
ssh -T ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }} "cd ${{ vars.SITE_DIR }} && git pull && rm -rf public/build && rm -rf vendor && rm -rf public/docs/* && tar -xzf build.tar.gz && tar -xzf vendor.tar.gz && tar -xzf docs.tar.gz -C public/docs && rm build.tar.gz && rm vendor.tar.gz && rm docs.tar.gz"
- name: after upload
run: |
ssh -T ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }} "cd ${{ vars.SITE_DIR }} && /opt/php83/bin/php /usr/local/bin/composer dump-autoload && /opt/php83/bin/php artisan optimize"
rm -rf ~/.ssh