Skip to content
Snippets Groups Projects
README.md 3.18 KiB
Newer Older
Jean-Baptiste Louvet's avatar
Jean-Baptiste Louvet committed
# Templates

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.
Jean-Baptiste Louvet's avatar
Jean-Baptiste Louvet committed

## Templates de CI-CD
Jean-Baptiste Louvet's avatar
Jean-Baptiste Louvet committed

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` :
Jean-Baptiste Louvet's avatar
Jean-Baptiste Louvet committed

- `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"
Jean-Baptiste Louvet's avatar
Jean-Baptiste Louvet committed
```

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.