diff --git a/.gitea/workflows/release.yml b/.gitea/workflows/release.yml index b64a408..ab95cf4 100644 --- a/.gitea/workflows/release.yml +++ b/.gitea/workflows/release.yml @@ -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 \ + # Create release using Gitea API + echo "Creating new release..." + RESPONSE=$(curl -s -X POST \ -H "Authorization: token $GITEA_TOKEN" \ - "$GITEA_URL/api/v1/repos/$REPO_OWNER/$REPO_NAME/releases/tags/$TAG" 2>/dev/null || echo "{}") + -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 // empty' 2>/dev/null) + # 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 "Creating new release..." - RELEASE_JSON=$(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" + 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