Deploy To Production #153
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |