# 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