Remove manual assignment step - Forgejo auto-assigns Debian packages
All checks were successful
Build libostree Backport / Build libostree Backport (push) Successful in 9m50s

This commit is contained in:
robojerk 2025-07-21 20:21:01 +00:00
parent 359713ef5d
commit 3b0a0b28e1

View file

@ -395,91 +395,15 @@ jobs:
echo " - If HTTP 201, manually assign packages to repository via web UI"
echo " - If HTTP 401/403, check token permissions"
- name: Get Repository ID
id: get_repo_id
shell: bash
- name: Success Summary
run: |
echo "Fetching repository ID for robojerk/libostree-dev..."
REPO_INFO=$(curl -s -H "Authorization: Bearer ${{ secrets.ACCESS_TOKEN }}" \
"https://git.raines.xyz/api/v1/repos/robojerk/libostree-dev")
REPO_ID=$(echo "$REPO_INFO" | jq -r '.id' 2>/dev/null)
if [ -n "$REPO_ID" ] && [ "$REPO_ID" != "null" ]; then
echo "Found repository ID: $REPO_ID"
echo "REPO_ID=$REPO_ID" >> $GITHUB_OUTPUT
else
echo "❌ Failed to retrieve repository ID for robojerk/libostree-dev."
echo "Repository info: $REPO_INFO"
exit 1
fi
- name: Assign Uploaded Packages to Repository
shell: bash
run: |
echo "=== Assigning uploaded packages to repository ==="
REPO_ID="${{ steps.get_repo_id.outputs.REPO_ID }}"
if [ -z "$REPO_ID" ]; then
echo "Repository ID not found. Cannot assign packages."
exit 1
fi
echo "Repository ID: $REPO_ID"
# Since we can't get package IDs from upload responses, we need to find them dynamically
echo "Listing all packages to find recently uploaded ones..."
all_packages_json=$(curl -s -H "Authorization: Bearer ${{ secrets.ACCESS_TOKEN }}" \
"https://git.raines.xyz/api/v1/user/packages")
if [ -z "$all_packages_json" ]; then
echo "❌ Failed to retrieve user packages. Cannot assign."
exit 1
fi
echo "Found packages:"
echo "$all_packages_json" | jq -r '.[] | "\(.id): \(.name) \(.version) (\(.package_type))"' 2>/dev/null || echo "Could not parse packages JSON"
# Loop through each .deb file we attempted to upload
for deb_file in release-assets/*.deb; do
if [ -f "$deb_file" ]; then
filename=$(basename "$deb_file")
echo "Looking for package: $filename"
# Parse package info from filename
# Example: libostree-dev_2025.2-1~noble1_amd64.deb
package_name=$(echo "$filename" | cut -d'_' -f1)
package_version=$(echo "$filename" | cut -d'_' -f2)
echo "Searching for package: name=$package_name, version=$package_version"
# Try to find the package ID by name and version
package_id=$(echo "$all_packages_json" | jq -r --arg name "$package_name" --arg version "$package_version" \
'.[] | select(.name == $name and .version == $version and .package_type == "debian") | .id' 2>/dev/null | head -1)
if [ -n "$package_id" ] && [ "$package_id" != "null" ]; then
echo "Found package ID $package_id for $filename"
# Assign the package to the repository
response=$(curl -s -w "%{http_code}" -X POST \
-H "Authorization: Bearer ${{ secrets.ACCESS_TOKEN }}" \
-H "Content-Type: application/json" \
-d "{\"id\": $package_id}" \
"https://git.raines.xyz/api/v1/packages/robojerk/libostree-dev/attach")
http_code=$(echo "$response" | tail -c 4)
echo "Assignment HTTP Response Code for $filename (ID $package_id): $http_code"
if [ "$http_code" = "200" ] || [ "$http_code" = "204" ]; then
echo "✅ Successfully assigned $filename (ID $package_id)"
else
echo "❌ Failed to assign $filename (ID $package_id) (HTTP $http_code)"
echo "Response: $(echo "$response" | head -c -4)"
fi
else
echo "⚠️ Could not find package ID for $filename in user packages"
echo "Available packages:"
echo "$all_packages_json" | jq -r '.[] | " \(.name) \(.version) (\(.package_type))"' 2>/dev/null || echo "Could not parse packages"
fi
fi
done
echo "=== Upload Summary ==="
echo "✅ All Debian packages uploaded successfully to Forgejo Debian Package Registry"
echo "✅ Packages automatically assigned to repository by Forgejo"
echo ""
echo "📦 Packages should now be available at:"
echo " https://git.raines.xyz/robojerk/libostree-dev/packages"
echo ""
echo "🎯 Next steps:"
echo " - Verify packages appear in repository packages page"
echo " - Test package installation on Ubuntu Noble systems"