Mirror releases and seed README in AlvinArch-releases for discovery
Tests / tests (push) Successful in 2m22s
Tests / tests (push) Successful in 2m22s
Create a matching git tag + release in alvinlollo/AlvinArch-releases next to the main repo release, seed a short README there pointing back to AlvinArch (workflow status badges on top), and extend release pruning to the releases repo so both stay capped at 3.
This commit is contained in:
@@ -162,9 +162,23 @@ jobs:
|
||||
for zst in "${zst_files[@]}"; do
|
||||
cp "$zst" "$REPO_DIR/releases/$TAG_NAME/"
|
||||
done
|
||||
|
||||
# Seed a short README redirecting to the main repo (status badges on top)
|
||||
cat > "$REPO_DIR/README.md" <<'MDEOF'
|
||||
[](https://git.vilaythong.us/alvinlollo/AlvinArch/actions?workflow=build-iso.yaml)
|
||||
[](https://git.vilaythong.us/alvinlollo/AlvinArch/actions?workflow=tests.yaml)
|
||||
|
||||
# AlvinArch Releases
|
||||
|
||||
Compressed (zstd) Arch Linux live ISOs built automatically by
|
||||
[alvinlollo/AlvinArch](https://git.vilaythong.us/alvinlollo/AlvinArch).
|
||||
|
||||
**Main repository:** [alvinlollo/AlvinArch](https://git.vilaythong.us/alvinlollo/AlvinArch)
|
||||
MDEOF
|
||||
|
||||
git -C "$REPO_DIR" config user.name "Gitea Actions"
|
||||
git -C "$REPO_DIR" config user.email "actions@gitea.local"
|
||||
git -C "$REPO_DIR" add .gitattributes "releases/$TAG_NAME"
|
||||
git -C "$REPO_DIR" add .gitattributes README.md "releases/$TAG_NAME"
|
||||
if git -C "$REPO_DIR" diff --cached --quiet; then
|
||||
echo "⚠️ No changes to commit for $TAG_NAME — releasing as-is." >&2
|
||||
else
|
||||
@@ -212,31 +226,52 @@ jobs:
|
||||
|
||||
echo " ✅ Released $TAG_NAME (ID: $RELEASE_ID) with download link + SHA-256 checksums"
|
||||
|
||||
# Mirror the release tag on the releases repo for redundancy/discovery
|
||||
if ! git -C "$REPO_DIR" ls-remote --exit-code origin \
|
||||
refs/tags/"$TAG_NAME" >/dev/null 2>&1; then
|
||||
git -C "$REPO_DIR" tag "$TAG_NAME"
|
||||
if ! git -C "$REPO_DIR" push --quiet origin "$TAG_NAME" 2>/dev/null; then
|
||||
echo "❌ Failed to push tag $TAG_NAME to $RELEASES_REPO." >&2
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
if ! curl -sf -o /dev/null -H "Authorization: token $GITEA_TOKEN" \
|
||||
"$GITEA_API/repos/$RELEASES_REPO/releases/tags/$TAG_NAME"; then
|
||||
curl -sf -X POST \
|
||||
-H "Authorization: token $GITEA_TOKEN" \
|
||||
-H "Content-Type: application/json" \
|
||||
"$GITEA_API/repos/$RELEASES_REPO/releases" \
|
||||
-d "$payload" > /dev/null
|
||||
echo " ✅ Mirrored $TAG_NAME release on $RELEASES_REPO"
|
||||
fi
|
||||
|
||||
- name: Keep only latest 3 releases
|
||||
if: success()
|
||||
env:
|
||||
GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }}
|
||||
GITEA_API: http://192.168.1.168:3000/api/v1
|
||||
REPOSITORY: ${{ github.repository }}
|
||||
RELEASES_REPO: alvinlollo/AlvinArch-releases
|
||||
run: |
|
||||
set -euo pipefail
|
||||
test -n "$GITEA_TOKEN"
|
||||
|
||||
# Fetch all release ids, oldest first
|
||||
readarray -t ids < <(curl -sf -H "Authorization: token $GITEA_TOKEN" \
|
||||
"$GITEA_API/repos/$REPOSITORY/releases" \
|
||||
| jq -er 'sort_by(.created_at) | .[].id')
|
||||
for repo in "$REPOSITORY" "$RELEASES_REPO"; do
|
||||
echo "Pruning old releases in $repo..."
|
||||
readarray -t ids < <(curl -sf -H "Authorization: token $GITEA_TOKEN" \
|
||||
"$GITEA_API/repos/$repo/releases" \
|
||||
| jq -er 'sort_by(.created_at) | .[].id')
|
||||
|
||||
# Delete the oldest releases, keeping only the 3 newest
|
||||
to_delete=$(( ${#ids[@]} - 3 ))
|
||||
if (( to_delete > 0 )); then
|
||||
for ((i = 0; i < to_delete; i++)); do
|
||||
id=${ids[$i]}
|
||||
echo "Deleting old release ID: $id"
|
||||
curl -sf -X DELETE -H "Authorization: token $GITEA_TOKEN" \
|
||||
"$GITEA_API/repos/$REPOSITORY/releases/$id"
|
||||
done
|
||||
fi
|
||||
to_delete=$(( ${#ids[@]} - 3 ))
|
||||
if (( to_delete > 0 )); then
|
||||
for ((i = 0; i < to_delete; i++)); do
|
||||
id=${ids[$i]}
|
||||
echo "Deleting old release ID: $id (in $repo)"
|
||||
curl -sf -X DELETE -H "Authorization: token $GITEA_TOKEN" \
|
||||
"$GITEA_API/repos/$repo/releases/$id"
|
||||
done
|
||||
fi
|
||||
done
|
||||
|
||||
- name: Cleanup mkarchiso mounts and workdirs
|
||||
if: always() # Runs on success, failure, or cancellation
|
||||
|
||||
Reference in New Issue
Block a user