Describe a simple CI pipeline

This commit is contained in:
Fred Pauchet 2022-12-16 22:46:16 +01:00
parent 71b4c7a7fd
commit 8ddd800da6
1 changed files with 46 additions and 2 deletions

View File

@ -4,7 +4,51 @@
New code should never go live without first being audited for correctness and security. \cite{django_for_startup_founders} New code should never go live without first being audited for correctness and security. \cite{django_for_startup_founders}
\end{quote} \end{quote}
https://circleci.com/pricing/ Les processus d'intégration continue et de déploiement continu (respectivement, CI/CD - Continuous Integration / Continuous Deployment) permettent d'automatiser les étapes de vérifications, autrement réalisées par un être humain, voire manuellement, par des automates réagissant à des évènements particuliers - typiquement, une nouvelle version du code, un nouveau \textit{commit}, la mise à jour d'un des composants, \ldots
github actions \section{Intégration continue}
L'intégration continue consiste à pousser la pyramide des tests jusqu'à son paroxysme, toujours en laissant un automatate jouer son rôle de bouée de sauvetage.
Chaque pipeline peut être modélisé selon plusieurs étapes, en parallèle ou en séquence, appelant chacune un ensemble de règles, d'outils, et proposant deux états de sortie possibles: soit c'est OK, soit pas.
Au sens booléen des termes.
\textit{A priori}, une sortie négative impliquera une \textit{failure} de l'ensemble du pipeline, bien qu'il soit possible de définir des étapes facultatives (pouvant être exécutées sur certains environnements uniquement), etc.
Un pipeline simpliste, mais déjà complet ressemble à ceci:
\begin{minted}{yaml}
matrix:
PYTHON_VERSION:
- latest
- 3.9
- 3.8
pipeline:
static_checks:
image: acidrain/python-poetry:${PYTHON_VERSION}
commands:
- python -V
- poetry -V
- poetry install
- poetry run flake8 src/
- poetry run pylint src/
- poetry run bandit --silent -r src/
- poetry run mypy .
unit_tests:
image: acidrain/python-poetry:${PYTHON_VERSION}
commands:
- python -V
- poetry -V
- poetry install
- poetry run pytest --cov-report term-missing tests/unit/
\end{minted}
\section{Déploiement continu}
Le déploiement continu est une extension de l'intégration continue, qui est jusqu'au-boutiste à s'occuper lui-même de mettre à disposition une nouvelle version, sous réserve qu'elle ait passé les différentes étapes du pipeline.
C'est ainsi qu'Amazon ou certaines grandes \footnote{ie. envahissantes} entreprises publient jusqu'à plusieurs miliers de nouvelles fonctionnalités \textbf{par jour}.