photos/.forgejo/workflows/deploy.yml
2026-05-31 14:29:43 +01:00

76 lines
1.7 KiB
YAML

name: Check & deploy
on:
push:
branches: ['main']
pull_request:
branches: ['main']
workflow_dispatch:
permissions:
contents: read
jobs:
validate:
runs-on: docker
# Superseded validation runs can be cancelled freely.
concurrency:
group: 'photos-validate-${{ github.ref }}'
cancel-in-progress: true
steps:
- uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version-file: '.nvmrc'
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Lint and static checks
run: npm run lint:check
- name: Unit tests
run: npm test
- name: Build
run: npm run build
- name: Install Playwright browser
run: npx playwright install --with-deps chromium
- name: End-to-end smoke test
run: npm run test:e2e
deploy:
runs-on: docker
needs: validate
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
# Never cancel an in-flight deploy: rsync --delete must finish or the live
# site can be left half-deleted. Newer deploys queue behind this one.
concurrency:
group: 'photos-deploy-${{ github.ref }}'
cancel-in-progress: false
steps:
- uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version-file: '.nvmrc'
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Build
run: npm run build
- name: Copy build to host pages mount
run: |
apt update && apt install -y rsync
rsync -a --delete --mkpath --chmod=ugo=rwx dist/ /pages/photos/