← Retour au portail

Fiche 3 - GitHub — Collaboration avancée et DevOps

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.

Avancé — SISR 2ème année / DevOps ⏱️ 30 min 📁 Autres

🎯 Objectifs de la fiche

  1. Pull Requests : le cœur de la collaboration — Créer, reviewer, merger une PR
  2. Revue de code et bonnes pratiques — Commentaires, suggestions, checks requis
  3. GitHub Actions – CI/CD — Automatiser tests, build, déploiement
  4. Gestion de projet (Issues, Projects, Milestones) — Suivi des tâches, Kanban, versions
  5. Sécurité avancée — Dependabot, CodeQL, Secret scanning
  6. 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.

ÉtapeQuiAction
1. Créer une brancheDéveloppeurgit checkout -b feature-ajout-contact
2. Committer et pousserDéveloppeurgit add . ; git commit -m 'message' ; git push -u origin feature-ajout-contact
3. Ouvrir une PRDéveloppeurVia l'interface GitHub : Compare & Pull Request
4. Revue de codeReviewersCommentaires, demandes de modifications, approbations
5. Mises à jourDéveloppeurAjouter des commits sur la branche (la PR se met à jour automatiquement)
6. MergeMainteneurFusionner la PR dans main (merge, squash ou rebase)
7. NettoyageTousSupprimer la branche distante et locale
ℹ️ Les Pull Requests sont le standard de la collaboration sur GitHub. Elles permettent de discuter du code avant de l'intégrer, et de garder une trace des décisions.

2. Revue de code et bonnes pratiques

PratiqueDescriptionPourquoi c'est important
Demander des reviewersAssigner 1-2 personnes pour la revue.Le code est relu par un pair avant d'être intégré.
Utiliser les suggestionsProposer des modifications en ligne (code suggestion).Permet de corriger rapidement sans refaire un commit.
Status checksExiger que les tests CI passent avant le merge.Garantit que le code ne casse pas la build.
Approbations obligatoiresConfigurer une protection de branche : X approbations nécessaires.Évite les merges sans revue.
Résoudre les conversationsTous les commentaires doivent être résolus avant le merge.Garantit que les retours ont été pris en compte.
💡 Les revues de code ne sont pas un contrôle, mais une opportunité d'apprendre et de partager des bonnes pratiques.

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émentDescription
WorkflowUn fichier YAML dans .github/workflows/ définissant les étapes d'automatisation.
Event (déclencheur)push, pull_request, schedule (cron), workflow_dispatch (manuel).
JobUne unité d'exécution (ex: build, test, deploy).
StepUne action individuelle dans un job (ex: checkout, setup, run).
ActionUn bloc réutilisable (ex: actions/checkout, actions/setup-python).
RunnerL'environnement d'exécution (ubuntu-latest, windows-latest, macos-latest).
ℹ️ GitHub Actions est gratuit pour les dépôts publics, et offre un nombre limité de minutes pour les dépôts privés (selon le forfait).

4. Gestion de projet (Issues, Projects, Milestones)

OutilDescriptionExemple d'usage
IssuesSuivi des bugs, fonctionnalités, tâches.Ouvrir une issue pour signaler un bug.
LabelsCatégorisation (bug, enhancement, help wanted, good first issue).Faciliter le tri et la recherche.
MilestonesGroupe 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.
AssigneesResponsable de l'issue.Désigner qui travaille sur la tâche.
💡 Utiliser des templates d'issues et de PR permet de standardiser les informations et de gagner du temps.

5. Sécurité avancée

FonctionnalitéDescriptionAvantage
DependabotScanne 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 ScanningDétecte les secrets commités accidentellement (API keys, tokens).Alerte en cas de fuite de secrets.
Branch protection rulesImposer 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
⚠️ Ne committez JAMAIS de secrets en clair dans votre dépôt. Utilisez les GitHub Secrets pour stocker les informations sensibles.

6. GitHub API et Webhooks

OutilDescriptionExemple
API RESTInteraction programmatique avec GitHub.Lister les PR, créer une issue, commenter.
GraphQL APIVersion plus flexible de l'API.Requêtes personnalisées, récupérer des données spécifiques.
WebhooksEnvoi 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 ?
  • Une demande de téléchargement d'une branche
  • Une proposition de fusion d'une branche vers une autre, avec revue de code
  • Une commande git pour récupérer les données
  • Un fork d'un dépôt externe

✅ 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 ?
  • GitHub Projects
  • GitHub Actions
  • GitHub Issues
  • GitHub Wiki

✅ Réponse : GitHub Actions

Que fait Dependabot ?
  • Il déploie automatiquement l'application
  • Il propose des mises à jour de dépendances pour corriger les vulnérabilités
  • Il exécute des tests unitaires
  • Il gère les secrets

✅ 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 ?
  • GitHub Actions
  • GitHub Projects
  • GitHub Pages
  • GitHub Packages

✅ Réponse : GitHub Projects

Où stocker un mot de passe utilisé dans un workflow GitHub Actions ?
  • Dans le fichier .env
  • Dans un GitHub Secret
  • Directement dans le workflow
  • Dans un fichier .gitignore

✅ Réponse : Dans un GitHub Secret

🎯 Passer l'évaluation de cette fiche