5 votes

Comment faire en sorte que le badge d'état de construction de Jenkins affiche dynamiquement la branche dans laquelle se trouve son fichier ?

Je ne suis pas sûr que le résumé soit clair à ce sujet. Ce que je veux faire, c'est créer une url de badge d'état de construction jenkins qui sera en quelque sorte capable de déterminer la branche Git sur laquelle elle se trouve, et d'ajouter le suffixe de la branche correcte à l'url de manière dynamique.

Je veux faire cela afin de pouvoir créer un fichier readme qui montre toujours la master , develop y <branch-i'm-looking-at> jenkins de ce repo, sans avoir à mettre à jour manuellement le badge pour chaque branche.

Je sais comment créer des badges d'état de construction spécifiques à une branche. Jenkins construit automatiquement l'URL markdown pour vous. Par exemple, l'une des miennes pour une develop ressemble à une branche :

[![Build Status](https://jenkins.mycompany.com/path/to/build/develop/badge/icon?subject=develop)]
(https://jenkins.mycompany.com/path/to/build/develop/)

J'imagine qu'il s'agit de quelque chose qui utilise la fonction ${BRANCH_NAME} jenkins env var, mais je ne vois pas comment la créer. Je n'ai pas assez d'expérience avec les hooks git ou d'autres scripts pour commencer à trouver un moyen de le faire.

Quelqu'un a-t-il fait cela ?

2voto

VonC Points 414372

Au lieu de créer un README Je maintiendrais 4 README un par branche, chacun avec ses propres statique URL Jenkins, adaptée à leur propre branche.

Le README en el develop par exemple, aurait l'URL :

[![Build Status](https://jenkins.mycompany.com/path/to/build/develop/badge/icon?subject=develop)]
(https://jenkins.mycompany.com/path/to/build/develop/)

En outre, comme il s'agit de pipelines multibranches, les branches vont et viennent.

Dans ce cas, j'envisagerais d'utiliser un pilote de filtre de contenu.

Cela signifie que seuls un README avec une valeur de remplacement.
("placeholder value" : chaîne de caractères destinée à être remplacée. Par exemple : @URL@ )

Cela vous permet de générer le droit README localement, et de le faire automatiquement sur git clone / git checkout .

La génération script sera :

  • détecter la branche en cours de vérification
  • remplacer la valeur de l'espace réservé dans README pour générer la bonne README avec l'URL "Build Status" appropriée

Pour cela, il faut s'inscrire (dans un .gitattributes déclaration ) a pilote du filtre de contenu .

smudge (image tirée de " Personnaliser Git - Attributs Git ", de " Livre Pro Git ")

Le smudge script génèrera (automatiquement, sur git checkout o git switch ) le nombre réel de README comme indiqué ci-dessus.
que script peut utiliser :

branch=$(git rev-parse --symbolic --abbrev-ref HEAD)

Voir un exemple complet à " git smudge / clean filtre entre les branches ".

J'ajouterais également un clean afin de restaurer le contenu original du fichier README (placeholder value), afin de ne pas introduire (à partir d'un fichier git diff ) une quelconque différence.

https://git-scm.com/book/en/v2/images/clean.png

Récapitulons :

  • sur git checkout / restore , le smudge script déclarée dans le fichier .gitattributes est automatiquement activé, et remplace la valeur du placeholder par l'URL correcte, avec le nom de la branche
  • sur git diff / commit , le clean script déclarée dans le fichier .gitattributes est automatiquement activé et remplace l'URL générée par la valeur de l'espace réservé d'origine.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X