From db9461cf590bdb58f3c0eef02f9a4b2d620e06a0 Mon Sep 17 00:00:00 2001 From: Duncan Tourolle Date: Thu, 24 Sep 2026 02:15:09 +0200 Subject: [PATCH] ci: read the zip list with cut, not a bash-only IFS The upload loop used IFS=$'\t', but the job steps run under /bin/sh, which is dash in the builder image. dash does not expand $'\t', so IFS became the characters $, \ and t and every path was split on "t": "artifacts/srfplay_1.2.0.9.zip" reached curl as "s/srfplay_...", which failed with exit 26 after the release had already been created. This broke both the v1.2.0 release and the nightly. cut -f3 is plain POSIX. Checked by running the upload and manifest steps under the builder image's dash with curl stubbed. Co-Authored-By: Claude Opus 5.5 (1M context) --- .gitea/workflows/latest.yaml | 4 ++-- .gitea/workflows/release.yaml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.gitea/workflows/latest.yaml b/.gitea/workflows/latest.yaml index c51e8bb..a1f230a 100644 --- a/.gitea/workflows/latest.yaml +++ b/.gitea/workflows/latest.yaml @@ -111,14 +111,14 @@ jobs: fi # Upload one plugin zip per Jellyfin generation - while IFS=$'\t' read -r _ _ ZIP _; do + cut -f3 artifacts/builds.tsv | while read -r ZIP; do echo "Uploading ${ZIP}..." curl -f -X POST \ -H "Authorization: token ${GITEA_TOKEN}" \ -H "Content-Type: application/zip" \ --data-binary "@${ZIP}" \ "${GITEA_URL}/api/v1/repos/${REPO_OWNER}/${REPO_NAME}/releases/${RELEASE_ID}/assets?name=$(basename "${ZIP}")" - done < artifacts/builds.tsv + done # Upload build.yaml echo "Uploading build.yaml..." diff --git a/.gitea/workflows/release.yaml b/.gitea/workflows/release.yaml index 75f4e42..ce850e3 100644 --- a/.gitea/workflows/release.yaml +++ b/.gitea/workflows/release.yaml @@ -91,14 +91,14 @@ jobs: fi # Upload one plugin zip per Jellyfin generation - while IFS=$'\t' read -r _ _ ZIP _; do + cut -f3 artifacts/builds.tsv | while read -r ZIP; do echo "Uploading ${ZIP}..." curl -f -X POST \ -H "Authorization: token ${GITEA_TOKEN}" \ -H "Content-Type: application/zip" \ --data-binary "@${ZIP}" \ "${GITEA_URL}/api/v1/repos/${REPO_OWNER}/${REPO_NAME}/releases/${RELEASE_ID}/assets?name=$(basename "${ZIP}")" - done < artifacts/builds.tsv + done # Upload build.yaml echo "Uploading build.yaml..."