name: Qodana on: workflow_dispatch: pull_request: push: branches: # Specify your branches here - main # The 'main' branch - 'releases/*' # The release branches jobs: qodana: # Run on our self-hosted runner to avoid GitHub-hosted Actions budget limits. runs-on: [self-hosted, Linux, X64, default] permissions: contents: write pull-requests: write checks: write steps: - uses: actions/checkout@v4 with: ref: ${{ github.event.pull_request.head.sha || github.sha }} # Use PR head when available, otherwise the pushed SHA. fetch-depth: 0 # a full history is required for pull request analysis - name: Mark repository as safe for Git run: git config --global --add safe.directory "$GITHUB_WORKSPACE" - name: Prepare Qodana cache directories run: | mkdir -p "${RUNNER_TEMP}/qodana/caches" mkdir -p "${RUNNER_TEMP}/qodana/results" - name: Detect Qodana Cloud token id: qodana-token env: QODANA_TOKEN: ${{ secrets.QODANA_TOKEN }} run: | if [ -n "${QODANA_TOKEN:-}" ]; then echo "present=true" >> "$GITHUB_OUTPUT" else echo "present=false" >> "$GITHUB_OUTPUT" fi - name: 'Qodana Scan' if: ${{ steps.qodana-token.outputs.present == 'true' }} uses: JetBrains/qodana-action@v2026.1 with: pr-mode: false env: QODANA_TOKEN: ${{ secrets.QODANA_TOKEN }} QODANA_ENDPOINT: 'https://qodana.cloud' - name: 'Skip Qodana Scan (missing cloud token)' if: ${{ steps.qodana-token.outputs.present != 'true' }} run: echo "Skipping Qodana because QODANA_TOKEN is not configured for this repository."