68 lines
2.1 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

name: Build and Deploy
on:
# Trigger the workflow every time you push to the `main` branch
# Using a different branch name? Replace `main` with your branchs name
push:
branches: [ main ]
# Allows you to run this workflow manually from the Actions tab on GitHub.
workflow_dispatch:
# Allow this job to clone the repo and create a page deployment
permissions:
contents: read
pages: write
id-token: write
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup pnpm
uses: pnpm/action-setup@v2
- name: Free up disk space
run: |
# Remove unnecessary large packages
sudo apt-get remove -y '^ghc-.*' '^dotnet-.*' '^llvm-.*' '^mono-.*' '^php.*' '^mongodb-.*' '^mysql-.*'
sudo apt-get remove -y azure-cli google-cloud-sdk google-chrome-stable firefox
sudo apt-get autoremove -y
# Remove large directories
sudo rm -rf /usr/share/dotnet /usr/local/lib/android /opt/ghc /opt/hostedtoolcache
- name: Install system dependencies
run: |
# Free up disk space
sudo rm -rf /var/lib/apt/lists/*
sudo apt-get clean
# Use compression to reduce download size
sudo apt-get update -o Acquire::CompressionTypes::Order::=gz
# Install minimal dependencies
sudo apt-get install -y --no-install-recommends rsync build-essential libvips-dev
# Clean up to save space
sudo apt-get clean
sudo rm -rf /var/lib/apt/lists/*
- name: Setup SSH key
run: |
mkdir -p ~/.ssh
echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
eval $(ssh-agent -s)
ssh-add ~/.ssh/id_rsa
- name: Add server to known_hosts
run: ssh-keyscan ${{ secrets.SERVER_IP }} >> ~/.ssh/known_hosts
- name: Install dependencies
run: pnpm install
- name: Build Astro site
run: pnpm run build
- name: Deploy to server
run: rsync -avzP ./dist/ root@${{ secrets.SERVER_IP }}:/var/www/html/