Remove jq dependency from release workflow
Some checks failed
Build and Release / build (push) Failing after 12s

- Replace jq with grep for parsing JSON responses
- Use curl -w to capture HTTP response codes
- Improve error handling and logging
- Check HTTP response codes for upload success
- Should work on runners without jq installed
- Fixes 'command not found' error on release creation
This commit is contained in:
Ducky SSH User
2025-12-20 06:28:25 +00:00
parent e6f705486d
commit 999a595b9c

View File

@@ -103,26 +103,25 @@ jobs:
echo "Creating release for tag: $TAG"
echo "Repository: $REPO_OWNER/$REPO_NAME"
# Get or create release
RELEASE_JSON=$(curl -s -X GET \
-H "Authorization: token $GITEA_TOKEN" \
"$GITEA_URL/api/v1/repos/$REPO_OWNER/$REPO_NAME/releases/tags/$TAG" 2>/dev/null || echo "{}")
RELEASE_ID=$(echo "$RELEASE_JSON" | jq -r '.id // empty' 2>/dev/null)
if [ -z "$RELEASE_ID" ]; then
# Create release using Gitea API
echo "Creating new release..."
RELEASE_JSON=$(curl -s -X POST \
RESPONSE=$(curl -s -X POST \
-H "Authorization: token $GITEA_TOKEN" \
-H "Content-Type: application/json" \
-d "{\"tag_name\":\"$TAG\",\"name\":\"Release $TAG\",\"draft\":false,\"prerelease\":false}" \
"$GITEA_URL/api/v1/repos/$REPO_OWNER/$REPO_NAME/releases")
RELEASE_ID=$(echo "$RELEASE_JSON" | jq -r '.id')
echo "Created release ID: $RELEASE_ID"
else
echo "Using existing release ID: $RELEASE_ID"
# Extract release ID using grep instead of jq
RELEASE_ID=$(echo "$RESPONSE" | grep -o '"id":[0-9]*' | head -1 | grep -o '[0-9]*')
if [ -z "$RELEASE_ID" ]; then
echo "Failed to create release. Response:"
echo "$RESPONSE"
exit 1
fi
echo "Created release ID: $RELEASE_ID"
# Upload all binaries
echo "Uploading release artifacts..."
for file in bin/*; do
@@ -130,15 +129,18 @@ jobs:
filename=$(basename "$file")
echo " Uploading: $filename"
curl -s -X POST \
UPLOAD_RESPONSE=$(curl -s -w "\n%{http_code}" -X POST \
-H "Authorization: token $GITEA_TOKEN" \
-F "attachment=@$file" \
"$GITEA_URL/api/v1/repos/$REPO_OWNER/$REPO_NAME/releases/$RELEASE_ID/assets" > /dev/null
"$GITEA_URL/api/v1/repos/$REPO_OWNER/$REPO_NAME/releases/$RELEASE_ID/assets")
if [ $? -eq 0 ]; then
echo " ✓ $filename uploaded"
HTTP_CODE=$(echo "$UPLOAD_RESPONSE" | tail -n 1)
if [ "$HTTP_CODE" = "201" ] || [ "$HTTP_CODE" = "200" ]; then
echo " ✓ $filename uploaded (HTTP $HTTP_CODE)"
else
echo " ✗ Failed to upload $filename"
echo " ✗ Failed to upload $filename (HTTP $HTTP_CODE)"
echo "Response: $(echo "$UPLOAD_RESPONSE" | head -n -1)"
fi
fi
done