114 lines
3.9 KiB
YAML
114 lines
3.9 KiB
YAML
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"
|