Files
xltoolbox.net/.gitea/workflows/build-and-deploy.yaml
T
2026-08-08 11:41:41 +02:00

72 lines
2.0 KiB
YAML

name: Build and Deploy
on:
push:
branches:
- main
schedule:
- cron: '0 0 * * *'
timezone: 'Europe/Berlin'
workflow_dispatch:
jobs:
build-and-deploy:
runs-on: self-hosted
container:
image: ghcr.io/gohugoio/hugo:latest
options: --user root
env:
HUGO_ENVIRONMENT: production
steps:
- name: Checkout
uses: actions/checkout@v4
# with:
# submodules: true # Required if your theme is a Git submodule
# fetch-depth: 0 # Hugo uses full history for .GitInfo and lastmod
- name: Install git and git-lfs
run: |
apk add --no-cache git git-lfs
git lfs install
- name: Pull LFS objects
run: git lfs pull
- name: Install Bootstrap/Sass
run: |
npm install bootstrap sass
mkdir -p themes/bootstrap-theme/assets/scss/bootstrap
cp -r node_modules/bootstrap/scss/. themes/bootstrap-theme/assets/scss/bootstrap
- name: Update modules
run: hugo mod get -u
- name: Build site
env:
HUGO_GIT_BRANCH: ${{ gitea.ref_name }}
run: hugo --minify
- name: Install rsync and openssh-client
run: |
apk add --no-cache rsync openssh-client
# Hugo's official image is Alpine-based; use apk.
# If a Debian-based Hugo image is used, swap to:
# apt-get update && apt-get install -y rsync openssh-client
- name: Set up SSH key
run: |
mkdir -p ~/.ssh
echo "${{ secrets.DEPLOY_SSH_KEY }}" > ~/.ssh/id_ed25519
chmod 600 ~/.ssh/id_ed25519
echo "${{ secrets.DEPLOY_KNOWN_HOSTS }}" > ~/.ssh/known_hosts
chmod 644 ~/.ssh/known_hosts
- name: Deploy via rsync
run: |
rsync -avz --delete \
-e "ssh -i ~/.ssh/id_ed25519 -o StrictHostKeyChecking=yes" \
public/ \
${{ secrets.DEPLOY_USER }}@${{ secrets.DEPLOY_HOST }}:/${{ secrets.DEPLOY_SUBDIR }}