From 8f4579f97c82643132e8e877b0806d16cc86bbef Mon Sep 17 00:00:00 2001 From: luochen570 <1160510664@qq.com> Date: Sat, 30 May 2026 01:34:14 +0800 Subject: [PATCH] ci: split cross build package uploads --- .../workflows/build-windows-cross-linux.yml | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/.gitea/workflows/build-windows-cross-linux.yml b/.gitea/workflows/build-windows-cross-linux.yml index b4e9aee..9452688 100644 --- a/.gitea/workflows/build-windows-cross-linux.yml +++ b/.gitea/workflows/build-windows-cross-linux.yml @@ -121,13 +121,31 @@ jobs: (cd dist-windows-cross && 7z a -tzip "${PACKAGE_NAME}.zip" "${PACKAGE_NAME}" >/dev/null) (cd dist-windows-cross && sha256sum "${PACKAGE_NAME}.zip" > "${PACKAGE_NAME}.zip.sha256") + # 当前 Gitea 上传入口约 60 秒会返回 502;大文件按 15 MiB 分片上传。 + ZIP="dist-windows-cross/${PACKAGE_NAME}.zip" + split -b 15M -d -a 3 "$ZIP" "${ZIP}.part-" + (cd dist-windows-cross && sha256sum "${PACKAGE_NAME}.zip".part-* > "${PACKAGE_NAME}.zip.parts.sha256") + du -h "$ZIP" "${ZIP}".part-* + - name: Verify package run: | set -euo pipefail test -s dist-windows-cross/chengnan-windows-x86_64-cross.zip + test -s dist-windows-cross/chengnan-windows-x86_64-cross.zip.part-000 + test -s dist-windows-cross/chengnan-windows-x86_64-cross.zip.parts.sha256 (cd dist-windows-cross && sha256sum -c chengnan-windows-x86_64-cross.zip.sha256) + (cd dist-windows-cross && sha256sum -c chengnan-windows-x86_64-cross.zip.parts.sha256) 7z l dist-windows-cross/chengnan-windows-x86_64-cross.zip | grep 'chengnan.exe' 7z l dist-windows-cross/chengnan-windows-x86_64-cross.zip | grep 'platforms/' + python3 - <<'PY' + from pathlib import Path + limit = 20 * 1024 * 1024 + for part in Path('dist-windows-cross').glob('chengnan-windows-x86_64-cross.zip.part-*'): + size = part.stat().st_size + print(part.name, size) + if size > limit: + raise SystemExit(f'{part} is too large for the current Gitea upload path') + PY - name: Upload package to Gitea Packages env: @@ -157,6 +175,10 @@ jobs: exit 1 fi } - upload_file "dist-windows-cross/${PACKAGE_NAME}.zip" "${API_BASE}/${PACKAGE_NAME}.zip" + for part in dist-windows-cross/${PACKAGE_NAME}.zip.part-*; do + upload_file "$part" "${API_BASE}/$(basename "$part")" + done upload_file "dist-windows-cross/${PACKAGE_NAME}.zip.sha256" "${API_BASE}/${PACKAGE_NAME}.zip.sha256" + upload_file "dist-windows-cross/${PACKAGE_NAME}.zip.parts.sha256" "${API_BASE}/${PACKAGE_NAME}.zip.parts.sha256" echo "Package uploaded to: ${API_BASE}/" + echo "Download all ${PACKAGE_NAME}.zip.part-* files, then reconstruct with: cat ${PACKAGE_NAME}.zip.part-* > ${PACKAGE_NAME}.zip"