Newer
Older
Ce projet a pour vocation de regrouper tous les fichiers de configuration qui sont utilisés à différent endroits du SI et qui sont suffisamment généralisables pour être remplacés par un simple import d'un fichier de template.
Pour les chaînes d'intégration et de déploiement continus des développement faits pour la plateforme, des templates de jobs sont proposés dans le répertoire `CI-CD` :
- `ansible-lint.yml` : job pour l'utilitaire [ansible-lint](https://ansible.readthedocs.io/projects/lint/), un linter de configuration ansible (playbooks, rôles…) ;
- `eslint.yml` : job pour l'utilitaire [eslint](https://eslint.org/), un linter de javascript ;
- `gitleaks.yml` : job pour l'utilitaire [gitleaks](https://gitleaks.io/), un scanner pour les secrets qui auraient pu fuiter dans le dépôt git ;
- `many_lint_and_sast.yml` ; job pour les utilitaires python [deptry](https://deptry.com/), [black](https://black.readthedocs.io/en/stable/index.html), [semgrep](https://semgrep.dev/), [bandit](https://bandit.readthedocs.io/en/latest/), [mypy](https://www.mypy-lang.org/), [vulture](https://github.com/jendrikseipp/vulture), [ruff](https://docs.astral.sh/ruff/#testimonials). Ces outils peuvent être indivituellement désactivés en passant la variable `<NOM_DE_L_OUTIL>_ACTIVATED` à `false`. ;
- `poetry-publish.yml` : job pour publier le projet poetry sous la forme d'un package dans le registry du projet gitlab ;
- `pylint.yml` : job pour l'utilitaire [pylint](https://pylint.readthedocs.io/en/latest/), un analyseur statique de code python ;
- `trivy.yml` : job pour l'utilitaire [trivy](https://www.aquasec.com/products/trivy/), un scanner de vulnérabilités et d'erreurs de configuration. Il est notamment capable de lire les fichiers `poetry.lock` ou `composer.lock` et de vérifier si les paquets installés font l'objet d'une CVE ou non ;
- `yamllint.yml` : job pour l'utilitaire [yamllint](https://github.com/adrienverge/yamllint), un linter pour les fichiers yml.
Les templates `many_lint_and_sast.yml`, `poetry-publish.yml` et `pylint.yml` sont prévus pour fonctionner dans un environnement supervisé par [poetry](https://python-poetry.org/), qui doit aussi déclarer l'utilisation des outils utilisés dans le job (typiquement, `pylint` doit être une dépendance explicite du projet, déclarée dans le `pyproject.toml` et gérée dans le `poetry.lock` de votre projet, pour que le template `pylint.yml` puisse être utilisé).
Pour importer ces templates dans un fichier `gitlab-ci.yml` dans un projet sur la forge, il suffit d'utiliser le code suivant :
```yml
include:
- project: "plateformes-epidemiosurveillance/esv/\
systeme-d-information/templates"
file:
- "CI-CD/<nom_du_template>.yml"
Ces templates sont configurables de deux manières :
- en sur-définissant les champs des jobs définis dans les templates ;
- en utilisant les variables définies dans les templates. Les variables dont le nom commence par l'outil utilisé (par exemple `TRIVY_OPTIONS` pour `trivy`) concernent uniquement le job du template. Les autres variables (par exemple `PYTHON_VERSION` ou `POETRY_FOLDER_PATH`) sont partagées entre plusiers jobs.