Skip to content
Snippets Groups Projects

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.

Templates de CI-CD

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, un linter de configuration ansible (playbooks, rôles…) ;
  • eslint.yml : job pour l'utilitaire eslint, un linter de javascript ;
  • gitleaks.yml : job pour l'utilitaire gitleaks, 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, black, semgrep, bandit, mypy, vulture, ruff. 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, un analyseur statique de code python ;
  • trivy.yml : job pour l'utilitaire 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, 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, 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 :

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.