66 lines
2.1 KiB
YAML
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
|