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