name: CodeQL (daily)

on:
  schedule:
    # Daily at 01:30 (UTC)
    - cron: '30 1 * * *'
  workflow_dispatch:

jobs:
  analyze:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4

      - name: Set up Java 17
        uses: actions/setup-java@v4
        with:
          distribution: temurin
          java-version: 17

      - name: Initialize CodeQL
        uses: github/codeql-action/init@v3
        with:
          languages: java
          # using "latest" helps to keep up with the latest Kotlin support
          # see https://github.com/github/codeql-action/issues/1555#issuecomment-1452228433
          tools: latest

      - name: Set up gradle
        uses: gradle/actions/setup-gradle@v4
      - name: Assemble
        # skipping build cache is needed so that all modules will be analyzed
        run: ./gradlew assemble --no-build-cache

      - name: Perform CodeQL analysis
        uses: github/codeql-action/analyze@v3

  open-issue-on-failure:
    # open an issue on failure because it can be easy to miss CI failure notifications
    needs:
      - analyze
    if: failure() && github.run_attempt == 1
    uses: ./.github/workflows/reusable-open-issue-on-failure.yml
