Github-1 Présentation 👨‍🏫

Objectifs:
🎯 Développer à plusieurs.
🎯 Versionner son code.
🎯 Créer des pipelines.

Prérequis:
💡 N/A


logo de github, outil devops de versionning et d'automatisation du cycle de vie de code source.

Dans le vaste monde de l'informatique nous sommes amenés à participer à la créations d'applications, de logiciels, de sites webs, de scripts divers et variers. Pour ce faire nous devons générer du code source java, js, c++, bash ou autre.

Lorsque nous développons par exemple un site web vitrine seul qui ne demande pas beaucoup de fonctionnalités la question de versioning et de partage du code ne se pose pas forcément. Cependant pour des projets plus lourds comme la création d'un jeux vidéo , différentes équipes vont intervenirs sur le développements des différentes fonctionalités.

Schéma d'une répartition possible de la création du code source d'un jeu vidéo, outil devops de versionning et d'automatisation du cycle de vie de code source. Carte du jeu, animations, mécaniques de gameplay, ces fonctionnalités sont développées en parallèle puis intégrées ensembles pour constituer le jeu sachant que l'on va être amené à rajouter de nouvelles fonctionalités après le premier déployement du jeu (Ex des DLC).

Github nous permet de faire cela en hébergeant notre code source et en mettant à disposition un système de versioning.

Repository: 📦
Entité qui permet de stocker son code source.
Il est possible de le cloner en local sur sa machine et de se synchroniser avec.

Branches: 🌿
Le système de branches permet de segmenter les différents développements à faire sur un projet.
En général les projets github possèdent une branche de référence (main) et des branches associées aux fonctionnalités à dévelloper.

Commit: 🔼
Un commit est une image de votre repo à un instant t.
Chaque commit possède un id spécifique ainsi qu'un libélé, ce qui permet de retracer la vie d'un repo.

Pull-request: 🔁
Le système de pull request permet d'intégrer le code source d'une branche dans une autre.
En général la branche de référence (main) ne contient que le code source des fonctionnalités stables.
Lorsqu'on à fini de développer et tester une nouvelle fonctionnalité sur une branche x, une demande de pull requests de x vers la branche de référence permettra d'intégrer la nouvelle fonctionnalité à la branche de référence.

Actions: 🟢
Permet de créer des pipelines d'automatisation de build et de déployement d'applications.

Tag: 🔖
Un tag permet de pointer vers un commit auquel on ne pourra pas ajouter de code supplémentaire.

Release: 🗳
Mise à disposition d'une version du code avec une notice indicative sur les ajouts et des liens vers les binaires à télécharger pour qu'autrui puisse utiliser cette dernière.

Package: 📦
Repo de livrables.

Issue:
Référence vers un commit avec description du bug.


Conclusion:
Si vous avez besoin de développer une application avec différentes équipes et que git est l'outil de versioning que vous avez choisit. Il faudra un repo github, des machines avec la commande git pour vos développeurs et de bonnes pratiques, que nous verrons dans les chapitres suivants.

Maintenant que nous avons en tête la définition des éléments de base, je vous invite à me rejoindre dans la rubrique suivante [ Github-2: Création et alimentation d'un repo ] afin que l'on crée ensemble un repo github et qu'on y fasse quelques modifications.