44 votes

Comment inclure le changelog de git dans les emails de Jenkins ?

Existe-t-il un moyen d'importer le journal des modifications généré par Jenkins dans l'objet d'un courrier électronique (soit par le courrier électronique par défaut, soit par l'outil de gestion du courrier électronique) ? plugin email-ext ) ?

Je suis nouveau dans la configuration de Jenkins, donc je m'excuse si c'est un problème simple, mais je n'ai rien pu trouver sur la documentation de email-ext.

78voto

Steve HHH Points 3088

J'ai configuré mon plug-in Email-ext pour utiliser le jeton CHANGES ( documentation officielle ici ):

Changes:
${CHANGES, showPaths=true, format="%a: %r %p \n--\"%m\"", pathFormat="\n\t- %p"}

Cela imprime ce qui suit dans mes notifications de construction :

Changes:
Username: 123
    - Project/Filename1.m
    - Project/Filename2.m
    -- "My log message"

Pour les messages HTML, j'ai placé le même code à l'intérieur d'un div et j'ai ajouté la mise en forme :

<div style="padding-left: 30px; padding-bottom: 15px;">
${CHANGES, showPaths=true, format="<div><b>%a</b>: %r %p </div><div style=\"padding-left:30px;\"> &#8212; &#8220;<em>%m</em>&#8221;</div>", pathFormat="</div><div style=\"padding-left:30px;\">%p"}
</div>

Voici un exemple de capture d'écran de ce que cela donne dans les e-mails envoyés par Jenkins (ce commit particulier provient de Subversion, mais cela fonctionne exactement de la même manière pour Git et d'autres systèmes de contrôle de version) :

Change list for Jenkins

20voto

Yan Oreshchenkov Points 223

D'après la documentation originale : Pour voir la liste de tous les jetons de messagerie disponibles et ce qu'ils affichent, vous pouvez cliquer sur le " ?" (point d'interrogation) associé à la référence du jeton de contenu au bas de la section email-ext de l'écran de configuration du projet.

Voici le résultat :

${CHANGES}
Displays the changes since the last build.

showDependencies
    If true, changes to projects this build depends on are shown. Defaults to false
showPaths
    If true, the paths, modifued by a commit are shown. Defaults to false
format
    For each commit listed, a string containing %X, where %x is one of:

    %a
        author
    %d
        date
    %m
        message
    %p
        path
    %r
        revision

    Not all revision systems support %d and %r. If specified showPaths argument is ignored. Defaults to "[%a] %m\\n"
pathFormat
    A string containing %p to indicate how to print paths. Defaults to "\\t%p\\n"

1voto

Arpit Points 11903

Pas dans l'objet d'un courriel, mais vous pouvez envoyer le journal des modifications au destinataire en tant que pièce jointe dans un courriel en utilisant la fonction Plugin Git Changelog comme action post-construction dans Jenkins Emploi. Sélectionnez Create a file donner un nom à un fichier ( CHANGELOG.md pour moi), comme dans l'image ci-dessous :

enter image description here

Assurez-vous que vous avez configuré Gestion du code source como GIT dans Jenkins JOB.

Ensuite, créez Notification par courriel modifiable et copier le nom du fichier journal des modifications git comme valeur de l'option Attachments comme dans l'image ci-dessous :

enter image description here

1voto

Tomas Bjerre Points 1211

À partir de la version 2.0 et des versions ultérieures de Plugin Git Changelog vous pouvez obtenir le journal des modifications sous forme de chaîne dans un pipeline. Et ensuite, il suffit d'utiliser cette variable dans le courrier.

node {
 deleteDir()
 sh """
 git clone git@github.com:jenkinsci/git-changelog-plugin.git .
 """

 def changelogString = gitChangelog returnType: 'STRING',
  from: [type: 'REF', value: 'git-changelog-1.50'],
  to: [type: 'REF', value: 'master'],
  template: """
  <h1> Git Changelog changelog </h1>

<p>
Changelog of Git Changelog.
</p>

{{#tags}}
<h2> {{name}} </h2>
 {{#issues}}
  {{#hasIssue}}
   {{#hasLink}}
<h2> {{name}} <a href="{{link}}">{{issue}}</a> {{title}} </h2>
   {{/hasLink}}
   {{^hasLink}}
<h2> {{name}} {{issue}} {{title}} </h2>
   {{/hasLink}}
  {{/hasIssue}}
  {{^hasIssue}}
<h2> {{name}} </h2>
  {{/hasIssue}}

   {{#commits}}
<a href="https://github.com/tomasbjerre/git-changelog-lib/commit/{{hash}}">{{hash}}</a> {{authorName}} <i>{{commitTime}}</i>
<p>
<h3>{{{messageTitle}}}</h3>

{{#messageBodyItems}}
 <li> {{.}}</li> 
{{/messageBodyItems}}
</p>

  {{/commits}}

 {{/issues}}
{{/tags}}
  """

mail bcc: '', body: """Here is the changelog:

${changelogString}
""", cc: '', from: '', replyTo: '', subject: 'The Changelog', to: 'the@email'
}

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