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

push · v1.2.4 · 594f8e2bran in 56s · 1320 lines of output
queued 1s ran 56s total 56s
5 jobs
1 failed
56s 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 42s
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:553) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.(Use `node --trace-deprecation ...` to show where the warning was created)check 26.10.0 satisfies 24.18.0check 26.9.0 satisfies 24.18.0check 26.8.2 satisfies 24.18.0check 26.8.1 satisfies 24.18.0check 26.8.0 satisfies 24.18.0check 26.7.0 satisfies 24.18.0check 26.6.0 satisfies 24.18.0check 26.5.1 satisfies 24.18.0check 26.5.0 satisfies 24.18.0check 26.4.0 satisfies 24.18.0check 26.3.1 satisfies 24.18.0check 26.3.0 satisfies 24.18.0check 26.2.0 satisfies 24.18.0check 26.1.0 satisfies 24.18.0check 26.0.0 satisfies 24.18.0check 24.21.0 satisfies 24.18.0check 24.20.0 satisfies 24.18.0check 24.19.0 satisfies 24.18.0check 24.18.1 satisfies 24.18.0check 24.18.0 satisfies 24.18.0arm64===x64 && darwin===linuxx64===x64 && darwin===linuxarm64===x64 && linux===linuxx64===x64 && linux===linuxmatched 24.18.0Acquiring 24.18.0 - x64 from https://github.com/actions/node-versions/releases/download/24.18.0-28070977815/node-24.18.0-linux-x64.tar.gzDownloading https://github.com/actions/node-versions/releases/download/24.18.0-28070977815/node-24.18.0-linux-x64.tar.gzDestination /tmp/0c9c17fd-974b-4c77-970f-24bcd62d3f39download 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/20ec8906-64c8-48bc-8af9-02638e17f8c2 -f /tmp/0c9c17fd-974b-4c77-970f-24bcd62d3f39Adding to the cache ...Caching tool node 24.18.0 x64source dir: /tmp/20ec8906-64c8-48bc-8af9-02638e17f8c2destination /tmp/hostedtoolcache/node/24.18.0/x64finished caching tool
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 09:24:25 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": "9595c44e-338c-42ea-8268-6187c3b99710"}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/c4f54f98-4e7b-4546-b4fb-abeb4a48cec5/cache.tzstStarting download of archive to: /tmp/c4f54f98-4e7b-4546-b4fb-abeb4a48cec5/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/c4f54f98-4e7b-4546-b4fb-abeb4a48cec5/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 458msfound 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 12s
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:874) [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: 6852ec70-1921-4355-832d-ef5007d5f94aWorkflow Job Run Backend ID: 742cbf63-3a81-4ed8-8566-13256ca9c665[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 09:24:38 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": "9250468b-49b7-4ce6-a695-80f9f418d099"}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:874) [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 e473d312fef105f2aa7d42806b51b35b0fb6465a43b4fb3a198a6aa7c697d64cFinalizing 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 09:24:40 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": "4c64cf97-b2c4-43aa-921f-fdefe226cf57"}Body: { "artifactId": "3129", "ok": true}Artifact bunny-rollback-13.zip successfully finalized. Artifact ID 3129Artifact bunny-rollback-13 has been successfully uploaded! Final size is 1450300 bytes. Artifact ID is 3129Artifact download URL: https://rickub.com/anthodev/lapin-fute/actions/runs/13/artifacts/3129
successUpload static site to Bunny Storage 20s
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/config-core.jsenvironment: line 9: file: command not foundUploading src/preview-fixture.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-12.pngenvironment: line 9: file: command not foundUploading assets/line-badges/metro-9.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/tram-t1.pngenvironment: line 9: file: command not foundUploading assets/line-badges/metro-2.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/transilien-h.pngenvironment: line 9: file: command not foundUploading assets/line-badges/tram-t13.pngenvironment: line 9: file: command not foundUploading assets/line-badges/rer-a.pngenvironment: line 9: file: command not foundUploading assets/line-badges/metro-1.pngenvironment: line 9: file: command not foundUploading assets/line-badges/rer-c.pngenvironment: line 9: file: command not foundUploading assets/line-badges/tram-t8.pngenvironment: line 9: file: command not foundUploading assets/line-badges/transilien-k.png{"HttpCode":201,"Message":"File uploaded."}environment: line 9: file: command not foundUploading assets/line-badges/tram-t14.svgenvironment: line 9: file: command not foundUploading assets/line-badges/rer-d.pngenvironment: line 9: file: command not foundUploading assets/line-badges/transilien-u.pngenvironment: line 9: file: command not foundUploading assets/line-badges/metro-4.pngenvironment: line 9: file: command not foundUploading assets/line-badges/metro-10.pngenvironment: line 9: file: command not foundUploading assets/line-badges/tram-t7.pngenvironment: line 9: file: command not foundUploading assets/line-badges/metro-7b.pngenvironment: line 9: file: command not foundUploading assets/line-badges/transilien-l.png{"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/line-badges/tram-t4.pngenvironment: 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 found{"HttpCode":201,"Message":"File uploaded."}Uploading 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/rer-b.png{"HttpCode":201,"Message":"File uploaded."}environment: line 9: file: command not foundUploading assets/line-badges/metro-11.png{"HttpCode":201,"Message":"File uploaded."}{"HttpCode":201,"Message":"File uploaded."}environment: line 9: file: command not foundUploading assets/line-badges/tram-t3b.pngenvironment: line 9: file: command not foundUploading assets/line-badges/tram-t5.png{"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/line-badges/transilien-n.pngenvironment: 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."}{"HttpCode":201,"Message":"File uploaded."}{"HttpCode":201,"Message":"File uploaded."}environment: line 9: file: command not foundUploading assets/line-badges/metro-5.pngenvironment: 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-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."}environment: line 9: file: command not foundUploading assets/line-badges/tram-t3a.pngenvironment: line 9: file: command not foundUploading assets/line-badges/tram-t12.pngenvironment: line 9: file: command not foundUploading assets/line-badges/tram-t9.pngenvironment: line 9: file: command not foundUploading assets/line-badges/metro-3b.pngenvironment: 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/line-badges/rer-e.pngenvironment: line 9: file: command not foundUploading assets/lapin-fute-store-80.png{"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-store-144.png{"HttpCode":201,"Message":"File uploaded."}environment: line 9: file: command not foundUploading assets/lapin-fute.svgenvironment: 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 styles/config-page.cssenvironment: line 9: file: command not foundUploading assets/lapin-fute-1024.png{"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."}{"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:1157) [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.