name: Pylint and SonarCloud on: push: branches: [ main, master, staging ] pull_request: branches: [ main, master, staging ] jobs: build: runs-on: ubuntu-latest strategy: matrix: python-version: ["3.10"] steps: - uses: actions/checkout@v4 with: fetch-depth: 0 # Necessário para SonarCloud - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} - name: Install dependencies run: | python -m pip install --upgrade pip if [ -f requirements.txt ]; then pip install -r requirements.txt; fi pip install pylint ruff coverage pytest - name: Analysing the code with pylint (console output) run: | pylint --disable=C0114,C0115,C0116 --exit-zero $(git ls-files '*.py') || true - name: Generate Pylint report for SonarCloud run: | pylint --disable=C0114,C0115,C0116 --output-format=json --exit-zero $(git ls-files '*.py') > pylint-report.json || true - name: Run Ruff run: | ruff check --output-format=json . > ruff-report.json || true - name: Run tests with coverage (if you have tests) run: | if [ -d "tests" ] || [ -f "test_*.py" ] || [ -f "*_test.py" ]; then coverage run -m pytest || true coverage xml || true else echo "No tests found, skipping coverage" fi - name: SonarCloud Scan uses: SonarSource/sonarqube-scan-action@v6.0.0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} with: args: > -Dsonar.projectKey=gmbrax_Pilgrim -Dsonar.organization=gmbrax -Dsonar.python.pylint.reportPaths=pylint-report.json -Dsonar.python.ruff.reportPaths=ruff-report.json -Dsonar.python.coverage.reportPaths=coverage.xml