Fix: Update CI workflow to use Alpine-based images, install Node.js and Trivy with improved methods, and enhance dependency scanning steps #1
@ -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: |
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user