Compare commits

...

1 Commits

3 changed files with 82 additions and 23 deletions

View File

@@ -319,12 +319,18 @@ create_gitea_release() {
-H "Content-Type: application/json" \ -H "Content-Type: application/json" \
-d "{\"tag_name\": \"$NEW_VERSION\", \"name\": \"$NEW_VERSION\", \"body\": \"$COMMIT_MESSAGE\"}") -d "{\"tag_name\": \"$NEW_VERSION\", \"name\": \"$NEW_VERSION\", \"body\": \"$COMMIT_MESSAGE\"}")
local upload_result=false
if echo "$response" | grep -q '"id"'; then if echo "$response" | grep -q '"id"'; then
print_success "Created release $NEW_VERSION" print_success "Created release $NEW_VERSION"
upload_release_binaries "$api_url" "$token" if upload_release_binaries "$api_url" "$token"; then
upload_result=true
fi
elif echo "$response" | grep -q "already exists"; then elif echo "$response" | grep -q "already exists"; then
print_warning "Release $NEW_VERSION already exists" print_warning "Release $NEW_VERSION already exists"
upload_release_binaries "$api_url" "$token" if upload_release_binaries "$api_url" "$token"; then
upload_result=true
fi
else else
print_error "Failed to create release $NEW_VERSION" print_error "Failed to create release $NEW_VERSION"
print_error "Response: $response" print_error "Response: $response"
@@ -334,18 +340,29 @@ create_gitea_release() {
local check_response=$(curl -s -H "Authorization: token $token" "$api_url/releases/tags/$NEW_VERSION") local check_response=$(curl -s -H "Authorization: token $token" "$api_url/releases/tags/$NEW_VERSION")
if echo "$check_response" | grep -q '"id"'; then if echo "$check_response" | grep -q '"id"'; then
print_warning "Release exists but creation response was unexpected" print_warning "Release exists but creation response was unexpected"
upload_release_binaries "$api_url" "$token" if upload_release_binaries "$api_url" "$token"; then
upload_result=true
fi
else else
print_error "Release does not exist and creation failed" print_error "Release does not exist and creation failed"
return 1 return 1
fi fi
fi fi
# Return based on upload success
if [[ "$upload_result" == true ]]; then
return 0
else
print_error "Binary upload failed"
return 1
fi
} }
# Function to upload release binaries # Function to upload release binaries
upload_release_binaries() { upload_release_binaries() {
local api_url="$1" local api_url="$1"
local token="$2" local token="$2"
local upload_success=true
# Get release ID with more robust parsing # Get release ID with more robust parsing
print_status "Getting release ID for $NEW_VERSION..." print_status "Getting release ID for $NEW_VERSION..."
@@ -367,37 +384,75 @@ upload_release_binaries() {
# Upload x86_64 binary # Upload x86_64 binary
if [[ -f "c-relay-x86_64" ]]; then if [[ -f "c-relay-x86_64" ]]; then
print_status "Uploading x86_64 binary..." print_status "Uploading x86_64 binary..."
if curl -s -X POST "$api_url/releases/$release_id/assets" \ local upload_response=$(curl -s -w "\n%{http_code}" -X POST "$api_url/releases/$release_id/assets" \
-H "Authorization: token $token" \ -H "Authorization: token $token" \
-F "attachment=@c-relay-x86_64;filename=c-relay-${NEW_VERSION}-linux-x86_64" > /dev/null; then -F "attachment=@c-relay-x86_64;filename=c-relay-${NEW_VERSION}-linux-x86_64")
print_success "Uploaded x86_64 binary"
local http_code=$(echo "$upload_response" | tail -n1)
local response_body=$(echo "$upload_response" | head -n -1)
if [[ "$http_code" == "201" ]]; then
print_success "Uploaded x86_64 binary successfully"
else else
print_warning "Failed to upload x86_64 binary" print_error "Failed to upload x86_64 binary (HTTP $http_code)"
print_error "Response: $response_body"
upload_success=false
fi fi
else
print_warning "x86_64 binary not found: c-relay-x86_64"
fi fi
# Upload ARM64 binary # Upload ARM64 binary
if [[ -f "c-relay-arm64" ]]; then if [[ -f "c-relay-arm64" ]]; then
print_status "Uploading ARM64 binary..." print_status "Uploading ARM64 binary..."
if curl -s -X POST "$api_url/releases/$release_id/assets" \ local upload_response=$(curl -s -w "\n%{http_code}" -X POST "$api_url/releases/$release_id/assets" \
-H "Authorization: token $token" \ -H "Authorization: token $token" \
-F "attachment=@c-relay-arm64;filename=c-relay-${NEW_VERSION}-linux-arm64" > /dev/null; then -F "attachment=@c-relay-arm64;filename=c-relay-${NEW_VERSION}-linux-arm64")
print_success "Uploaded ARM64 binary"
local http_code=$(echo "$upload_response" | tail -n1)
local response_body=$(echo "$upload_response" | head -n -1)
if [[ "$http_code" == "201" ]]; then
print_success "Uploaded ARM64 binary successfully"
else else
print_warning "Failed to upload ARM64 binary" print_error "Failed to upload ARM64 binary (HTTP $http_code)"
print_error "Response: $response_body"
upload_success=false
fi fi
else
print_warning "ARM64 binary not found: c-relay-arm64"
fi
# Return success/failure status
if [[ "$upload_success" == true ]]; then
return 0
else
return 1
fi fi
} }
# Function to clean up release binaries # Function to clean up release binaries
cleanup_release_binaries() { cleanup_release_binaries() {
if [[ -f "c-relay-x86_64" ]]; then local force_cleanup="$1" # Optional parameter to force cleanup even on failure
rm -f c-relay-x86_64
print_status "Cleaned up x86_64 binary" if [[ "$force_cleanup" == "force" ]] || [[ "$upload_success" == true ]]; then
fi if [[ -f "c-relay-x86_64" ]]; then
if [[ -f "c-relay-arm64" ]]; then rm -f c-relay-x86_64
rm -f c-relay-arm64 print_status "Cleaned up x86_64 binary"
print_status "Cleaned up ARM64 binary" fi
if [[ -f "c-relay-arm64" ]]; then
rm -f c-relay-arm64
print_status "Cleaned up ARM64 binary"
fi
else
print_warning "Keeping binary files due to upload failures"
print_status "Files available for manual upload:"
if [[ -f "c-relay-x86_64" ]]; then
print_status " - c-relay-x86_64"
fi
if [[ -f "c-relay-arm64" ]]; then
print_status " - c-relay-arm64"
fi
fi fi
} }
@@ -433,14 +488,18 @@ main() {
git_commit_and_push_no_tag git_commit_and_push_no_tag
# Create Gitea release with binaries # Create Gitea release with binaries
create_gitea_release if create_gitea_release; then
print_success "Release $NEW_VERSION completed successfully!"
print_status "Binaries uploaded to Gitea release"
upload_success=true
else
print_error "Release creation or binary upload failed"
upload_success=false
fi
# Cleanup # Cleanup (only if upload was successful)
cleanup_release_binaries cleanup_release_binaries
print_success "Release $NEW_VERSION completed successfully!"
print_status "Binaries uploaded to Gitea release"
else else
print_status "=== DEFAULT MODE ===" print_status "=== DEFAULT MODE ==="