Ryd op i kommentarer
Build & Deploy / deploy (push) Successful in 5m55s

This commit is contained in:
Asger Geel Weirsøe
2026-10-31 14:43:20 +01:00
parent 490835e6ae
commit 288205630e
12 changed files with 21 additions and 116 deletions
+2 -11
View File
@@ -1,11 +1,5 @@
// Pinger IndexNow (Bing/Yandex/Seznam m.fl.) med de sider dette push faktisk ændrede.
//
// Vi sender bevidst IKKE hele sitemappet hver gang: IndexNow er til "det her ændrede sig
// nu", og gentagne fuld-lister ser ud som støj. Kan vi ikke regne diffen ud, springer vi
// over frem for at gætte.
//
// Kør efter `astro build` — dist/sitemap-0.xml bruges som facitliste over gyldige URL'er.
// Google understøtter ikke IndexNow; det her hjælper kun de øvrige motorer.
// Pinger IndexNow med de sider der er ændret i dette push.
// Kør efter `astro build` (bruger dist/sitemap-0.xml).
import { execFileSync } from 'node:child_process';
import fs from 'node:fs';
@@ -62,8 +56,6 @@ const urls = [...new Set(files.map(routeForFile).filter(Boolean).map((r) => ORIG
valid.has(u),
);
// Layout/CSS/config-ændringer rammer hver side, men det er ikke en indholdsændring
// værd at pinge om. Kun ruter med eget ændret kildefil ryger afsted.
if (!urls.length) {
console.log('IndexNow: ingen sider med ændret indhold i dette push — springer over.');
process.exit(0);
@@ -91,7 +83,6 @@ const res = await fetch('https://api.indexnow.org/indexnow', {
body: JSON.stringify(body),
});
// 200 = modtaget, 202 = modtaget men nøglen valideres stadig. Begge er fine.
console.log(`IndexNow: HTTP ${res.status} ${res.statusText}`);
if (![200, 202].includes(res.status)) {
console.log(await res.text().catch(() => ''));
+3 -13
View File
@@ -1,14 +1,5 @@
// Spærre før build: intet blogindlæg går live uden at være godkendt.
//
// Hvert indlæg i src/content/blog skal bære et `godkendt:`-stempel i frontmatter.
// Stemplet er en HMAC-SHA256 over filens sti + indhold (uden selve stempel-linjen)
// + sha256 af hvert billede i indlæggets mappe (src/content/blog/<slug>/),
// lavet med en nøgle som kun godkendelsestjenesten og denne workflow kender. Et
// indlæg der er lagt direkte i repoet, eller ændret efter godkendelse, har derfor
// intet eller et forkert stempel, og så stopper buildet før noget bliver deployet.
//
// Udkast hører ikke hjemme her: repoet er offentligt, så `draft: true` ville stadig
// udgive teksten via git. Udkast ligger i et privat repo indtil de er godkendt.
// Stopper buildet hvis et blogindlæg mangler et gyldigt `godkendt:`-stempel
// (HMAC-SHA256 over sti, indhold og billeder).
//
// PUBLISH_KEY=<hex> node scripts/verify-approvals.mjs
import crypto from 'node:crypto';
@@ -21,8 +12,7 @@ if (!key) {
process.exit(1);
}
// Skal matche godkendelsestjenesten byte for byte. Et indlæg uden billeder har
// ingen @asset-linjer, så dets stempel er det samme som før billeder fandtes.
// Skal matche godkendelsestjenesten byte for byte.
const canonical = (relPath, text, assets = []) => {
const lines = text.replace(/\r\n/g, '\n').split('\n');
if (lines[0] === '---') {