03 20 61 95 06

Formation CI/CD d’une application C avec GitLab CI, tests unitaires et Ansible


  • 2BCICD2
  • Durée : 2 jours
  • Tarif : 1470€ HT
97%

Taux de satisfaction clients
(sur 1940 évaluations du 19/05/21 au 07/10/26)

Voir les avis

Objectifs

A l’issue de la formation le participant sera capable de :
Configurer GitLab CI/CD et installer un GitLab Runner avec un exécuteur Shell.

Créer et automatiser des pipelines CI/CD pour compiler, tester et déployer une application C.
Développer des tests unitaires avec CMocka afin de vérifier le bon fonctionnement du code.
Mesurer la couverture des tests avec gcov et gcovr.
Détecter les fuites mémoire et les erreurs associées avec Valgrind.
Intégrer les tests et contrôles qualité dans GitLab CI pour bloquer les fusions de code non conformes.
Automatiser les déploiements avec Ansible et gérer les services applicatifs avec systemd.
Sécuriser les pipelines et les déploiements grâce à la gestion des variables protégées et des secrets.
Mettre en œuvre une chaîne CI/CD complète, de la compilation au déploiement en production, avec validation des tests et approbation manuelle.
Fil rouge : InventoryC, une bibliothèque métier inventory.c (ajout, retrait, recherche, calcul de stock) et un exécutable service, déployé en systemd. Dépôt GitLab.com, VMs ci / staging / prod.

Prérequis

Posséder des connaissances de base en programmation C.

Maîtriser les commandes courantes sous Linux et les principes de compilation avec Make.
Connaître les fondamentaux de Git (commit, push, branches).
Avoir une expérience pratique d’Ansible (playbooks, rôles et inventaires).
Aucune connaissance préalable de GitLab CI n’est nécessaire.
Un entretien en amont avec notre expert permet de prendre en compte le profil de chaque participant (niveau, objectifs et résultats attendus, contexte professionnel, enjeux…) et d’adapter le contenu de la formation si besoin. Cette formation ne peut être financée que dans le cadre d’un projet d’entreprise (prise en charge entreprise ou OPCO). Les dossiers à financement personnel et CPF ne sont pas pris en compte.

Public

Professionnels de l’informatique

Dernière mise à jour

Programme mis à jour le 21 octobre 2026
enveloppe Cette formation vous intéresse ? Contactez-nous
Bon à savoir
Evaluez votre niveau
Pour vous aider à bien choisir votre formation, nous vous proposons soit un entretien avec le formateur soit un test d’évaluation. Cela vous assurera que vous disposez des connaissances nécessaires pour suivre la formation dans des conditions optimales.
Sessions garanties

La majorité de nos sessions proposées en distanciel sont garanties. Elles peuvent être enregistrées à la demande.

Travaux pratiques
Nos formations comprennent de nombreux travaux pratiques pour un meilleur apprentissage (60 % de pratique). Nous proposons également de travailler sur vos données pour une meilleure expérience.
Nos prestations
Nous réalisons certaines prestations IT pour vous : développement sur-mesure, refonte logicielle, TMA, interfaçage ERP.
modules

Les Modules
de formation

Module1
Découverte du projet

• Architecture cible : GitLab → Runner → build → tests → Ansible → staging → prod

• Code C, Makefile (build, test, coverage, clean), build en local
• Validation : projet compilé et exécuté
Module2
Prise en main de GitLab et du Runner

• Groupes, projets, rôles, branches protégées, Merge Requests

• Concepts CI : pipeline, stage, job, runner, executor
• GitLab Runner : installation, enregistrement, shell executor, tags
• Micro-exercice : premier .gitlab-ci.yml, lecture des logs
• Validation : un push déclenche un pipeline sur le runner du lab
Module3
Découverte des tests unitaires en C avec CMocka

• Pourquoi tester en C : régressions, comportement indéfini, cas limites

• CMocka : 
o structure d’un test, cmocka_unit_test, cmocka_run_group_tests
o assertions : assert_int_equal, assert_null, assert_string_equal…
o fixtures setup / teardown
• Mocks : isoler une dépendance (fichier, horloge) avec –wrap et will_return / mock()
• Organisation : dossier tests/, cible make test
• Couverture : gcov / gcovr (lignes, branches)
• Fuites mémoire : Valgrind (–leak-check=full –error-exitcode=1)
• Projet : écrire les tests de inventory.c (cas nominaux, cas limites, une erreur simulée par mock)
• Validation : suite verte, couverture mesurée, aucune fuite mémoire
Module4
Intégration continue des tests dans GitLab CI

• Syntaxe .gitlab-ci.yml : stages, script, before_script, variables, tags

• Stage build : make build, binaire en artifact (artifacts:paths, expire_in)
• Stage test : 
o rapport JUnit XML (CMOCKA_MESSAGE_OUTPUT=xml), affiché dans la MR via artifacts:reports:junit
o couverture : gcovr –cobertura → artifacts:reports:coverage_report, regex coverage: pour le badge et la MR
o Valgrind : le job échoue en cas de fuite mémoire
• Déclenchement : 
o par push
o par Merge Request : rules sur $CI_PIPELINE_SOURCE
o selon la branche
• Dépendances : needs, dependencies
• Protection : « Pipelines must succeed » avant le merge
• Validation : une MR affiche les tests et la couverture, un test cassé ou une fuite mémoire bloque le merge
Module5
Déploiement continu avec Ansible

• Rappel ciblé : rôles, Jinja2, Vault

• Rôle inventoryc : 
o utilisateur système
o binaire (artifact du pipeline)
o fichier de configuration et unité systemd en templates
o handler restart
o secrets dans Vault
o vérification que le service est actif
• Variables CI/CD GitLab : masquées et protégées ; type File pour la clé SSH et le mot de passe Vault
• Environnements GitLab : staging / prod, historique, redéploiement
• Jobs : 
o deploy_staging : automatique sur develop
o deploy_prod : when: manual sur main
• Validation : un merge sur develop déploie sur staging, la prod se déploie sur action manuelle, aucun secret en clair
Module6
Démonstration finale

• Parcours par binôme : MR → build → tests + couverture + Valgrind → merge → staging → prod

• Une régression volontaire (test cassé ou fuite mémoire) bloquée par le pipeline
• QCM : GitLab CI, tests unitaires en C, Ansible appliqué

Cette formation vous intéresse ? Contactez-nous !

    Les données personnelles collectées sont destinées à Access IT Company...