--- name: CodeQL Security Analysis on: push: branches: [main] pull_request: branches: [main] schedule: - cron: "29 13 * * 2" # Weekly Tuesday 13:29 UTC permissions: {} jobs: analyze: name: Analyze Java runs-on: ubuntu-24.04 permissions: actions: read # required for github/codeql-action/init to get workflow details contents: read security-events: write # required for github/codeql-action/analyze to upload SARIF steps: - name: Checkout repository uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7 with: persist-credentials: false - name: Set up Java uses: actions/setup-java@0f481fcb613427c0f801b606911222b5b6f3083a # v5 with: distribution: temurin java-version: "25" - name: Cache Maven repository uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 with: path: ~/.m2/repository key: ${{ runner.os }}-maven-codeql-${{ hashFiles('**/pom.xml') }} - name: Initialize CodeQL uses: github/codeql-action/init@99df26d4f13ea111d4ec1a7dddef6063f76b97e9 # v4.37.0 with: languages: java tools: linked queries: security-extended # Do not use autobuild — the multi-module Maven structure requires explicit # build invocation so that CodeQL can trace the compilation correctly. # Do not use mise-action here — CodeQL needs to trace the raw Maven build. - name: Build (CodeQL traces the build) run: > ./mvnw clean compile -P '!default' -DskipTests -Dcoverage.skip=true -Dcheckstyle.skip=true -Djavadoc.skip=true - name: Perform CodeQL Analysis uses: github/codeql-action/analyze@99df26d4f13ea111d4ec1a7dddef6063f76b97e9 # v4.37.0 with: category: /language:java