Files
webgpu-portfolio/.gitea/workflows/deploy.yml
2026-08-21 03:47:10 +02:00

66 lines
2.1 KiB
YAML

# Gitea Actions workflow — build, test, deploy
# Shows deployment status on the repo page, Actions tab, and commits.
name: Build & Deploy
on:
push:
branches: [master]
jobs:
# ---- Job 1: Typecheck & Build ----
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: recursive
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 22
- name: Install dependencies
run: cd gpu-bg && npm ci
- name: Typecheck
run: cd gpu-bg && npm run typecheck
# Vite build is done inside Docker, so this is just a fast sanity check.
# Full build + test happens in the Docker multi-stage build below.
# ---- Job 2: Docker build + deploy ----
deploy:
needs: build
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
# Required: themes/hugo-coder is a git submodule; hugo fails with
# "theme not found" if it isn't initialized before docker build.
submodules: recursive
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Build Docker image (includes npm test gate)
run: docker compose build
- name: Deploy via docker compose
run: |
docker compose up -d --remove-orphans
sleep 3
docker compose ps
- name: Smoke test
run: |
curl -sf --retry 5 --retry-delay 2 http://127.0.0.1:8080/ | grep -q 'id="gpu"' && echo "canvas OK"
curl -sf http://127.0.0.1:8080/gpu/engine.js -o /dev/null && echo "engine bundle OK"
curl -sf http://127.0.0.1:8080/about/ -o /dev/null && echo "about OK"
curl -sf http://127.0.0.1:8080/projects/ -o /dev/null && echo "projects OK"
curl -sf http://127.0.0.1:8080/resume/ -o /dev/null && echo "resume OK"
curl -sf http://127.0.0.1:8080/posts/ -o /dev/null && echo "posts OK"
curl -s http://127.0.0.1:8080/nonexistent -o /dev/null -w "%{http_code}\n" # expect 404