Open Source et standards de collaboration
1. Le workflow de Fork
Section titled “1. Le workflow de Fork”Dans les projets open source ou les grandes entreprises, vous n’avez généralement pas les droits d’écriture directe sur le dépôt officiel (appelé upstream). Pour proposer des modifications, vous devez utiliser le workflow de Fork.
Architecture du workflow de Fork
Section titled “Architecture du workflow de Fork”Un Fork est une copie indépendante du dépôt d’origine, hébergée sur votre propre compte GitHub.
flowchart TD
Upstream[Dépôt Original - Upstream] -->|1. Forker sur GitHub| Origin[Votre Fork GitHub - Origin]
Origin -->|2. Cloner en local| Local[Dépôt Local - Votre PC]
Local -->|3. Faire des modifications & Push| Origin
Origin -->|4. Pull Request| Upstream
Synchroniser son Fork avec l’Upstream
Section titled “Synchroniser son Fork avec l’Upstream”Au fil du temps, le dépôt d’origine (upstream) évolue. Vous devez synchroniser régulièrement votre dépôt local :
- Ajouter le dépôt d’origine comme dépôt distant nommé
upstream:Terminal window git remote add upstream https://github.com/dépôt-original/projet.git - Récupérer les branches et commits de l’upstream :
Terminal window git fetch upstream - Fusionner la branche principale de l’upstream dans votre branche locale :
Terminal window git switch maingit merge upstream/main
2. GitHub CLI (gh)
Section titled “2. GitHub CLI (gh)”GitHub propose un outil en ligne de commande puissant appelé GitHub CLI (gh). Il permet de piloter l’ensemble de vos activités GitHub directement depuis votre terminal habituel, sans ouvrir de navigateur.
Commandes indispensables
Section titled “Commandes indispensables”Se connecter à votre compte GitHub
Section titled “Se connecter à votre compte GitHub”gh auth loginCloner un dépôt
Section titled “Cloner un dépôt”gh repo clone joinhashcode/workshopsCréer une Pull Request
Section titled “Créer une Pull Request”Configure automatiquement le fork, pousse votre branche locale, puis crée la PR sur le dépôt d’origine :
gh pr createConsulter les Issues en cours
Section titled “Consulter les Issues en cours”gh issue list3. Gouvernance & Fichiers clés d’un dépôt
Section titled “3. Gouvernance & Fichiers clés d’un dépôt”Un dépôt open source ou professionnel doit être structuré de manière à guider les nouveaux collaborateurs et définir le cadre légal et technique.
| Fichier | Emplacement | Rôle |
|---|---|---|
README.md | Racine | Page d’accueil du projet : description, installation, usage rapide. |
CONTRIBUTING.md | Racine ou .github/ | Guide expliquant les standards de code, le processus de contribution et les tests à lancer. |
CODEOWNERS | .github/ | Fichier définissant automatiquement les réviseurs requis pour chaque dossier ou type de fichier. |
LICENSE | Racine | Cadre légal définissant les droits d’utilisation, modification et redistribution (ex: MIT, Apache 2.0). |
Exemple de fichier CODEOWNERS
Section titled “Exemple de fichier CODEOWNERS”Ce fichier permet d’automatiser les demandes de revue de code :
# Tous les fichiers JavaScript seront révisés par l'équipe frontend*.js @mon-organisation/frontend-leads
# Le dossier de déploiement nécessite la validation de l'équipe devops/deploy/ @mon-organisation/devops-team4. Sécurité GitHub
Section titled “4. Sécurité GitHub”Protéger votre code contre les vulnérabilités et les fuites accidentelles d’informations sensibles est une priorité critique en ingénierie.
Les fonctionnalités de sécurité clés de GitHub :
Section titled “Les fonctionnalités de sécurité clés de GitHub :”- Dependabot : Analyse automatiquement vos fichiers de dépendances (comme
package.json) et ouvre des Pull Requests pour mettre à jour les packages contenant des vulnérabilités connues. - Secret Scanning : Scanne en permanence votre code historique lors des pushs pour détecter d’éventuelles clés d’API, mots de passe ou certificats exposés par erreur, et bloque le push si nécessaire.
- Security Policy (
SECURITY.md) : Indique comment signaler une vulnérabilité de sécurité de manière responsable à l’équipe de maintenance sans l’exposer publiquement.
Fiches de révision
Section titled “Fiches de révision”Qu'est-ce qu'un dépôt 'upstream' ?
Cliquer pour révéler la réponseC'est le dépôt officiel d'origine auquel vous contribuez via un fork.
Cliquer pour voir la questionQuelle commande de GitHub CLI permet d'ouvrir une Pull Request ?
Cliquer pour révéler la réponsegh pr create
Cliquer pour voir la questionÀ quoi sert le fichier CODEOWNERS ?
Cliquer pour révéler la réponseÀ assigner automatiquement des relecteurs spécifiques selon les fichiers modifiés dans une Pull Request.
Cliquer pour voir la questionQuel est le rôle de Dependabot ?
Cliquer pour révéler la réponseDétecter les dépendances obsolètes et vulnérables et proposer automatiquement des PR pour les mettre à jour.
Cliquer pour voir la questionQuiz de validation
Section titled “Quiz de validation”1. Quel est le rôle principal de la commande 'git remote add upstream' dans le workflow de Fork ?
2. Quel outil permet de gérer les issues, les PRs et le login GitHub directement en ligne de commande ?
3. Quel fichier définit la licence d'utilisation légale de votre code ?
Prochaine étape
Section titled “Prochaine étape”Félicitations, vous avez acquis l’ensemble des compétences théoriques et pratiques nécessaires pour concevoir, versionner, sécuriser et collaborer sur des projets d’ingénierie logicielle professionnels. Découvrons à présent comment étiqueter nos versions logicielles et gérer les conventions de release.