From 699aaefac3be5da2ba56440d2c2c289c8d5a71c7 Mon Sep 17 00:00:00 2001 From: ilia Date: Sun, 14 Dec 2025 21:21:26 -0500 Subject: [PATCH] Fix: Update CI workflow to improve SonarScanner installation process with enhanced error handling and version management --- .gitea/workflows/ci.yml | 69 ++++++++++++++++++++++++++++++----------- 1 file changed, 51 insertions(+), 18 deletions(-) diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index 3efbf2b..b1d7079 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -297,46 +297,79 @@ jobs: set -e apt-get update && apt-get install -y wget curl unzip openjdk-17-jre - # Download and install SonarScanner - echo "Detecting latest SonarScanner version..." - SONAR_SCANNER_VERSION=$(curl -s https://api.github.com/repos/SonarSource/sonar-scanner-cli/releases/latest | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/' | sed 's/v//') - - if [ -z "$SONAR_SCANNER_VERSION" ]; then - echo "Failed to detect version, using fallback version 5.0.1.3006" - SONAR_SCANNER_VERSION="5.0.1.3006" - fi - - echo "Installing SonarScanner version: ${SONAR_SCANNER_VERSION}" + # Use a known working version to avoid download issues + SONAR_SCANNER_VERSION="5.0.1.3006" SCANNER_URL="https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-${SONAR_SCANNER_VERSION}-linux.zip" + echo "Installing SonarScanner version: ${SONAR_SCANNER_VERSION}" echo "Downloading from: ${SCANNER_URL}" - if ! wget -q --show-progress "${SCANNER_URL}" -O /tmp/sonar-scanner.zip; then + + # Download with verbose error output + if ! wget --progress=bar:force "${SCANNER_URL}" -O /tmp/sonar-scanner.zip 2>&1; then echo "❌ Failed to download SonarScanner" + echo "Checking if file was partially downloaded:" + ls -lh /tmp/sonar-scanner.zip 2>/dev/null || echo "No file found" exit 1 fi + # Verify download + if [ ! -f /tmp/sonar-scanner.zip ] || [ ! -s /tmp/sonar-scanner.zip ]; then + echo "❌ Downloaded file is missing or empty" + exit 1 + fi + + echo "Download complete. File size: $(du -h /tmp/sonar-scanner.zip | cut -f1)" + echo "Extracting SonarScanner..." if ! unzip -q /tmp/sonar-scanner.zip -d /tmp; then echo "❌ Failed to extract SonarScanner" + echo "Archive info:" + file /tmp/sonar-scanner.zip || true + unzip -l /tmp/sonar-scanner.zip 2>&1 | head -20 || true exit 1 fi + # Find the extracted directory (handle both naming conventions) + EXTRACTED_DIR="" if [ -d "/tmp/sonar-scanner-${SONAR_SCANNER_VERSION}-linux" ]; then - mv /tmp/sonar-scanner-${SONAR_SCANNER_VERSION}-linux /opt/sonar-scanner + EXTRACTED_DIR="/tmp/sonar-scanner-${SONAR_SCANNER_VERSION}-linux" elif [ -d "/tmp/sonar-scanner-cli-${SONAR_SCANNER_VERSION}-linux" ]; then - mv /tmp/sonar-scanner-cli-${SONAR_SCANNER_VERSION}-linux /opt/sonar-scanner + EXTRACTED_DIR="/tmp/sonar-scanner-cli-${SONAR_SCANNER_VERSION}-linux" else + # Try to find any sonar-scanner directory + EXTRACTED_DIR=$(find /tmp -maxdepth 1 -type d -name "*sonar-scanner*" | head -1) + fi + + if [ -z "$EXTRACTED_DIR" ] || [ ! -d "$EXTRACTED_DIR" ]; then echo "❌ SonarScanner directory not found after extraction" - ls -la /tmp/ | grep sonar + echo "Contents of /tmp:" + ls -la /tmp/ | grep -E "(sonar|zip)" || ls -la /tmp/ | head -20 exit 1 fi - ln -sf /opt/sonar-scanner/bin/sonar-scanner /usr/local/bin/sonar-scanner - chmod +x /opt/sonar-scanner/bin/sonar-scanner - chmod +x /usr/local/bin/sonar-scanner + echo "Found extracted directory: ${EXTRACTED_DIR}" + mv "${EXTRACTED_DIR}" /opt/sonar-scanner + + # Create symlink + if [ -f /opt/sonar-scanner/bin/sonar-scanner ]; then + ln -sf /opt/sonar-scanner/bin/sonar-scanner /usr/local/bin/sonar-scanner + chmod +x /opt/sonar-scanner/bin/sonar-scanner + chmod +x /usr/local/bin/sonar-scanner + else + echo "❌ sonar-scanner binary not found in /opt/sonar-scanner/bin/" + echo "Contents of /opt/sonar-scanner/bin/:" + ls -la /opt/sonar-scanner/bin/ || true + exit 1 + fi echo "Verifying installation..." - sonar-scanner --version || (echo "❌ SonarScanner verification failed" && exit 1) + if ! sonar-scanner --version; then + echo "❌ SonarScanner verification failed" + echo "PATH: $PATH" + which sonar-scanner || echo "sonar-scanner not in PATH" + exit 1 + fi + echo "✓ SonarScanner installed successfully" - name: Verify SonarQube connection run: |