Compression was 5.3 GiB -> 5.2 GiB (98.6%) — negligible savings for the extra build time. Upload the .iso directly as a release asset.
This commit is contained in:
@@ -24,12 +24,12 @@ jobs:
|
||||
set -euo pipefail
|
||||
mkdir -p /tmp/localrepo
|
||||
cp localrepo/*.pkg.tar.zst localrepo/local-aur.db* localrepo/local-aur.files* /tmp/localrepo/
|
||||
sed -i 's|file:///home/alvin/alvinarch/localrepo|file:///tmp/localrepo|' pacman.conf
|
||||
sed -i 's|file:///home/alvin/AlvinArch/localrepo|file:///tmp/localrepo|' pacman.conf
|
||||
|
||||
- name: Install archiso and dependencies
|
||||
run: |
|
||||
set -euo pipefail
|
||||
pacman -Syu --noconfirm --needed archiso jq zstd
|
||||
pacman -Syu --noconfirm --needed archiso jq
|
||||
|
||||
- name: Ensure /dev/stdin exists for mkinitcpio
|
||||
run: |
|
||||
@@ -102,15 +102,13 @@ jobs:
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Collect the ISOs produced by the build
|
||||
# Collect the ISOs produced by the build and record SHA-256
|
||||
isos=(out/*.iso)
|
||||
if (( ${#isos[@]} == 0 )); then
|
||||
echo "❌ No ISO found in out/ — nothing to upload, aborting." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Compress each ISO with zstd and record its SHA-256
|
||||
zst_files=()
|
||||
sha256sums=()
|
||||
for iso in "${isos[@]}"; do
|
||||
fname=$(basename "$iso")
|
||||
@@ -120,19 +118,15 @@ jobs:
|
||||
echo "❌ '$iso' is only $size bytes — refusing to upload (not an ISO)." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Compressing $fname ($(( size / 1024 / 1024 )) MiB) with zstd..."
|
||||
zstd -T0 -19 -f "$iso" -o "$iso.zst" --rm
|
||||
sha=$(sha256sum "$iso.zst" | awk '{print $1}')
|
||||
echo " ✅ ${fname}.zst: $(( $(stat -c %s "$iso.zst") / 1024 / 1024 )) MiB, sha256=$sha"
|
||||
zst_files+=("$iso.zst")
|
||||
sha=$(sha256sum "$iso" | awk '{print $1}')
|
||||
echo " ✅ $fname: $(( size / 1024 / 1024 )) MiB, sha256=$sha"
|
||||
sha256sums+=("$sha")
|
||||
done
|
||||
|
||||
# Build the release body with SHA-256 checksums
|
||||
printf -v body 'Arch Linux live ISO %s\n\nChecksums (SHA-256):\n' "$RELEASE_NAME"
|
||||
for i in "${!zst_files[@]}"; do
|
||||
printf -v line -- '- `%s`: sha256 `%s`\n' "$(basename "${zst_files[$i]}")" "${sha256sums[$i]}"
|
||||
for i in "${!isos[@]}"; do
|
||||
printf -v line -- '- `%s`: sha256 `%s`\n' "$(basename "${isos[$i]}")" "${sha256sums[$i]}"
|
||||
body+="$line"
|
||||
done
|
||||
|
||||
@@ -146,14 +140,14 @@ jobs:
|
||||
-d "$payload" | jq -er '.id')
|
||||
echo " ✅ Created release $TAG_NAME (ID: $RELEASE_ID)"
|
||||
|
||||
# Upload each .zst file as a release asset
|
||||
for i in "${!zst_files[@]}"; do
|
||||
fname=$(basename "${zst_files[$i]}")
|
||||
size=$(stat -c %s "${zst_files[$i]}")
|
||||
# Upload each ISO as a release asset
|
||||
for i in "${!isos[@]}"; do
|
||||
fname=$(basename "${isos[$i]}")
|
||||
size=$(stat -c %s "${isos[$i]}")
|
||||
echo "Uploading $fname ($(( size / 1024 / 1024 )) MiB) to release $TAG_NAME..."
|
||||
curl -sf -X POST \
|
||||
-H "Authorization: token $GITEA_TOKEN" \
|
||||
-F "attachment=@${zst_files[$i]}" \
|
||||
-F "attachment=@${isos[$i]}" \
|
||||
"$GITEA_API/repos/$REPOSITORY/releases/$RELEASE_ID/assets" | jq -er '.browser_download_url'
|
||||
echo " ✅ Uploaded $fname"
|
||||
done
|
||||
@@ -208,4 +202,3 @@ jobs:
|
||||
run: |
|
||||
set -eu
|
||||
rm -rf "$PWD/out"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user