name: "CodeQL" on: push: branches: ["main"] pull_request: branches: ["main"] schedule: - cron: "0 4 * * 0" permissions: contents: read jobs: detect-languages: name: Detect CodeQL languages runs-on: ubuntu-latest outputs: matrix: ${{ steps.set-matrix.outputs.matrix }} steps: - name: Checkout repository uses: actions/checkout@v4 - name: Build language matrix id: set-matrix run: | include='[{"language":"actions","build-mode":"none"}]' if git ls-files '*.py' | grep -q .; then include='[{"language":"actions","build-mode":"none"},{"language":"python","build-mode":"none"}]' fi echo "matrix={\"include\":$include}" >> "$GITHUB_OUTPUT" analyze: name: Analyze (${{ matrix.language }}) needs: detect-languages runs-on: ubuntu-latest permissions: actions: read contents: read security-events: write strategy: fail-fast: false matrix: ${{ fromJSON(needs.detect-languages.outputs.matrix) }} steps: - name: Checkout repository uses: actions/checkout@v4 - name: Initialize CodeQL uses: github/codeql-action/init@v4 with: languages: ${{ matrix.language }} build-mode: ${{ matrix['build-mode'] }} - name: Perform CodeQL Analysis uses: github/codeql-action/analyze@v4 with: category: /language:${{ matrix.language }}