Add automatic package assignment to repository via API
Some checks failed
Build libostree Backport / Build libostree Backport (push) Failing after 9m56s
Some checks failed
Build libostree Backport / Build libostree Backport (push) Failing after 9m56s
This commit is contained in:
parent
2e180ec649
commit
459bdfc569
1 changed files with 124 additions and 13 deletions
|
|
@ -249,36 +249,57 @@ jobs:
|
||||||
|
|
||||||
|
|
||||||
- name: Upload to Debian Package Registry (Primary)
|
- name: Upload to Debian Package Registry (Primary)
|
||||||
|
id: debian_upload
|
||||||
run: |
|
run: |
|
||||||
echo "=== Attempting Debian Package Registry upload with ACCESS_TOKEN ==="
|
echo "=== Attempting Debian Package Registry upload with ACCESS_TOKEN ==="
|
||||||
|
|
||||||
|
# Initialize array to store uploaded package IDs
|
||||||
|
uploaded_debian_ids=()
|
||||||
|
|
||||||
for deb_file in release-assets/*.deb; do
|
for deb_file in release-assets/*.deb; do
|
||||||
if [ -f "$deb_file" ]; then
|
if [ -f "$deb_file" ]; then
|
||||||
echo "Uploading $deb_file to Debian Package Registry..."
|
echo "Uploading $deb_file to Debian Package Registry..."
|
||||||
filename=$(basename "$deb_file")
|
filename=$(basename "$deb_file")
|
||||||
echo "File: $filename"
|
echo "File: $filename"
|
||||||
|
|
||||||
# Use the confirmed working Basic Auth method
|
# Capture full response (headers + body) to parse HTTP code AND package ID
|
||||||
response=$(curl -s -w "%{http_code}" \
|
response_and_code=$(curl -s -i --user "robojerk:${{ secrets.ACCESS_TOKEN }}" \
|
||||||
--user "robojerk:${{ secrets.ACCESS_TOKEN }}" \
|
--upload-file "$deb_file" \
|
||||||
--upload-file "$deb_file" \
|
"https://git.raines.xyz/api/packages/robojerk/debian/pool/noble/main/upload")
|
||||||
"https://git.raines.xyz/api/packages/robojerk/debian/pool/noble/main/upload")
|
|
||||||
|
# Extract HTTP code (from headers)
|
||||||
|
http_code=$(echo "$response_and_code" | head -n 1 | grep -oP 'HTTP/\d.\d \K\d{3}')
|
||||||
|
# Extract JSON body (after headers)
|
||||||
|
response_body=$(echo "$response_and_code" | awk '/^\r?$/{p=1;next}p')
|
||||||
|
|
||||||
http_code=$(echo "$response" | tail -c 4)
|
|
||||||
echo "HTTP Response Code: $http_code"
|
echo "HTTP Response Code: $http_code"
|
||||||
|
|
||||||
if [ "$http_code" = "201" ]; then
|
if [ "$http_code" = "201" ]; then
|
||||||
echo "✅ Debian Package Registry upload SUCCESS for $deb_file"
|
echo "✅ Debian Package Registry upload SUCCESS for $deb_file"
|
||||||
|
# Parse JSON body to get the 'id'
|
||||||
|
package_id=$(echo "$response_body" | jq -r '.id' 2>/dev/null)
|
||||||
|
if [ -n "$package_id" ] && [ "$package_id" != "null" ]; then
|
||||||
|
echo "Captured Package ID: $package_id"
|
||||||
|
uploaded_debian_ids+=("$package_id")
|
||||||
|
else
|
||||||
|
echo "Could not extract Package ID from response for $deb_file."
|
||||||
|
fi
|
||||||
else
|
else
|
||||||
echo "❌ Debian Package Registry upload FAILED for $deb_file (HTTP $http_code)"
|
echo "❌ Debian Package Registry upload FAILED for $deb_file (HTTP $http_code)"
|
||||||
|
echo "Response body: $response_body"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
# Set output for this step
|
||||||
|
echo "debian_package_ids=${uploaded_debian_ids[*]}" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
- name: Upload to Generic Package Registry (Fallback)
|
- name: Upload to Generic Package Registry (Fallback)
|
||||||
|
id: generic_upload
|
||||||
run: |
|
run: |
|
||||||
echo "=== Attempting Generic Package Registry upload (fallback) with ACCESS_TOKEN ==="
|
echo "=== Attempting Generic Package Registry upload (fallback) with ACCESS_TOKEN ==="
|
||||||
|
|
||||||
|
uploaded_generic_ids=()
|
||||||
|
|
||||||
for deb_file in release-assets/*.deb; do
|
for deb_file in release-assets/*.deb; do
|
||||||
if [ -f "$deb_file" ]; then
|
if [ -f "$deb_file" ]; then
|
||||||
echo "Uploading $deb_file to Generic Package Registry..."
|
echo "Uploading $deb_file to Generic Package Registry..."
|
||||||
|
|
@ -290,22 +311,32 @@ jobs:
|
||||||
echo "Version: $version"
|
echo "Version: $version"
|
||||||
echo "File: $filename"
|
echo "File: $filename"
|
||||||
|
|
||||||
# Use the confirmed working Basic Auth method
|
# Capture full response (headers + body) to parse HTTP code AND package ID
|
||||||
response=$(curl -s -w "%{http_code}" \
|
response_and_code=$(curl -s -i --user "robojerk:${{ secrets.ACCESS_TOKEN }}" \
|
||||||
--user "robojerk:${{ secrets.ACCESS_TOKEN }}" \
|
--upload-file "$deb_file" \
|
||||||
--upload-file "$deb_file" \
|
"https://git.raines.xyz/api/packages/robojerk/generic/$package_name/$version/$filename")
|
||||||
"https://git.raines.xyz/api/packages/robojerk/generic/$package_name/$version/$filename")
|
|
||||||
|
http_code=$(echo "$response_and_code" | head -n 1 | grep -oP 'HTTP/\d.\d \K\d{3}')
|
||||||
|
response_body=$(echo "$response_and_code" | awk '/^\r?$/{p=1;next}p')
|
||||||
|
|
||||||
http_code=$(echo "$response" | tail -c 4)
|
|
||||||
echo "HTTP Response Code: $http_code"
|
echo "HTTP Response Code: $http_code"
|
||||||
|
|
||||||
if [ "$http_code" = "201" ]; then
|
if [ "$http_code" = "201" ]; then
|
||||||
echo "✅ Generic Package Registry upload SUCCESS for $deb_file"
|
echo "✅ Generic Package Registry upload SUCCESS for $deb_file"
|
||||||
|
package_id=$(echo "$response_body" | jq -r '.id' 2>/dev/null)
|
||||||
|
if [ -n "$package_id" ] && [ "$package_id" != "null" ]; then
|
||||||
|
echo "Captured Package ID: $package_id"
|
||||||
|
uploaded_generic_ids+=("$package_id")
|
||||||
|
else
|
||||||
|
echo "Could not extract Package ID from response for $deb_file."
|
||||||
|
fi
|
||||||
else
|
else
|
||||||
echo "❌ Generic Package Registry upload FAILED for $deb_file (HTTP $http_code)"
|
echo "❌ Generic Package Registry upload FAILED for $deb_file (HTTP $http_code)"
|
||||||
|
echo "Response body: $response_body"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
echo "generic_package_ids=${uploaded_generic_ids[*]}" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
- name: Check uploaded packages and provide assignment instructions
|
- name: Check uploaded packages and provide assignment instructions
|
||||||
run: |
|
run: |
|
||||||
|
|
@ -334,4 +365,84 @@ jobs:
|
||||||
echo "🎯 Next steps:"
|
echo "🎯 Next steps:"
|
||||||
echo " - Check HTTP response codes above"
|
echo " - Check HTTP response codes above"
|
||||||
echo " - If HTTP 201, manually assign packages to repository via web UI"
|
echo " - If HTTP 201, manually assign packages to repository via web UI"
|
||||||
echo " - If HTTP 401/403, check token permissions"
|
echo " - If HTTP 401/403, check token permissions"
|
||||||
|
|
||||||
|
- name: Get Repository ID
|
||||||
|
id: get_repo_id
|
||||||
|
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
|
||||||
|
run: |
|
||||||
|
echo "=== Assigning uploaded packages to repository ==="
|
||||||
|
|
||||||
|
REPO_ID="${{ steps.get_repo_id.outputs.REPO_ID }}"
|
||||||
|
DEBIAN_PACKAGE_IDS="${{ steps.debian_upload.outputs.debian_package_ids }}"
|
||||||
|
GENERIC_PACKAGE_IDS="${{ steps.generic_upload.outputs.generic_package_ids }}"
|
||||||
|
|
||||||
|
if [ -z "$REPO_ID" ]; then
|
||||||
|
echo "Repository ID not found. Cannot assign packages."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Repository ID: $REPO_ID"
|
||||||
|
echo "Debian Package IDs: $DEBIAN_PACKAGE_IDS"
|
||||||
|
echo "Generic Package IDs: $GENERIC_PACKAGE_IDS"
|
||||||
|
|
||||||
|
# Process Debian packages
|
||||||
|
if [ -n "$DEBIAN_PACKAGE_IDS" ]; then
|
||||||
|
for package_id in $DEBIAN_PACKAGE_IDS; do
|
||||||
|
echo "Assigning Debian package ID $package_id to repo $REPO_ID..."
|
||||||
|
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 Debian package $package_id: $http_code"
|
||||||
|
if [ "$http_code" = "200" ] || [ "$http_code" = "204" ]; then
|
||||||
|
echo "✅ Successfully assigned Debian package ID $package_id"
|
||||||
|
else
|
||||||
|
echo "❌ Failed to assign Debian package ID $package_id (HTTP $http_code)"
|
||||||
|
echo "Response: $response"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
else
|
||||||
|
echo "No Debian package IDs captured for assignment."
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Process Generic packages
|
||||||
|
if [ -n "$GENERIC_PACKAGE_IDS" ]; then
|
||||||
|
for package_id in $GENERIC_PACKAGE_IDS; do
|
||||||
|
echo "Assigning Generic package ID $package_id to repo $REPO_ID..."
|
||||||
|
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 Generic package $package_id: $http_code"
|
||||||
|
if [ "$http_code" = "200" ] || [ "$http_code" = "204" ]; then
|
||||||
|
echo "✅ Successfully assigned Generic package ID $package_id"
|
||||||
|
else
|
||||||
|
echo "❌ Failed to assign Generic package ID $package_id (HTTP $http_code)"
|
||||||
|
echo "Response: $response"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
else
|
||||||
|
echo "No Generic package IDs captured for assignment."
|
||||||
|
fi
|
||||||
Loading…
Add table
Add a link
Reference in a new issue