name: SonarQube Analysis on: push: branches: - master_odex-event - master_odex25_accounting - master_odex25_base - master_odex25_dms - master_odex25_fleet - master_odex25_helpdesk - master_odex25_hr - master_odex25_inventory - master_odex25_maintenance - master_odex25_mobile - master_odex25_pos - master_odex25_project - master_odex25_purchase - master_odex25_realstate - master_odex25_sales - master_odex25_survey - master_odex25_transactions - master_odex25_website - master_openeducat_erp-14.0.1.0 - master_odex25_ensan - master_odex25_donation pull_request: branches: - "**" pull_request_target: types: [closed] jobs: # ========= Branch Analysis ========= sonar-branches: if: github.event_name == 'push' runs-on: sonarqube steps: - name: Checkout code uses: actions/checkout@v4 - name: Run SonarScanner for Branch run: | export BRANCH_NAME="${GITHUB_REF#refs/heads/}" export SAFE_BRANCH_NAME="${BRANCH_NAME//\//_}" export PROJECT_KEY="odex25_standard_modules_${SAFE_BRANCH_NAME}" export PROJECT_NAME="Standard Modules ${SAFE_BRANCH_NAME^}" export SOURCE_FOLDER_NAME="${BRANCH_NAME#master_}" export PROJECT_VERSION="1.0" export SONAR_HOST_URL=${{ secrets.SONAR_HOST_URL }} export SONAR_TOKEN=${{ secrets.SONAR_TOKEN }} sonar-scanner \ -Dsonar.projectKey="$PROJECT_KEY" \ -Dsonar.projectName="$PROJECT_NAME" \ -Dsonar.projectVersion="$PROJECT_VERSION" \ -Dsonar.sources="$SOURCE_FOLDER_NAME" \ -Dsonar.inclusions="**/*.py,**/*.xml,**/*.js,**/*.html,**/*.css" \ -Dsonar.exclusions="**/__manifest__.py,**/migrations/**,**/__pycache__/**" \ -Dsonar.sourceEncoding="UTF-8" \ -Dsonar.host.url="$SONAR_HOST_URL" \ -Dsonar.login="$SONAR_TOKEN" # ========= PR Analysis ========= sonar-prs: if: github.event_name == 'pull_request' runs-on: sonarqube steps: - name: Checkout code uses: actions/checkout@v4 with: fetch-depth: 0 - name: Run SonarScanner for PR run: | BRANCH_NAME="${GITHUB_HEAD_REF}" BASE_BRANCH="${GITHUB_BASE_REF}" PR_KEY="${{ github.event.pull_request.number }}" SONAR_HOST_URL=${{ secrets.SONAR_HOST_URL }} SONAR_TOKEN=${{ secrets.SONAR_TOKEN }} echo "๐Ÿ”Ž Running SonarQube analysis for PR #$PR_KEY ($BRANCH_NAME -> $BASE_BRANCH)" sonar-scanner \ -Dsonar.projectKey="odex25_standard_modules_prs" \ -Dsonar.projectName="Odex25 Standard Modules - PRs" \ -Dsonar.sources=. \ -Dsonar.inclusions=**/*.py,**/*.xml,**/*.js,**/*.html,**/*.css \ -Dsonar.exclusions=**/__manifest__.py,**/migrations/**,**/__pycache__/** \ -Dsonar.sourceEncoding=UTF-8 \ -Dsonar.host.url=$SONAR_HOST_URL \ -Dsonar.token=$SONAR_TOKEN \ -Dsonar.branch.name="pr-$PR_KEY-$BRANCH_NAME" # # ========= Cleanup Closed PRs ========= # sonar-prs-cleanup: # if: github.event_name == 'pull_request_target' && github.event.action == 'closed' # runs-on: sonarqube # steps: # - name: Delete PR branch from SonarQube # run: | # PR_KEY="${{ github.event.pull_request.number }}" # BRANCH_NAME="${{ github.event.pull_request.head.ref }}" # SONAR_HOST_URL=${{ secrets.SONAR_HOST_URL }} # SONAR_TOKEN=${{ secrets.SONAR_TOKEN }} # echo "๐Ÿงน Cleaning up SonarQube branch for PR #$PR_KEY ($BRANCH_NAME)" # curl -u "$SONAR_TOKEN:" -X POST \ # "$SONAR_HOST_URL/api/project_branches/delete?project=odex25_standard_modules_prs&branch=pr-$PR_KEY-$BRANCH_NAME"