Skip to content

ci(site): drop Cloudflare purge, unblocking the deploy workflow - #1114

Open
xiaolai wants to merge 1 commit into
mainfrom
fix/site-tls-drop-cf-purge
Open

ci(site): drop Cloudflare purge, unblocking the deploy workflow#1114
xiaolai wants to merge 1 commit into
mainfrom
fix/site-tls-drop-cf-purge

Conversation

@xiaolai

@xiaolai xiaolai commented Sep 10, 2026

Copy link
Copy Markdown
Owner

Why

deploy-site has failed on all five most recent runs. Build and deploy succeed every time; the only failing step is Purge Cloudflare cache, which gets HTTP 401 because the Cloudflare API credentials went stale. That is why the site content stayed current while the workflow stayed red.

What this changes

Removes the purge step, and the 75-second CDN wait that existed only to sequence before it. The wait's own comment said its sole purpose was to stop the purge re-caching stale content, so with the purge gone it is dead time on every deploy.

Adds a header note recording why there is no purge, so the proxy and the purge do not get quietly re-introduced together later.

Context: this is half of the nlpm.com outage fix

The site has been returning 526 to every visitor for roughly three weeks. The cause is the Cloudflare proxy, not the build:

Check Result
DNS for nlpm.com 104.21.78.50, 172.67.216.239, both Cloudflare proxy IPs
HTTPS response 526 invalid origin certificate
GitHub cert state bad_authz, ACME authorization needs restarting
Last cert expiry 2026-08-17
ACME challenge path Cloudflare 404, never reaches GitHub
gh-pages last deploy 2026-09-08, content current

Cloudflare intercepts /.well-known/acme-challenge/, so GitHub's Let's Encrypt renewal cannot complete. The certificate expired on 2026-08-17 and Cloudflare Full (Strict) has rejected the origin ever since.

The remaining half is a DNS change: point nlpm.com at GitHub's four Pages addresses as a DNS-only record, then restart the ACME authorization and enable Enforce HTTPS. Once that lands, Cloudflare is out of the serving path entirely and this purge step would have nothing to purge.

Merging this is safe independently. The step it removes has been a no-op since the credentials expired.

The purge step has failed on every run since the Cloudflare credentials
went stale, returning HTTP 401 from the API. Build and deploy both
succeed, so the site content stayed current while the workflow reported
failure on all of the last five runs.

The step is also about to become meaningless. nlpm.com is moving to a
DNS-only record with no Cloudflare proxy in front, because proxying is
what broke HTTPS: Cloudflare intercepted GitHub's ACME HTTP-01 challenge,
so the Let's Encrypt certificate could not renew, it expired 2026-08-17,
and Cloudflare Full (Strict) has been returning 526 to every visitor
since. With no proxy there is no edge cache to purge.

Removes the 75-second CDN wait along with it. That sleep existed only to
keep the purge from re-caching stale content, as its own comment stated,
so without the purge it is pure dead time on every deploy.

Leaves a header note recording the interaction, so the proxy and the
purge do not get re-introduced together later.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant