Sommaire
Maîtriser les fonctionnalités avancées de GitHub : Pull Requests, revue de code, GitHub Actions (CI/CD), gestion de projet (Issues, Projects, Milestones), sécurité (Dependabot, CodeQL), et API.
🎯 Objectifs de la fiche
- Pull Requests : le cœur de la collaboration — Créer, reviewer, merger une PR
- Revue de code et bonnes pratiques — Commentaires, suggestions, checks requis
- GitHub Actions – CI/CD — Automatiser tests, build, déploiement
- Gestion de projet (Issues, Projects, Milestones) — Suivi des tâches, Kanban, versions
- Sécurité avancée — Dependabot, CodeQL, Secret scanning
- GitHub API et Webhooks — Automatisation externe
Prérequis
Maîtriser les bases de Git et GitHub (fiches précédentes). Avoir un projet collaboratif (ou un dépôt de test).
1. Pull Requests : le cœur de la collaboration
Une Pull Request (PR) est une demande de fusion d'une branche vers une autre (généralement vers main). Elle permet la revue de code et les discussions avant l'intégration.
| Étape | Qui | Action |
|---|---|---|
| 1. Créer une branche | Développeur | git checkout -b feature-ajout-contact |
| 2. Committer et pousser | Développeur | git add . ; git commit -m 'message' ; git push -u origin feature-ajout-contact |
| 3. Ouvrir une PR | Développeur | Via l'interface GitHub : Compare & Pull Request |
| 4. Revue de code | Reviewers | Commentaires, demandes de modifications, approbations |
| 5. Mises à jour | Développeur | Ajouter des commits sur la branche (la PR se met à jour automatiquement) |
| 6. Merge | Mainteneur | Fusionner la PR dans main (merge, squash ou rebase) |
| 7. Nettoyage | Tous | Supprimer la branche distante et locale |
2. Revue de code et bonnes pratiques
| Pratique | Description | Pourquoi c'est important |
|---|---|---|
| Demander des reviewers | Assigner 1-2 personnes pour la revue. | Le code est relu par un pair avant d'être intégré. |
| Utiliser les suggestions | Proposer des modifications en ligne (code suggestion). | Permet de corriger rapidement sans refaire un commit. |
| Status checks | Exiger que les tests CI passent avant le merge. | Garantit que le code ne casse pas la build. |
| Approbations obligatoires | Configurer une protection de branche : X approbations nécessaires. | Évite les merges sans revue. |
| Résoudre les conversations | Tous les commentaires doivent être résolus avant le merge. | Garantit que les retours ont été pris en compte. |
3. GitHub Actions – CI/CD
GitHub Actions permet d'automatiser des workflows (tests, build, déploiement) directement depuis votre dépôt.
# Exemple de workflow CI (fichier .github/workflows/ci.yml)
name: CI
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: '3.12'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Run tests
run: pytest
| Élément | Description |
|---|---|
| Workflow | Un fichier YAML dans .github/workflows/ définissant les étapes d'automatisation. |
| Event (déclencheur) | push, pull_request, schedule (cron), workflow_dispatch (manuel). |
| Job | Une unité d'exécution (ex: build, test, deploy). |
| Step | Une action individuelle dans un job (ex: checkout, setup, run). |
| Action | Un bloc réutilisable (ex: actions/checkout, actions/setup-python). |
| Runner | L'environnement d'exécution (ubuntu-latest, windows-latest, macos-latest). |
4. Gestion de projet (Issues, Projects, Milestones)
| Outil | Description | Exemple d'usage |
|---|---|---|
| Issues | Suivi des bugs, fonctionnalités, tâches. | Ouvrir une issue pour signaler un bug. |
| Labels | Catégorisation (bug, enhancement, help wanted, good first issue). | Faciliter le tri et la recherche. |
| Milestones | Groupe d'issues pour une version (ex: v1.0). | Planifier la release 1.0. |
| Projects (Kanban) | Tableau avec colonnes (To Do, In Progress, Review, Done). | Visualiser l'avancement du projet. |
| Assignees | Responsable de l'issue. | Désigner qui travaille sur la tâche. |
5. Sécurité avancée
| Fonctionnalité | Description | Avantage |
|---|---|---|
| Dependabot | Scanne les dépendances et propose des mises à jour de sécurité. | Corrige automatiquement les vulnérabilités connues. |
| CodeQL (Code Scanning) | Analyse statique du code pour détecter les failles de sécurité. | Détecte les injections, les fuites, etc. |
| Secret Scanning | Détecte les secrets commités accidentellement (API keys, tokens). | Alerte en cas de fuite de secrets. |
| Branch protection rules | Imposer des règles (approbations, status checks, force push interdits). | Empêche les erreurs et les attaques. |
# Exemple de workflow CodeQL (sécurité)
name: "CodeQL"
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
analyze:
name: Analyze
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: github/codeql-action/init@v2
- uses: github/codeql-action/autobuild@v2
- uses: github/codeql-action/analyze@v2
6. GitHub API et Webhooks
| Outil | Description | Exemple |
|---|---|---|
| API REST | Interaction programmatique avec GitHub. | Lister les PR, créer une issue, commenter. |
| GraphQL API | Version plus flexible de l'API. | Requêtes personnalisées, récupérer des données spécifiques. |
| Webhooks | Envoi d'événements à un serveur externe. | Notifications Slack à chaque push, déclencher un déploiement. |
# Exemple d'appel API GitHub (lister les PR)
curl -H "Authorization: token $GITHUB_TOKEN" \
https://api.github.com/repos/username/repo/pulls
Qu'est-ce qu'une Pull Request sur GitHub ?
✅ Réponse : Une proposition de fusion d'une branche vers une autre, avec revue de code
Quel outil GitHub permet d'automatiser les tests CI/CD ?
✅ Réponse : GitHub Actions
Que fait Dependabot ?
✅ Réponse : Il propose des mises à jour de dépendances pour corriger les vulnérabilités
Quelle fonctionnalité GitHub permet de suivre l'avancement des issues avec un tableau Kanban ?
✅ Réponse : GitHub Projects
Où stocker un mot de passe utilisé dans un workflow GitHub Actions ?
✅ Réponse : Dans un GitHub Secret