diff --git a/017990681c9cd0fa0ab0fb90c6f51f3a69f03302f324bb0974cb46a5004203ff.db-shm b/017990681c9cd0fa0ab0fb90c6f51f3a69f03302f324bb0974cb46a5004203ff.db-shm deleted file mode 100644 index 8ad428b..0000000 Binary files a/017990681c9cd0fa0ab0fb90c6f51f3a69f03302f324bb0974cb46a5004203ff.db-shm and /dev/null differ diff --git a/017990681c9cd0fa0ab0fb90c6f51f3a69f03302f324bb0974cb46a5004203ff.db-wal b/017990681c9cd0fa0ab0fb90c6f51f3a69f03302f324bb0974cb46a5004203ff.db-wal deleted file mode 100644 index 5c1acb0..0000000 Binary files a/017990681c9cd0fa0ab0fb90c6f51f3a69f03302f324bb0974cb46a5004203ff.db-wal and /dev/null differ diff --git a/build_and_push.sh b/build_and_push.sh index afe8f01..8eeefac 100755 --- a/build_and_push.sh +++ b/build_and_push.sh @@ -319,12 +319,18 @@ create_gitea_release() { -H "Content-Type: application/json" \ -d "{\"tag_name\": \"$NEW_VERSION\", \"name\": \"$NEW_VERSION\", \"body\": \"$COMMIT_MESSAGE\"}") + local upload_result=false + if echo "$response" | grep -q '"id"'; then 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 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 print_error "Failed to create release $NEW_VERSION" 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") if echo "$check_response" | grep -q '"id"'; then 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 print_error "Release does not exist and creation failed" return 1 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 upload_release_binaries() { local api_url="$1" local token="$2" + local upload_success=true # Get release ID with more robust parsing print_status "Getting release ID for $NEW_VERSION..." @@ -367,37 +384,75 @@ upload_release_binaries() { # Upload x86_64 binary if [[ -f "c-relay-x86_64" ]]; then 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" \ - -F "attachment=@c-relay-x86_64;filename=c-relay-${NEW_VERSION}-linux-x86_64" > /dev/null; then - print_success "Uploaded x86_64 binary" + -F "attachment=@c-relay-x86_64;filename=c-relay-${NEW_VERSION}-linux-x86_64") + + 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 - 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 + else + print_warning "x86_64 binary not found: c-relay-x86_64" fi # Upload ARM64 binary if [[ -f "c-relay-arm64" ]]; then 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" \ - -F "attachment=@c-relay-arm64;filename=c-relay-${NEW_VERSION}-linux-arm64" > /dev/null; then - print_success "Uploaded ARM64 binary" + -F "attachment=@c-relay-arm64;filename=c-relay-${NEW_VERSION}-linux-arm64") + + 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 - 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 + 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 } # Function to clean up release binaries cleanup_release_binaries() { - if [[ -f "c-relay-x86_64" ]]; then - rm -f c-relay-x86_64 - print_status "Cleaned up x86_64 binary" - fi - if [[ -f "c-relay-arm64" ]]; then - rm -f c-relay-arm64 - print_status "Cleaned up ARM64 binary" + local force_cleanup="$1" # Optional parameter to force cleanup even on failure + + if [[ "$force_cleanup" == "force" ]] || [[ "$upload_success" == true ]]; then + if [[ -f "c-relay-x86_64" ]]; then + rm -f c-relay-x86_64 + print_status "Cleaned up x86_64 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 } @@ -433,14 +488,18 @@ main() { git_commit_and_push_no_tag # 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 - print_success "Release $NEW_VERSION completed successfully!" - print_status "Binaries uploaded to Gitea release" - else print_status "=== DEFAULT MODE ==="