web-dev-qa-db-fra.com

Comment inclure git changelog dans les emails de Jenkins?

Existe-t-il un moyen d'importer le journal des modifications généré par Jenkins vers le sujet d'un e-mail (via l'e-mail par défaut ou plug-in e-mail )?

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

39
Igor

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 build:

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

Pour les messages HTML, j'ai placé le même code dans un div et ajouté un formatage:

<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 l'apparence des e-mails envoyés par Jenkins maintenant (ce commit particulier est venu de Subversion, mais il fonctionne exactement de la même manière pour Git et d'autres systèmes de contrôle de version):

Change list for Jenkins

66
Steve HHH

À partir de la documentation d'origine: Pour voir une 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 de jeton de contenu au bas de la section e-mail sur le é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"
16
Yan Oreshchenkov

Pas dans l'objet d'un e-mail, mais vous pouvez envoyer le journal des modifications au destinataire sous forme de pièce jointe dans un e-mail en utilisant Git Changelog Plugin comme action de post-construction dans Jenkins Job. Sélectionnez Create a file case à cocher, donnez 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 comme [~ # ~] git [~ # ~] dans Jenkins JOB.

Ensuite, créez Notification modifiable par e-mail action de post-génération et copiez le nom du fichier journal des modifications git comme valeur de Attachments, comme dans l'image ci-dessous:

enter image description here

1
Arpit

À partir de la version 2.0 et ultérieure de Git Changelog Plugin , vous pouvez obtenir le journal des modifications sous forme de chaîne dans un pipeline. Et puis il suffit d'utiliser cette variable dans l'e-mail.

node {
 deleteDir()
 sh """
 git clone [email protected]: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'
}
1
Tomas Bjerre