Describe a simple CI pipeline
This commit is contained in:
parent
71b4c7a7fd
commit
8ddd800da6
|
@ -4,7 +4,51 @@
|
|||
New code should never go live without first being audited for correctness and security. \cite{django_for_startup_founders}
|
||||
\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}.
|
||||
|
|
Loading…
Reference in New Issue