Aller au contenu principal

3 astuces YAML pour de meilleurs pipelines

· 7 minutes de lecture · Par Arthur Boudreault

Découvrez comment optimiser au maximum vos configurations YAML

  

Chez GitLab, ils sont fans de YAML. Mais, malgré tous ses avantages, ils mentiraient en disant que YAML n’a pas aussi causé un bon nombre de prises de têtes.

YAML est utilisé dans toute l’industrie pour la configuration déclarative. YAML offre flexibilité et simplicité, pour autant que vous connaissiez les règles et les limitations. Étant donné que YAML est indépendant d’une plateforme en particulier, connaître les bonnes pratiques concernant les configurations YAML donne un ensemble de compétences transférable dans l’univers cloud native.

Quels sont les avantages de YAML ?

YAML est un langage de sérialisation des données conçu pour être simple à comprendre. YAML est simple à utiliser dans un éditeur de texte, il a une syntaxe qui fonctionne dans tous les langages de programmation et il peut stocker une quantité impressionnante de données de configuration (typiquement dans un fichier au format .yml ou .yaml).

YAML est orienté données et a des fonctionnalités dérivées de Perl, du C, du HTML et d’autres langages.

Comme YAML est un sur-ensemble de JSON, il a des avantages directement intégrés comme les commentaires, l’auto-référencement et la prise en charge de types de données complexes.

Un fichier YAML utilise une configuration déclarative pour décrire une variété de structures, telles que des structures de données API ou même des instructions de déploiement pour des machines virtuelles et des containers, pour ne citer que ces exemples.

YAML est complet, très largement utilisé et il fonctionne pour tout type d’environnement de développement.

Astuce YAML numéro 1 : Laissez d’autres outils faire le formatage pour vous

Suivant la personne à laquelle vous demandez, YAML est un de ces langages dont le minimalisme est à la fois une bénédiction et une malédiction. Il s’appuie également sur le syntaxiquement très symbolique double espace plutôt que la tabulation, source de débat animé entre développeurs. Pour un langage où le formatage est roi, que peuvent faire les développeurs pour s’assurer de rester dans les règles sans avoir à analyser minutieusement chaque espace et indentation ?

De nombreux éditeurs de texte et plateformes disposent de greffons ou des outils intégrés pour vérifier la syntaxe de configuration YAML pour vous.

  • Atom, l’éditeur de texte open source, a un mode YAML par défaut.
  • Le greffon YAML développé par Red Hat fournit le support de la syntaxe du langage YAML et Kubernetes pour l’éditeur de code Visual Studio Code.
  • OnlineYamlTools a un éditeur de code web qui fera le nécessaire. Il propose également des liens vers d’autres options utiles telles que la conversion de JSON vers YAML, etc.
  • SlickEdit se décrit comme « l’éditeur YAML le plus puissant du monde ». Il possède quelques fonctionnalités utiles pour soutenir cet argument (moyennant un certain coût). SlickEdit propose un essai gratuit.
  • Pretty YAML est un greffon pour Sublime Text 2 et 3 qui vous permet de formater des fichiers YAML.

Les linters sont utilisés dans le processus de développement pour analyser le code et détecter les erreurs de style et de formatage par exemple. Les équipes adoptent les linters et autres outils statiques en les intégrant dans l’environnement de développement intégré (IDE en anglais) de leur choix et/ou en les exécutant comme une étape supplémentaire dans leur intégration continue (CI en anglais).

Chez GitLab, ils ont un linter pour l’intégration continue qui vérifie la syntaxe de votre configuration CI YAML et exécute aussi quelques validations logiques de base.

Pour utiliser le CI lint, collez une configuration CI complète (.gitlab-ci.yml par exemple) dans la boite de texte et cliquez sur Validate.

Astuce YAML numéro 2 : KISS (Keep it simple stupid)

Il est simple de perdre le minimalisme d’un fichier YAML en y incluant beaucoup trop de détails ou en étant inconsistant avec le formatage. Quand il s’agit de YAML, moins c’est souvent plus.

