anthodev/lapin-futepublic Fork
⑂ develop
Commits
⬇ Clone ▾
git clone https://git.rickub.com/anthodev/lapin-fute.git
git clone ssh://git@rickub.com/anthodev/lapin-fute.git

Host key fingerprint (ed25519): SHA256:iycHnxEyq0Q7uyVpB7JlznP0G7JrTPXLYRcAU5CSLhc — verify it before your first connect.

Download ZIP
failure

Deploy configuration site to Bunny #18

push · v1.2.4 · 594f8e2bran in 34s · 1177 lines of output
queued 1s ran 34s total 34s
5 jobs
1 failed
34s duration
— tests
1 artifacts
failureBuild release PBW → astral-sh/setup-uv@d0cc045d04ccac9d8b7881df0226f9e82c39688e View log
Step failed A step exited non-zero. Open the log for the failing command's output.
API rate limit exceeded for 46.105.119.221. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.) - https://docs.github.com/rest/overview/resources-in-the-rest-api#rate-limiting API rate limit exceeded for 46.105.119.221. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.) - https://docs.github.com/rest/overview/resources-in-the-rest-api#rate-limiting
Run quality checks
Build release PBW
Build and deploy configuration site
Publish Rickub release notes
queued
Publish release to the RePebble store
queued
successBuild and deploy configuration site 21s
successSet up job
cloning anthodev/lapin-fute @ 594f8e2be218c2a45f575ff3a3782de4be8e74f5action actions/setup-node@v4: node20 (_actions/actions/setup-node/v4)action actions/upload-artifact@v4: node20 (_actions/actions/upload-artifact/v4)
successactions/checkout@v4 <1s
(checkout already performed by the runner — delivered as the read-only work disk)
successactions/setup-node@v4 5s
ciguest: network up (172.30.0.6/30 via 172.30.0.5)ciguest: starting dockerd (overlay2, data-root on scratch)ciguest: dockerd is readyciguest: loaded baked image postgres_16-alpine.tar.gz: Loaded image: postgres:16-alpineciguest: 1 baked image archive(s) loaded (no per-job registry pull needed)ciguest: logged into registry registry.rickub.com as rickubNode version file is not JSON fileResolved .node-version as 24.18.0isExplicit: 24.18.0explicit? truechecking cache: /tmp/hostedtoolcache/node/24.18.0/x64not foundAttempting to download 24.18.0...No manifest cachedGetting manifest from actions/node-versions@main(node:546) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.(Use `node --trace-deprecation ...` to show where the warning was created)API rate limit exceeded for 46.105.119.221. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)HttpClientError: API rate limit exceeded for 46.105.119.221. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.) at HttpClient.<anonymous> (/workspace/_actions/actions/setup-node/v4/dist/setup/index.js:9848:33) at Generator.next (<anonymous>) at fulfilled (/workspace/_actions/actions/setup-node/v4/dist/setup/index.js:9238:58) at process.processTicksAndRejections (node:internal/process/task_queues:104:5)Falling back to download directly from Nodeevaluating 752 versionsmatched: v24.18.0Acquiring 24.18.0 - x64 from https://nodejs.org/dist/v24.18.0/node-v24.18.0-linux-x64.tar.gzDownloading https://nodejs.org/dist/v24.18.0/node-v24.18.0-linux-x64.tar.gzDestination /tmp/894aadc5-e804-448a-8207-2fdaffbce5fedownload completeExtracting ...Checking tar --versiontar (GNU tar) 1.34Copyright (C) 2021 Free Software Foundation, Inc.License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.This is free software: you are free to change and redistribute it.There is NO WARRANTY, to the extent permitted by law.Written by John Gilmore and Jay Fenlason.[command]/usr/bin/tar xz --strip 1 --warning=no-unknown-keyword --overwrite -C /tmp/3cefbe84-095b-452a-ac87-6cd0947daca2 -f /tmp/894aadc5-e804-448a-8207-2fdaffbce5feAdding to the cache ...Caching tool node 24.18.0 x64source dir: /tmp/3cefbe84-095b-452a-ac87-6cd0947daca2destination /tmp/hostedtoolcache/node/24.18.0/x64finished caching toolDone
Environment details
node: v24.18.0npm: 11.16.0yarn:
[command]/tmp/hostedtoolcache/node/24.18.0/x64/bin/npm config get cache/tmp/home/.npmnpm's cache folder "/tmp/home/.npm" configured for the root directoryfollowSymbolicLinks 'true'followSymbolicLinks 'true'implicitDescendants 'true'matchDirectories 'true'omitBrokenSymbolicLinks 'true'excludeHiddenFiles 'false'Search path '/workspace/lapin-fute/package-lock.json'/workspace/lapin-fute/package-lock.jsonFound 1 files to hash.primary key is node-cache-Linux-x64-npm-a248b8d11d416f5f7a7b7af693c6e633aa3d6ad94371b1dfb598abbaace16723Cache service version: v2Resolved Keys:["node-cache-Linux-x64-npm-a248b8d11d416f5f7a7b7af693c6e633aa3d6ad94371b1dfb598abbaace16723"]Checking zstd --quiet --version1.5.4zstd version: 1.5.4[Request] GetCacheEntryDownloadURL http://172.30.255.1:8888/twirp/github.actions.results.api.v1.CacheService/GetCacheEntryDownloadURL[Response] - 200Headers: { "content-length": "1003", "content-security-policy": "default-src 'self'; img-src 'self' data:; style-src 'self'; script-src 'self'; base-uri 'none'; frame-ancestors 'none'; object-src 'none'; form-action 'self' https://payment.stancer.com", "content-type": "application/json", "date": "Wed, 07 Oct 2026 15:26:14 GMT", "permissions-policy": "accelerometer=(), autoplay=(), camera=(), display-capture=(), encrypted-media=(), fullscreen=(self), geolocation=(), gyroscope=(), magnetometer=(), microphone=(), midi=(), payment=(), usb=()", "referrer-policy": "strict-origin-when-cross-origin", "strict-transport-security": "max-age=31536000; includeSubDomains", "x-content-type-options": "nosniff", "x-request-id": "88eb3519-30d8-42d6-b33e-73adb2c2a625"}Body: { "matchedKey": "node-cache-Linux-x64-npm-a248b8d11d416f5f7a7b7af693c6e633aa3d6ad94371b1dfb598abbaace16723", "matched_key": "node-cache-Linux-x64-npm-a248b8d11d416f5f7a7b7af693c6e633aa3d6ad94371b1dfb598abbaace16723", "ok": true, "signedDownloadUrl": "http://172.30.255.1:8888/twirp/_blob/download/cache?sig=***", "signed_download_url": "http://172.30.255.1:8888/twirp/_blob/download/cache?sig=***"}Cache hit for: node-cache-Linux-x64-npm-a248b8d11d416f5f7a7b7af693c6e633aa3d6ad94371b1dfb598abbaace16723Archive path: /tmp/e23db981-3c57-43f0-9976-8c507549b655/cache.tzstStarting download of archive to: /tmp/e23db981-3c57-43f0-9976-8c507549b655/cache.tzstUse Azure SDK: trueDownload concurrency: 8Request timeout (ms): 30000Cache segment download timeout mins env var: undefinedSegment download timeout (ms): 600000Lookup only: falseCache Size: ~0 MB (345085 B)[command]/usr/bin/tar -xf /tmp/e23db981-3c57-43f0-9976-8c507549b655/cache.tzst -P -C /workspace/lapin-fute --use-compress-program unzstdCache restored successfullyCache restored from key: node-cache-Linux-x64-npm-a248b8d11d416f5f7a7b7af693c6e633aa3d6ad94371b1dfb598abbaace16723##[add-matcher]/workspace/_actions/actions/setup-node/v4/.github/tsc.json##[add-matcher]/workspace/_actions/actions/setup-node/v4/.github/eslint-stylish.json##[add-matcher]/workspace/_actions/actions/setup-node/v4/.github/eslint-compact.json
successnpm ci <1s
Run
npm ci
added 7 packages, and audited 12 packages in 384msfound 0 vulnerabilities
successBuild static configuration page <1s
Run
npm run build:config-page
> lapin-fute@1.2.4 build:config-page> node scripts/build-config-site.mjs --page-onlyconfig page ready: /workspace/lapin-fute/var/config-site (existing hosted catalog left unchanged)
successBack up mutable production files 8s
Run
set -euo pipefail

