File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ name : Deploy Pages
2+
3+ # Self-managed GitHub Pages deploy (Pages source = "GitHub Actions"). We control the action
4+ # versions — all on Node 24 — so there's no Node-20 deprecation warning from the built-in
5+ # builder, and we own the deploy step (which the managed one intermittently timed out on).
6+ #
7+ # It also publishes the Sparkle appcast: the signed appcast.xml is fetched from the latest
8+ # Capsule release at deploy time and shipped with the site (no git commit needed). The schedule
9+ # keeps the feed fresh even without a push; every push redeploys immediately.
10+ on :
11+ push :
12+ branches : [main]
13+ schedule :
14+ - cron : " */15 * * * *"
15+ workflow_dispatch :
16+
17+ permissions :
18+ contents : read
19+ pages : write
20+ id-token : write
21+
22+ # Never cancel an in-progress deploy; let each finish so the site is always consistent.
23+ concurrency :
24+ group : pages
25+ cancel-in-progress : false
26+
27+ jobs :
28+ deploy :
29+ runs-on : ubuntu-latest
30+ environment :
31+ name : github-pages
32+ url : ${{ steps.deployment.outputs.page_url }}
33+ steps :
34+ - uses : actions/checkout@v7
35+
36+ - name : Pull latest signed appcast from the Capsule release
37+ run : |
38+ url="https://github.com/capsule-native/capsule/releases/latest/download/appcast.xml"
39+ if curl -fsSL "$url" -o appcast.xml; then
40+ echo "appcast.xml updated from the latest release."
41+ else
42+ echo "No published appcast on the latest release yet — shipping the placeholder."
43+ fi
44+
45+ - uses : actions/configure-pages@v6
46+
47+ - uses : actions/upload-pages-artifact@v5
48+ with :
49+ path : .
50+
51+ - id : deployment
52+ uses : actions/deploy-pages@v5
Load diff This file was deleted.
Original file line number Diff line number Diff line change @@ -6,9 +6,14 @@ hosts the landing page and the **Sparkle appcast** the app polls for auto-update
66- ** Appcast feed:** < https://capsule-native.github.io/appcast.xml > — this is the app's ` SUFeedURL ` .
77- ` appcast.xml ` is generated and ** EdDSA-signed** by the release pipeline in
88 [ ` capsule-native/capsule ` ] ( https://github.com/capsule-native/capsule ) and attached to each
9- GitHub Release. The [ ** Sync appcast** ] ( .github/workflows/sync-appcast.yml ) workflow here pulls
10- the latest release's ` appcast.xml ` and commits it, which republishes the feed via Pages.
9+ GitHub Release. The [ ** Deploy Pages** ] ( .github/workflows/deploy.yml ) workflow here fetches that
10+ signed ` appcast.xml ` from the latest release ** at deploy time** and ships it with the site — no
11+ commit — then publishes via GitHub Pages.
1112
12- > Do not edit ` appcast.xml ` by hand — the sync workflow overwrites it. To publish immediately
13- > after cutting a release, run the ** Sync appcast** workflow (Actions ▸ Sync appcast ▸ Run
14- > workflow); otherwise it syncs automatically within ~ 15 minutes.
13+ The site is deployed by our own GitHub Actions workflow (Pages source = ** GitHub Actions** ), not
14+ the built-in Jekyll builder, so we control the action versions and the deploy step. It runs on
15+ every push to ` main ` , on a ~ 15-minute schedule (to pick up new releases), and on demand.
16+
17+ > The committed ` appcast.xml ` is only a placeholder — the deploy overwrites it with the latest
18+ > release's signed feed. To publish immediately after cutting a release, run ** Deploy Pages**
19+ > (Actions ▸ Deploy Pages ▸ Run workflow); otherwise the schedule refreshes it within ~ 15 minutes.
You can’t perform that action at this time.
0 commit comments