Il n’est pas nécessaire de spécifier chaque attribut. Job timeout est un exemple d’attribut qui peut être laissé de côté, étant donné que c’est quelque chose qui est parfois spécifié ailleurs. Un exemple dans GitLab est interruptible, qui est utilisé pour indiquer qu’une tâche devrait être annulée si elle a été rendu redondante par l’exécution d’un pipeline plus récent. Puisque la configuration par défaut est False, il n’est pas toujours nécessaire de l’inclure.

Certaines personnes indentent plus que nécessaire lorsqu’ils écrivent du YAML pour s’aider à visualiser de grosses portions de données. Pour mieux visualiser comment les données travaillent ensemble, il pourrait être utile de créer une “pseudo-configuration” avant de faire un commit du code en YAML. Sur le blog de Red Hat, une pseudo-configuration est décrite comme un pseudo-code dans lequel vous n’avez pas à vous inquiéter de la structure ou de l’indentation, des relations parents-enfants, de l’héritage ou de l’imbrication. Écrivez simplement les données comme vous les comprenez.

Une fois que vous comprenez comment les données sont liées, alors vous pouvez les confier à YAML.

Quelque soit votre définition de la simplicité dans votre flux de travail, essayez de garder les configurations YAML propres et n’incluez que les données nécessaires. Enfin, si vous n’êtes pas certain des données nécessaires, écrivez une pseudo-configuration pour vous aider à les visualiser.

Astuce YAML numéro 3 : Réutilisez les configurations quand c’est possible

Partir de zéro demande beaucoup d’efforts et YAML ne fait pas exception à la règle. Une des meilleures parties de YAML est sa ré-utilisabilité, et la réutilisation de la configuration est un moyen de maintenir la cohérence des fichiers au sein d’une organisation.

Une des manières d’éviter d’avoir des configurations en double est d’utiliser le mot-clé include, ce qui permet l’inclusion de fichiers YAML externes. Par exemple, les variables globales par défaut pour tous les projets qui n’ont pas besoin d’être modifiées pour chaque fichier. Le mot-clé include vous aide à décomposer une configuration YAML en plusieurs fichiers et à améliorer la lisibilité, en particulier pour les fichiers longs. Il est aussi possible d’avoir des fichiers modèles stockés dans un dépôt central et des projets inclus dans leurs fichiers de configuration.

Extends est une bonne façon de réutiliser des configurations YAML dans de nombreux endroits, par exemple :

YAML a une fonctionnalité pratique appelée anchors (ancres en français) qui vous permet de facilement dupliquer du contenu à travers votre document. Les ancres peuvent être utilisées pour dupliquer / hériter de propriétés et c’est un exemple parfait à utiliser avec les tâches cachées (hidden jobs en YAML) qui fournissent des modèles pour vos tâches. Là où il y a des clés dupliquées, GitLab effectuera une fusion profonde inverse basée sur les clés.

Un gros avertissement par rapport aux ancres : vous ne pouvez pas utiliser des ancres sur plusieurs fichiers lorsque vous utilisez la fonction include.

Au lieu de construire des pipeline à partir de rien, les modèles de pipelines CI/CD simplifient le processus en ayant des paramètres déjà intégrés. Dans GitLab, les pipelines sont définis dans un fichier gitlab-ci.yml. Comme nos modèles de CI/CD sont disponibles dans plus de 30 langages, il y a de grandes chances que nous ayons le modèle dont vous avez besoin pour démarrer dans notre dépôt de modèles de CI.

Les modèles peuvent être modifiés et sont crées pour répondre à de nombreux cas d’utilisation. Pour voir un gros fichier gitlab-ci.yml utilisé dans une entreprise, voyez le fichier gitlab-ci.yml pour GitLab.

Que vous soyez un amoureux de YAML, un débutant en YAML ou que vous utilisez YAML contre votre gré, connaître quelques trucs et astuces peuvent rendre votre processus de développement plus agréable. Avez-vous des astuces et des recommandations YAML ? N’hésitez pas à publier un commentaire.

Vous cherchez des utilisateurs ou une instance GitLab hébergée en France ? Rejoignez la Communautés Froggit.

 

Crédits

Le contenu de cet article est en Licence Libre Creative Commons Cet article est une traduction issue du site de GitLab. Crédits image : photo de couverture de Shiro Atori sur Unsplash