[[ -n "$BUNNY_STORAGE_ENDPOINT" ]] || { echo "Missing required production variable BUNNY_STORAGE_ENDPOINT" >&2; exit 1; }
[[ -n "$BUNNY_STORAGE_PASSWORD" ]] || { echo "Missing required production secret BUNNY_STORAGE_PASSWORD" >&2; exit 1; }
endpoint="${BUNNY_STORAGE_ENDPOINT%/}"
case "$endpoint" in
  https://*) ;;
  *) echo "BUNNY_STORAGE_ENDPOINT must use HTTPS" >&2; exit 1 ;;
esac
mkdir -p var/deploy-backup/files
: > var/deploy-backup/missing

# Feed the loop through a plain pipe. Process substitution exposes
# the file list as a /dev/fd path, which is unavailable on some
# hardened runners and aborts the backup before any upload.
find var/config-site -type f -print0 \
  | while IFS= read -r -d '' file; do
    relative_path="${file#var/config-site/}"
    case "$relative_path" in
      *[!A-Za-z0-9._/-]* | /* | *../*)
        echo "Refusing unsafe backup path: $relative_path" >&2
        exit 1
        ;;
    esac

    target="var/deploy-backup/files/$relative_path"
    mkdir -p "$(dirname "$target")"
    status="$(curl --silent --show-error \
      --output "$target" \
      --write-out '%{http_code}' \
      --header "AccessKey: $BUNNY_STORAGE_PASSWORD" \
      "$endpoint/$relative_path")"
    case "$status" in
      200) ;;
      404)
        rm -f "$target"
        printf '%s\0' "$relative_path" >> var/deploy-backup/missing
        ;;
      *)
        echo "Could not back up $relative_path: HTTP $status" >&2
        exit 1
        ;;
    esac
  done
successRetain rollback bundle 1s
followSymbolicLinks 'true'implicitDescendants 'true'omitBrokenSymbolicLinks 'true'excludeHiddenFiles 'true'(node:869) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.(Use `node --trace-deprecation ...` to show where the warning was created)followSymbolicLinks 'true'implicitDescendants 'true'matchDirectories 'true'omitBrokenSymbolicLinks 'true'excludeHiddenFiles 'true'Search path '/workspace/lapin-fute/var/deploy-backup'Removing /workspace/lapin-fute/var/deploy-backup from rawSearchResults because it is a directoryRemoving /workspace/lapin-fute/var/deploy-backup/files from rawSearchResults because it is a directoryRemoving /workspace/lapin-fute/var/deploy-backup/files/assets from rawSearchResults because it is a directoryFile:/workspace/lapin-fute/var/deploy-backup/files/assets/lapin-fute-1024.jpg was found using the provided searchPathFile:/workspace/lapin-fute/var/deploy-backup/files/assets/lapin-fute-1024.png was found using the provided searchPathFile:/workspace/lapin-fute/var/deploy-backup/files/assets/lapin-fute-store-144.png was found using the provided searchPathFile:/workspace/lapin-fute/var/deploy-backup/files/assets/lapin-fute-store-80.png was found using the provided searchPathFile:/workspace/lapin-fute/var/deploy-backup/files/assets/lapin-fute.svg was found using the provided searchPathRemoving /workspace/lapin-fute/var/deploy-backup/files/assets/line-badges from rawSearchResults because it is a directoryFile:/workspace/lapin-fute/var/deploy-backup/files/assets/line-badges/attribution.json was found using the provided searchPathFile:/workspace/lapin-fute/var/deploy-backup/files/assets/line-badges/metro-1.png was found using the provided searchPathFile:/workspace/lapin-fute/var/deploy-backup/files/assets/line-badges/metro-10.png was found using the provided searchPathFile:/workspace/lapin-fute/var/deploy-backup/files/assets/line-badges/metro-11.png was found using the provided searchPathFile:/workspace/lapin-fute/var/deploy-backup/files/assets/line-badges/metro-12.png was found using the provided searchPathFile:/workspace/lapin-fute/var/deploy-backup/files/assets/line-badges/metro-13.png was found using the provided searchPathFile:/workspace/lapin-fute/var/deploy-backup/files/assets/line-badges/metro-14.png was found using the provided searchPathFile:/workspace/lapin-fute/var/deploy-backup/files/assets/line-badges/metro-2.png was found using the provided searchPathFile:/workspace/lapin-fute/var/deploy-backup/files/assets/line-badges/metro-3.png was found using the provided searchPathFile:/workspace/lapin-fute/var/deploy-backup/files/assets/line-badges/metro-3b.png was found using the provided searchPathFile:/workspace/lapin-fute/var/deploy-backup/files/assets/line-badges/metro-4.png was found using the provided searchPathFile:/workspace/lapin-fute/var/deploy-backup/files/assets/line-badges/metro-5.png was found using the provided searchPathFile:/workspace/lapin-fute/var/deploy-backup/files/assets/line-badges/metro-6.png was found using the provided searchPathFile:/workspace/lapin-fute/var/deploy-backup/files/assets/line-badges/metro-7.png was found using the provided searchPathFile:/workspace/lapin-fute/var/deploy-backup/files/assets/line-badges/metro-7b.png was found using the provided searchPathFile:/workspace/lapin-fute/var/deploy-backup/files/assets/line-badges/metro-8.png was found using the provided searchPathFile:/workspace/lapin-fute/var/deploy-backup/files/assets/line-badges/metro-9.png was found using the provided searchPathFile:/workspace/lapin-fute/var/deploy-backup/files/assets/line-badges/rer-a.png was found using the provided searchPathFile:/workspace/lapin-fute/var/deploy-backup/files/assets/line-badges/rer-b.png was found using the provided searchPathFile:/workspace/lapin-fute/var/deploy-backup/files/assets/line-badges/rer-c.png was found using the provided searchPathFile:/workspace/lapin-fute/var/deploy-backup/files/assets/line-badges/rer-d.png was found using the provided searchPathFile:/workspace/lapin-fute/var/deploy-backup/files/assets/line-badges/rer-e.png was found using the provided searchPathFile:/workspace/lapin-fute/var/deploy-backup/files/assets/line-badges/tram-t1.png was found using the provided searchPathFile:/workspace/lapin-fute/var/deploy-backup/files/assets/line-badges/tram-t10.png was found using the provided searchPathFile:/workspace/lapin-fute/var/deploy-backup/files/assets/line-badges/tram-t11.png was found using the provided searchPathFile:/workspace/lapin-fute/var/deploy-backup/files/assets/line-badges/tram-t12.png was found using the provided searchPathFile:/workspace/lapin-fute/var/deploy-backup/files/assets/line-badges/tram-t13.png was found using the provided searchPathFile:/workspace/lapin-fute/var/deploy-backup/files/assets/line-badges/tram-t14.svg was found using the provided searchPathFile:/workspace/lapin-fute/var/deploy-backup/files/assets/line-badges/tram-t2.png was found using the provided searchPathFile:/workspace/lapin-fute/var/deploy-backup/files/assets/line-badges/tram-t3a.png was found using the provided searchPathFile:/workspace/lapin-fute/var/deploy-backup/files/assets/line-badges/tram-t3b.png was found using the provided searchPathFile:/workspace/lapin-fute/var/deploy-backup/files/assets/line-badges/tram-t4.png was found using the provided searchPathFile:/workspace/lapin-fute/var/deploy-backup/files/assets/line-badges/tram-t5.png was found using the provided searchPathFile:/workspace/lapin-fute/var/deploy-backup/files/assets/line-badges/tram-t6.png was found using the provided searchPathFile:/workspace/lapin-fute/var/deploy-backup/files/assets/line-badges/tram-t7.png was found using the provided searchPathFile:/workspace/lapin-fute/var/deploy-backup/files/assets/line-badges/tram-t8.png was found using the provided searchPathFile:/workspace/lapin-fute/var/deploy-backup/files/assets/line-badges/tram-t9.png was found using the provided searchPathFile:/workspace/lapin-fute/var/deploy-backup/files/assets/line-badges/transilien-h.png was found using the provided searchPathFile:/workspace/lapin-fute/var/deploy-backup/files/assets/line-badges/transilien-j.png was found using the provided searchPathFile:/workspace/lapin-fute/var/deploy-backup/files/assets/line-badges/transilien-k.png was found using the provided searchPathFile:/workspace/lapin-fute/var/deploy-backup/files/assets/line-badges/transilien-l.png was found using the provided searchPathFile:/workspace/lapin-fute/var/deploy-backup/files/assets/line-badges/transilien-n.png was found using the provided searchPathFile:/workspace/lapin-fute/var/deploy-backup/files/assets/line-badges/transilien-p.png was found using the provided searchPathFile:/workspace/lapin-fute/var/deploy-backup/files/assets/line-badges/transilien-r.png was found using the provided searchPathFile:/workspace/lapin-fute/var/deploy-backup/files/assets/line-badges/transilien-u.png was found using the provided searchPathFile:/workspace/lapin-fute/var/deploy-backup/files/assets/line-badges/transilien-v.png was found using the provided searchPathFile:/workspace/lapin-fute/var/deploy-backup/files/index.html was found using the provided searchPathRemoving /workspace/lapin-fute/var/deploy-backup/files/src from rawSearchResults because it is a directoryFile:/workspace/lapin-fute/var/deploy-backup/files/src/catalog-client.js was found using the provided searchPathFile:/workspace/lapin-fute/var/deploy-backup/files/src/config-core.js was found using the provided searchPathFile:/workspace/lapin-fute/var/deploy-backup/files/src/config-page.js was found using the provided searchPathRemoving /workspace/lapin-fute/var/deploy-backup/files/src/generated from rawSearchResults because it is a directoryFile:/workspace/lapin-fute/var/deploy-backup/files/src/generated/journey-patterns.js was found using the provided searchPathFile:/workspace/lapin-fute/var/deploy-backup/files/src/line-badge-assets.js was found using the provided searchPathFile:/workspace/lapin-fute/var/deploy-backup/files/src/preview-fixture.js was found using the provided searchPathFile:/workspace/lapin-fute/var/deploy-backup/files/src/search-text.js was found using the provided searchPathRemoving /workspace/lapin-fute/var/deploy-backup/files/styles from rawSearchResults because it is a directoryFile:/workspace/lapin-fute/var/deploy-backup/files/styles/config-page.css was found using the provided searchPathFile:/workspace/lapin-fute/var/deploy-backup/missing was found using the provided searchPathWith the provided path, there will be 61 files uploadedRoot artifact directory is /workspace/lapin-fute/var/deploy-backupArtifact name is valid!Root directory input is valid!Workflow Run Backend ID: 9e617390-065e-4526-9336-ab5f1d30119cWorkflow Job Run Backend ID: 80af25b5-75f9-4d9e-8a37-9f66636df60a[Request] CreateArtifact http://172.30.255.1:8888/twirp/github.actions.results.api.v1.ArtifactService/CreateArtifact[Response] - 200Headers: { "content-length": "389", "content-security-policy": "default-src 'self'; img-src 'self' data:; style-src 'self'; script-src 'self'; base-uri 'none'; frame-ancestors 'none'; object-src 'none'; form-action 'self' https://payment.stancer.com", "content-type": "application/json", "date": "Wed, 07 Oct 2026 15:26:22 GMT", "permissions-policy": "accelerometer=(), autoplay=(), camera=(), display-capture=(), encrypted-media=(), fullscreen=(self), geolocation=(), gyroscope=(), magnetometer=(), microphone=(), midi=(), payment=(), usb=()", "referrer-policy": "strict-origin-when-cross-origin", "strict-transport-security": "max-age=31536000; includeSubDomains", "x-content-type-options": "nosniff", "x-request-id": "f57cd8f0-f29e-4b23-be2c-f7b05ad7d5d8"}Body: { "ok": true, "signedUploadUrl": "http://172.30.255.1:8888/twirp/_blob/upload?sig=***"}Creating Artifact archive with compressionLevel: 6Zip write high watermark value 8388608Zip read high watermark value 8388608Uploading artifact zip to blob storage with maxConcurrency: 5, bufferSize: 8388608Beginning upload of artifact content to blob storageZip stream for upload has ended.Zip stream for upload has finished.(node:869) [DEP0169] DeprecationWarning: `url.parse()` behavior is not standardized and prone to errors that have security implications. Use the WHATWG URL API instead. CVEs are not issued for `url.parse()` vulnerabilities.Uploaded bytes 1450300Finished uploading artifact content to blob storage!SHA256 digest of uploaded artifact zip is 4e5b69ece8f93fea636f23b71f2ca89d3997244c9ceecfcd0b76dd7fd08c89d4Finalizing artifact upload[Request] FinalizeArtifact http://172.30.255.1:8888/twirp/github.actions.results.api.v1.ArtifactService/FinalizeArtifact[Response] - 200Headers: { "content-length": "32", "content-security-policy": "default-src 'self'; img-src 'self' data:; style-src 'self'; script-src 'self'; base-uri 'none'; frame-ancestors 'none'; object-src 'none'; form-action 'self' https://payment.stancer.com", "content-type": "application/json", "date": "Wed, 07 Oct 2026 15:26:23 GMT", "permissions-policy": "accelerometer=(), autoplay=(), camera=(), display-capture=(), encrypted-media=(), fullscreen=(self), geolocation=(), gyroscope=(), magnetometer=(), microphone=(), midi=(), payment=(), usb=()", "referrer-policy": "strict-origin-when-cross-origin", "strict-transport-security": "max-age=31536000; includeSubDomains", "x-content-type-options": "nosniff", "x-request-id": "0be3f7d4-76be-473f-9c87-c6768bfa76e1"}Body: { "artifactId": "3189", "ok": true}Artifact bunny-rollback-18.zip successfully finalized. Artifact ID 3189Artifact bunny-rollback-18 has been successfully uploaded! Final size is 1450300 bytes. Artifact ID is 3189Artifact download URL: https://rickub.com/anthodev/lapin-fute/actions/runs/18/artifacts/3189
successUpload static site to Bunny Storage 4s
Run
set -euo pipefail

test -n "$BUNNY_STORAGE_ENDPOINT"
test -n "$BUNNY_STORAGE_PASSWORD"
endpoint="${BUNNY_STORAGE_ENDPOINT%/}"
case "$endpoint" in
  https://*) ;;
  *) echo "BUNNY_STORAGE_ENDPOINT must use HTTPS" >&2; exit 1 ;;
esac

upload_file() {
  local file="$1"
  local relative_path="${file#var/config-site/}"
  local mime_type
  case "$relative_path" in
    *[!A-Za-z0-9._/-]* | /* | *../*)
      echo "Refusing unsafe deployment path: $relative_path" >&2
      exit 1
      ;;
  esac
  mime_type="$(file --brief --mime-type "$file")"
  echo "Uploading $relative_path"
  curl --fail --silent --show-error \
    --retry 3 --retry-all-errors \
    --request PUT \
    --header "AccessKey: $BUNNY_STORAGE_PASSWORD" \
    --header "Content-Type: $mime_type" \
    --upload-file "$file" \
    "$endpoint/$relative_path"
}

export endpoint BUNNY_STORAGE_PASSWORD
export -f upload_file
find var/config-site -type f -print0 \
  | xargs -0 --no-run-if-empty --max-args=1 --max-procs=32 \
      bash -c 'upload_file "$1"' _
environment: line 9: file: command not foundUploading index.htmlenvironment: line 9: file: command not foundUploading src/preview-fixture.jsenvironment: line 9: file: command not foundUploading src/config-core.jsenvironment: line 9: file: command not foundUploading src/config-page.jsenvironment: line 9: file: command not foundUploading src/search-text.jsenvironment: line 9: file: command not foundUploading src/catalog-client.jsenvironment: line 9: file: command not foundUploading src/generated/journey-patterns.jsenvironment: line 9: file: command not foundenvironment: line 9: file: command not foundUploading assets/line-badges/transilien-r.pngUploading src/line-badge-assets.jsenvironment: line 9: file: command not foundUploading assets/line-badges/metro-14.pngenvironment: line 9: file: command not foundenvironment: line 9: file: command not foundUploading assets/line-badges/metro-9.pngUploading assets/line-badges/metro-12.pngenvironment: line 9: file: command not foundUploading assets/line-badges/tram-t11.pngenvironment: line 9: file: command not foundUploading assets/line-badges/tram-t10.pngenvironment: line 9: file: command not foundUploading assets/line-badges/transilien-p.pngenvironment: line 9: file: command not foundUploading assets/line-badges/metro-7.pngenvironment: line 9: file: command not foundUploading assets/line-badges/tram-t1.pngenvironment: line 9: file: command not foundUploading assets/line-badges/metro-2.pngenvironment: line 9: file: command not foundUploading assets/line-badges/tram-t13.pngenvironment: line 9: file: command not foundUploading assets/line-badges/metro-1.pngenvironment: line 9: file: command not foundUploading assets/line-badges/tram-t8.pngenvironment: line 9: file: command not foundUploading assets/line-badges/rer-d.pngenvironment: line 9: file: command not foundUploading assets/line-badges/transilien-u.png{"HttpCode":201,"Message":"File uploaded."}environment: line 9: file: command not foundUploading assets/line-badges/transilien-h.pngenvironment: line 9: file: command not foundUploading assets/line-badges/transilien-k.pngenvironment: line 9: file: command not foundUploading assets/line-badges/rer-a.pngenvironment: line 9: file: command not foundUploading assets/line-badges/rer-c.pngenvironment: line 9: file: command not foundUploading assets/line-badges/tram-t14.svg{"HttpCode":201,"Message":"File uploaded."}environment: line 9: file: command not foundUploading assets/line-badges/metro-4.png{"HttpCode":201,"Message":"File uploaded."}{"HttpCode":201,"Message":"File uploaded."}environment: line 9: file: command not foundUploading assets/line-badges/metro-10.pngenvironment: line 9: file: command not foundUploading assets/line-badges/transilien-l.png{"HttpCode":201,"Message":"File uploaded."}{"HttpCode":201,"Message":"File uploaded."}environment: line 9: file: command not foundUploading assets/line-badges/tram-t7.png{"HttpCode":201,"Message":"File uploaded."}environment: line 9: file: command not foundUploading assets/line-badges/metro-7b.png{"HttpCode":201,"Message":"File uploaded."}environment: line 9: file: command not foundUploading assets/line-badges/tram-t4.png{"HttpCode":201,"Message":"File uploaded."}{"HttpCode":201,"Message":"File uploaded."}environment: line 9: file: command not foundUploading assets/line-badges/transilien-j.png{"HttpCode":201,"Message":"File uploaded."}environment: line 9: file: command not foundUploading assets/line-badges/attribution.jsonenvironment: line 9: file: command not foundUploading assets/line-badges/transilien-v.png{"HttpCode":201,"Message":"File uploaded."}environment: line 9: file: command not foundUploading assets/line-badges/metro-13.pngenvironment: line 9: file: command not foundUploading assets/line-badges/metro-11.pngenvironment: line 9: file: command not foundUploading assets/line-badges/tram-t3b.pngenvironment: line 9: file: command not foundUploading assets/line-badges/tram-t5.pngenvironment: line 9: file: command not foundUploading assets/line-badges/rer-b.pngenvironment: line 9: file: command not foundUploading assets/line-badges/transilien-n.png{"HttpCode":201,"Message":"File uploaded."}{"HttpCode":201,"Message":"File uploaded."}environment: line 9: file: command not foundUploading assets/line-badges/tram-t6.png{"HttpCode":201,"Message":"File uploaded."}{"HttpCode":201,"Message":"File uploaded."}{"HttpCode":201,"Message":"File uploaded."}environment: line 9: file: command not foundenvironment: line 9: file: command not foundUploading assets/line-badges/metro-8.pngUploading assets/line-badges/metro-5.png{"HttpCode":201,"Message":"File uploaded."}{"HttpCode":201,"Message":"File uploaded."}environment: line 9: file: command not foundUploading assets/line-badges/tram-t2.png{"HttpCode":201,"Message":"File uploaded."}environment: line 9: file: command not foundUploading assets/line-badges/metro-6.png{"HttpCode":201,"Message":"File uploaded."}environment: line 9: file: command not foundUploading assets/line-badges/tram-t3a.png{"HttpCode":201,"Message":"File uploaded."}{"HttpCode":201,"Message":"File uploaded."}{"HttpCode":201,"Message":"File uploaded."}environment: line 9: file: command not foundUploading assets/line-badges/tram-t12.pngenvironment: line 9: file: command not foundUploading assets/line-badges/rer-e.pngenvironment: line 9: file: command not foundUploading assets/line-badges/tram-t9.pngenvironment: line 9: file: command not foundUploading assets/line-badges/metro-3b.png{"HttpCode":201,"Message":"File uploaded."}{"HttpCode":201,"Message":"File uploaded."}{"HttpCode":201,"Message":"File uploaded."}environment: line 9: file: command not foundUploading assets/line-badges/metro-3.png{"HttpCode":201,"Message":"File uploaded."}environment: line 9: file: command not foundUploading assets/lapin-fute-store-144.pngenvironment: line 9: file: command not foundUploading assets/lapin-fute-store-80.pngenvironment: line 9: file: command not foundUploading assets/lapin-fute-1024.jpg{"HttpCode":201,"Message":"File uploaded."}environment: line 9: file: command not foundenvironment: line 9: file: command not foundUploading assets/lapin-fute-1024.png{"HttpCode":201,"Message":"File uploaded."}{"HttpCode":201,"Message":"File uploaded."}environment: line 9: file: command not foundUploading styles/config-page.css{"HttpCode":201,"Message":"File uploaded."}{"HttpCode":201,"Message":"File uploaded."}Uploading assets/lapin-fute.svg{"HttpCode":201,"Message":"File uploaded."}{"HttpCode":201,"Message":"File uploaded."}{"HttpCode":201,"Message":"File uploaded."}{"HttpCode":201,"Message":"File uploaded."}{"HttpCode":201,"Message":"File uploaded."}{"HttpCode":201,"Message":"File uploaded."}{"HttpCode":201,"Message":"File uploaded."}{"HttpCode":201,"Message":"File uploaded."}{"HttpCode":201,"Message":"File uploaded."}{"HttpCode":201,"Message":"File uploaded."}{"HttpCode":201,"Message":"File uploaded."}{"HttpCode":201,"Message":"File uploaded."}{"HttpCode":201,"Message":"File uploaded."}{"HttpCode":201,"Message":"File uploaded."}{"HttpCode":201,"Message":"File uploaded."}{"HttpCode":201,"Message":"File uploaded."}{"HttpCode":201,"Message":"File uploaded."}{"HttpCode":201,"Message":"File uploaded."}{"HttpCode":201,"Message":"File uploaded."}{"HttpCode":201,"Message":"File uploaded."}{"HttpCode":201,"Message":"File uploaded."}{"HttpCode":201,"Message":"File uploaded."}{"HttpCode":201,"Message":"File uploaded."}{"HttpCode":201,"Message":"File uploaded."}{"HttpCode":201,"Message":"File uploaded."}{"HttpCode":201,"Message":"File uploaded."}{"HttpCode":201,"Message":"File uploaded."}
successPurge Bunny CDN cache <1s
Run
set -euo pipefail
test -n "$BUNNY_API_KEY"
test -n "$BUNNY_PULL_ZONE_ID"
curl --fail --silent --show-error \
  --retry 3 --retry-all-errors \
  --request POST \
  --header "AccessKey: $BUNNY_API_KEY" \
  "https://api.bunny.net/pullzone/$BUNNY_PULL_ZONE_ID/purgeCache"
successVerify served static site 1s
Run
for attempt in 1 2 3; do
  if npm run verify:config-site -- --page-only; then
    exit 0
  fi
  if [[ "$attempt" != 3 ]]; then sleep 10; fi
done
exit 1
> lapin-fute@1.2.4 verify:config-site> node scripts/verify-config-site.mjs --page-only{ "origin": "https://lapin-fute.b-cdn.net/", "revision": null, "sourceRevision": null, "fileCount": 60, "catalogJsonCount": 0}
skippedRestore previous mutable files after failure
Run
set -euo pipefail

endpoint="${BUNNY_STORAGE_ENDPOINT%/}"
case "$endpoint" in
  https://*) ;;
  *) echo "BUNNY_STORAGE_ENDPOINT must use HTTPS" >&2; exit 1 ;;
esac
restore_file() {
  local file="$1"
  local relative_path="${file#var/deploy-backup/files/}"
  local mime_type
  mime_type="$(file --brief --mime-type "$file")"
  echo "Restoring $relative_path"
  curl --fail --silent --show-error \
    --request PUT \
    --header "AccessKey: $BUNNY_STORAGE_PASSWORD" \
    --header "Content-Type: $mime_type" \
    --upload-file "$file" \
    "$endpoint/$relative_path"
}
export endpoint BUNNY_STORAGE_PASSWORD
export -f restore_file
find var/deploy-backup/files -type f -print0 \
  | xargs -0 --no-run-if-empty --max-args=1 --max-procs=16 \
      bash -c 'restore_file "$1"' _

while IFS= read -r -d '' relative_path; do
  echo "Removing newly introduced mutable file $relative_path"
  status="$(curl --silent --show-error \
    --request DELETE \
    --header "AccessKey: $BUNNY_STORAGE_PASSWORD" \
    --output /dev/null \
    --write-out '%{http_code}' \
    "$endpoint/$relative_path")"
  case "$status" in
    200 | 201 | 204 | 404) ;;
    *)
      echo "Could not remove $relative_path during rollback: HTTP $status" >&2
      exit 1
      ;;
  esac
done < var/deploy-backup/missing

curl --fail --silent --show-error \
  --request POST \
  --header "AccessKey: $BUNNY_API_KEY" \
  "https://api.bunny.net/pullzone/$BUNNY_PULL_ZONE_ID/purgeCache"
(skipped: step if: condition evaluated to false)
Post actions/setup-node@v4
(node:1152) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.(Use `node --trace-deprecation ...` to show where the warning was created)Cache hit occurred on the primary key node-cache-Linux-x64-npm-a248b8d11d416f5f7a7b7af693c6e633aa3d6ad94371b1dfb598abbaace16723, not saving cache.

No test reports for this run.

Tell a job where its test runner writes its report and this tab fills in: how many tests passed, failed and were skipped, a bar of the result at a glance, then every failure first — with the assertion that failed and the output around it — over a per-suite list of cases and their durations. No scrolling a log for the word FAIL.

It is one reports: key on the job — a job key, not a step, so the report is collected whatever the job concluded. JUnit XML and go test -json are both understood, and most runners already emit one of them. reports: is a rickub extension and works only in .rickub/workflows/; in .github/workflows/ it is a parse error on purpose, because those files are also meant to run on github.com.