web-dev-qa-db-ja.com

Jenkinsメールにgit changelogを含める方法は?

Jenkinsによって生成された変更ログを電子メールの件名にインポートする方法はありますか(デフォルトの電子メール、または email-extプラグイン )。

私はJenkinsの設定が初めてなので、これが単純な問題である場合は謝罪しますが、email-extのドキュメントには何も見つかりませんでした。

39
Igor

CHANGES Tokenを使用するようにEmail-extプラグインを構成しました( official documentation here ):

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

それは私のビルド通知に次を印刷します:

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

HTMLメッセージの場合、同じコードをdiv内に配置し、フォーマットを追加しました。

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

Jenkinsが現在送信している電子メールでどのように見えるかのスクリーンショットのサンプルを次に示します(この特定のコミットはSubversionからのものですが、Gitや他のバージョン管理システムでもまったく同じように機能します)。

Change list for Jenkins

66
Steve HHH

オリジナルのドキュメントから:利用可能なすべての電子メールトークンとそれらが表示するもののリストを表示するには、「?」をクリックします。 (疑問符)プロジェクト構成画面のemail-extセクションの下部にあるコンテンツトークンリファレンスに関連付けられています。

結果は次のとおりです。

${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

Jenkins Jobのビルド後アクションとして Git Changelog Plugin を使用して、変更ログをメールの添付ファイルとして受信者に送信できますが、電子メールの件名ではありません。 Create a fileチェックボックス、ファイルに名前を付けます(CHANGELOG.md for me)、以下の画像のように:

enter image description here

ソースコード管理[〜#〜] git [〜#〜]Jenkins JOBで。

次に、 編集可能な電子メール通知 ビルド後のアクションを作成し、下の画像のように、git変更ログファイルの名前をAttachmentsの値としてコピーします。

enter image description here

1
Arpit

Git Changelog Plugin のバージョン2.0以降では、変更ログをパイプラインの文字列として取得できます。そして、その変数をメールで使用します。

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