diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml new file mode 100644 index 0000000..e84e9d0 --- /dev/null +++ b/.github/workflows/codeql.yml @@ -0,0 +1,60 @@ +name: CodeQL + +# Analyse de sécurité statique (build-mode manuel : l'auto-build de CodeQL gère mal ce Gradle +# multi-module, et le modèle MediaPipe doit être présent avant toute compilation, comme dans +# ci.yml). Se déclenche sur push/PR vers main (mêmes garde-fous que ci.yml) et une fois par +# semaine pour attraper les nouvelles règles CodeQL même sans changement de code. Résultats dans +# l'onglet Security > Code scanning, pas dans les logs de ce workflow. +on: + push: + branches: + - main + pull_request: + branches: + - main + schedule: + - cron: "17 3 * * 1" + +jobs: + analyze: + name: Analyze (java-kotlin) + runs-on: ubuntu-latest + permissions: + security-events: write + contents: read + + steps: + - name: Récupérer le code + uses: actions/checkout@v7 + + - name: Installer le JDK 17 + uses: actions/setup-java@v5 + with: + distribution: temurin + java-version: "17" + + - name: Configurer Gradle (cache "enhanced", gratuit sur repo public) + uses: gradle/actions/setup-gradle@v6 + + - name: Télécharger le modèle MediaPipe (voir README, non versionné) + run: | + mkdir -p app/src/main/assets + curl -fL -o app/src/main/assets/face_landmarker.task \ + https://storage.googleapis.com/mediapipe-models/face_landmarker/face_landmarker/float16/latest/face_landmarker.task + + - name: Initialiser CodeQL + uses: github/codeql-action/init@v3 + with: + languages: java-kotlin + build-mode: manual + + - name: Build debug (nécessaire pour l'extraction CodeQL en build-mode manuel) + # --no-build-cache : sans ça, si build-and-test a déjà tourné sur ce même commit, + # compileDebugKotlin ressort UP-TO-DATE/FROM-CACHE, aucun compilateur n'est réellement + # invoqué et CodeQL échoue avec "could not process any code written in Java/Kotlin". + run: ./gradlew clean assembleDebug --no-build-cache + + - name: Exécuter l'analyse CodeQL + uses: github/codeql-action/analyze@v3 + with: + category: "/language:java-kotlin"