Files
datacontroller.io/.gitea/workflows/publish.yml
T
dc bbb163c25c ci(publish): deploy with @cloudron/surfer 7 and an app password
The publish job used `npx surfer put --token` - the unscoped package, which
resolves to 0.0.2, and the v6 token flow, which Surfer no longer accepts.  Move
to @cloudron/surfer 7.2.0, pinned: username allan plus the per-app password in
the SURFER_PASSWORD secret, app datacontroller.io.

`deploy` rather than `put`: it tars the build, extracts to a staging folder and
swaps it in, so a failed upload leaves the current site serving, and it records
the build's ref and commit in the site history.  Also adds workflow_dispatch, so
a deploy can be run by hand without pushing to main.
2026-10-28 00:29:32 +00:00

52 lines
1.6 KiB
YAML

name: publish
run-name: Publishing the website with a surfer
on:
push:
branches:
- main
workflow_dispatch:
# One deploy at a time: `surfer deploy` swaps the site atomically, so two runs
# racing each other is not corruption, but it is a wasted build and the last
# swap wins.
concurrency:
group: surfer-datacontroller-io
cancel-in-progress: false
jobs:
Build-and-publish:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version-file: '.nvmrc'
- name: Install dependencies
run: npm ci --legacy-peer-deps
- name: Build
run: npm run build
# Deploy tooling pinned to an exact version: the workflow publishes
# whatever is committed, and an unpinned `latest` would let a breaking or
# compromised upstream release ship straight to the live site.
#
# `deploy` (v7) replaces the site atomically - it extracts to a staging
# folder and swaps it in, so a failed upload leaves the current site
# serving. The v6 `put` this replaces was token authenticated and is
# gone; v7 takes the Cloudron username plus an app password for this app.
- name: Publish
env:
SURFER_PASSWORD: ${{ secrets.SURFER_PASSWORD }}
REF_NAME: ${{ gitea.ref_name }}
COMMIT_SHA: ${{ gitea.sha }}
run: |
set -euo pipefail
npx --yes @cloudron/surfer@7.2.0 deploy public \
--server datacontroller.io \
--username allan \
--password "$SURFER_PASSWORD" \
--message "Build from ${REF_NAME} @ ${COMMIT_SHA:0:8}"