51 lines
2.3 KiB
TeX
Executable File
51 lines
2.3 KiB
TeX
Executable File
\chapter{Intégration continue / Déploiement Continu}
|
|
|
|
\begin{quote}
|
|
\textit{New code should never go live without first being audited for correctness and security}. \cite{django_for_startup_founders}
|
|
\end{quote}
|
|
|
|
Les processus d'intégration continue \footnote{CI - Continuous Integration} et de déploiement continu \footnote{CD - Continuous Deployment} permettent d'automatiser des étapes de vérifications, initialement réalisées par un être humain, 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
|
|
|
|
\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:
|
|
lint:
|
|
image: python:${PYTHON_VERSION}
|
|
commands:
|
|
- pip3 install poetry
|
|
- poetry install
|
|
- poetry run flake8 src/
|
|
- poetry run pylint src/
|
|
- poetry run bandit --silent -r src/
|
|
- poetry run mypy .
|
|
|
|
unit_tests:
|
|
image: python:${PYTHON_VERSION}
|
|
commands:
|
|
- pip3 install poetry
|
|
- poetry config virtualenvs.create false
|
|
- 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. \textit{"envahissantes"}} entreprises publient jusqu'à plusieurs miliers de nouvelles fonctionnalités \textbf{par jour}.
|