Comment activer la Continuous Integration (CI/Jenkins) sur mon repository GitHub ?

From Outech

Pour activer l'intégration continue, il faut que votre repository soit dans l'organization outech-robotic.

Ensuite il faut créer un Jenkinsfile à la racine du projet. Documentation sur les Jenkinsfile.

Et c'est tout ! Pas besoin de toucher à Jenkins, il va automatiquement détecter votre repo !

Faire en sorte qu'on puisse pas merge une pull request si les tests passent pas

Allez dans les Settings du projet, puis dans la partie Branches.

Ici vous pouvez créer une règle (par exemple pour master) et imposer des contraintes, comme par exemple Require status checks to pass before merging qui imposera que les tests passent avant de pouvoir merge.

Ne pas oublier de cocher Include administrators si vous voulez que ça s'applique aussi aux admins (donc à tout le monde).

Comment ça marche

On a un serveur Jenkins, qui a les credentials de l'utilisateur github-outech.

Ce Jenkins va rafraîchir régulièrement les repository de l'organization et ajoute des webhooks pour chacun des projets. Les webhooks permettent de notifier Jenkins qu'il y a un changement sur un repository (par exemple un nouveau commit ou pull request). Puis Jenkins va exécuter les instructions du Jenkinsfile sur un de ses worker (en gros il créée un container docker en parallèle, il peut en créer jusqu'a 4 en meme temps) et lance le code dessus. Une fois que c'est fini, il notifie github.