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 #16

push · v1.2.4 · 594f8e2bran in 9m53s · 1177 lines of output
queued 9m11s ran 42s total 9m53s
5 jobs
1 failed
9m53s 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 22s
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 7s
ciguest: network up (172.30.0.2/30 via 172.30.0.1)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:548) [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 751 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/0803f4b0-39ad-4375-8bda-bd517218cf5ddownload 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/99c03cb1-b77a-4c0f-a837-e37e4046a877 -f /tmp/0803f4b0-39ad-4375-8bda-bd517218cf5dAdding to the cache ...Caching tool node 24.18.0 x64source dir: /tmp/99c03cb1-b77a-4c0f-a837-e37e4046a877destination /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 11:42:19 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": "fa39447f-c119-4017-87a7-523b84072914"}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/34b84c2f-27ec-4e67-a1a1-857971305797/cache.tzstStarting download of archive to: /tmp/34b84c2f-27ec-4e67-a1a1-857971305797/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/34b84c2f-27ec-4e67-a1a1-857971305797/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 545msfound 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 7s
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 2s
followSymbolicLinks 'true'implicitDescendants 'true'omitBrokenSymbolicLinks 'true'excludeHiddenFiles 'true'(node:870) [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: b1218ac6-297f-43fd-9e38-0163d5b9c477Workflow Job Run Backend ID: 372af230-07f7-4b74-85db-f8158b2011a3[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 11:42:28 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": "15166856-554c-4720-8432-3054681ff002"}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:870) [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 d3b11875125f782cf9badebf9de3f064e7ed38701ac3120428ff923977acab26Finalizing 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 11:42:29 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": "5490dd69-73fe-4c08-a1dd-42fbaa3fd850"}Body: { "artifactId": "3158", "ok": true}Artifact bunny-rollback-16.zip successfully finalized. Artifact ID 3158Artifact bunny-rollback-16 has been successfully uploaded! Final size is 1450300 bytes. Artifact ID is 3158Artifact download URL: https://rickub.com/anthodev/lapin-fute/actions/runs/16/artifacts/3158
successUpload static site to Bunny Storage 2s
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 foundenvironment: line 9: file: command not foundUploading src/preview-fixture.jsUploading index.htmlenvironment: 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 foundUploading src/line-badge-assets.jsenvironment: line 9: file: command not foundUploading assets/line-badges/transilien-r.pngenvironment: line 9: file: command not foundUploading assets/line-badges/metro-14.pngenvironment: line 9: file: command not foundUploading assets/line-badges/metro-9.pngenvironment: line 9: file: command not foundUploading 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 foundenvironment: line 9: file: command not foundUploading assets/line-badges/metro-7.pngUploading assets/line-badges/tram-t1.png{"HttpCode":201,"Message":"File uploaded."}environment: line 9: file: command not foundUploading assets/line-badges/metro-2.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/tram-t13.pngenvironment: line 9: file: command not foundUploading assets/line-badges/rer-a.png{"HttpCode":201,"Message":"File uploaded."}environment: line 9: file: command not foundUploading assets/line-badges/metro-1.pngenvironment: line 9: file: command not foundUploading assets/line-badges/rer-c.png{"HttpCode":201,"Message":"File uploaded."}{"HttpCode":201,"Message":"File uploaded."}environment: line 9: file: command not foundUploading assets/line-badges/tram-t8.png{"HttpCode":201,"Message":"File uploaded."}{"HttpCode":201,"Message":"File uploaded."}environment: line 9: file: command not foundUploading assets/line-badges/rer-d.pngenvironment: line 9: file: command not foundUploading assets/line-badges/tram-t14.svgenvironment: line 9: file: command not foundUploading assets/line-badges/transilien-u.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/metro-4.pngenvironment: 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/transilien-l.pngenvironment: line 9: file: command not foundUploading assets/line-badges/metro-7b.pngenvironment: line 9: file: command not foundUploading assets/line-badges/tram-t4.png{"HttpCode":201,"Message":"File uploaded."}environment: line 9: file: command not foundUploading assets/line-badges/transilien-j.pngenvironment: 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."}{"HttpCode":201,"Message":"File uploaded."}environment: line 9: file: command not foundUploading assets/line-badges/rer-b.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/metro-13.pngenvironment: line 9: file: command not foundUploading assets/line-badges/tram-t5.pngenvironment: line 9: file: command not found{"HttpCode":201,"Message":"File uploaded."}Uploading assets/line-badges/transilien-n.pngenvironment: line 9: file: command not foundUploading assets/line-badges/tram-t6.pngenvironment: line 9: file: command not foundUploading assets/line-badges/metro-5.pngenvironment: line 9: file: command not foundUploading assets/line-badges/metro-8.png{"HttpCode":201,"Message":"File uploaded."}{"HttpCode":201,"Message":"File uploaded."}environment: line 9: file: command not foundUploading assets/line-badges/metro-6.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."}{"HttpCode":201,"Message":"File uploaded."}environment: line 9: file: command not foundUploading assets/line-badges/tram-t3a.pngenvironment: line 9: file: command not foundUploading assets/line-badges/rer-e.png{"HttpCode":201,"Message":"File uploaded."}environment: line 9: file: command not foundUploading assets/line-badges/tram-t9.pngenvironment: line 9: file: command not foundUploading assets/line-badges/tram-t12.png{"HttpCode":201,"Message":"File uploaded."}{"HttpCode":201,"Message":"File uploaded."}environment: line 9: file: command not foundUploading assets/line-badges/metro-3b.pngenvironment: line 9: file: command not foundUploading assets/line-badges/metro-3.pngenvironment: line 9: file: command not foundUploading assets/lapin-fute-store-80.png{"HttpCode":201,"Message":"File uploaded."}{"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.svg{"HttpCode":201,"Message":"File uploaded."}{"HttpCode":201,"Message":"File uploaded."}{"HttpCode":201,"Message":"File uploaded."}{"HttpCode":201,"Message":"File uploaded."}environment: line 9: file: command not foundUploading assets/lapin-fute-1024.jpg{"HttpCode":201,"Message":"File uploaded."}{"HttpCode":201,"Message":"File uploaded."}environment: line 9: file: command not foundUploading assets/lapin-fute-1024.pngenvironment: line 9: file: command not foundUploading styles/config-page.css{"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."}{"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 2s
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:1154) [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.