2013年10月28日月曜日

Jenkins:危険!自動アップデート!「Email-ext plugin」でエラーが発生!(解決) #jenkinsci


先週発生した、事象について今日の対応を交えて、まとめておきたいと思います。

きっかけ

Eメール通知で、「失敗時」以外にもメールを飛ばしたくて、「Email-ext plugin」を入れていました。

10月23日


急に「Email-ext plugin」でエラーが起きるので、昨日何かしました?と言われて調査しました。
該当のエラーがこちら
10 23, 2013 9:52:55 午前 hudson.model.AbstractBuild$AbstractBuildExecution performAllBuildSteps
WARNING: Publisher hudson.plugins.emailext.ExtendedEmailPublisher aborted due to exception
java.lang.NullPointerException
        at hudson.plugins.emailext.ExtendedEmailPublisher._perform(ExtendedEmailPublisher.java:243)
        at hudson.plugins.emailext.ExtendedEmailPublisher.perform(ExtendedEmailPublisher.java:232)
        at hudson.tasks.BuildStepMonitor$3.perform(BuildStepMonitor.java:45)
        at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:781)
        at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:753)
        at hudson.model.Build$BuildExecution.cleanUp(Build.java:192)
        at hudson.model.Run.execute(Run.java:1710)
        at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
        at hudson.model.ResourceController.execute(ResourceController.java:88)
        at hudson.model.Executor.run(Executor.java:230)

調査

暫定対応

最近、Jenkinsいろいろいじっていたし何かしたかなぁ~?と思っていたら・・・。
Oct 23 04:13:10 localhost yum[2408]: Updated: jenkins-1.536-1.1.noarch

んー!何かアップデートされてる~!!∑(゚ω゚ノ)ノ
じゃあ、一旦戻してみる。
# yum install jenkins-1.535-1.1.noarch

あ、出来ない・・・

# yum remove jenkins
# yum install jenkins-1.535-1.1.noarch

出来た!
これでエラーが出ないとのこと。

詳細調査

それにしても何が起きたんだろうと調べてみると・・・
githubから


[#JENKINS-20215] Send to requester is using "name" rather than "id" to generate an email address - Jenkins JIRA

バグっていたみたいです。

前提条件

この現象が起きる環境が以下になります。
プロダクトバージョン
Jenkins1.536
Email-ext plugin2.35.1

Jenkinsが「1.535」以前であればこの現象は起きませんでした。

また、今は解消されました。(どちらかのアップデート対応で大丈夫です!)
プロダクトバージョンリリース日
Jenkins1.53710月28日
Email-ext plugin2.3610月26日

私はJavaのソースを読むことが出来ませんが、状況から察するに
  • Jenkinsの「1.536」の変更で何かtriggerに不具合があった
  • Email-ext pluginは 「2.36」で対応した
  • Jenkinsは「1.537」で対応した
という結果なのではないかと思います。

ということで見つけた、Jenkins側の修正
[#JENKINS-20262] Fix for JENKINS-18629 caused a regression in several plugins - Jenkins JIRA

まとめ


  • yumの自動アップデートには気をつけよう!
  • プラグインのgithubではすでに修正が上がっていたので、プラグインをビルドする力をつける!
  • ちなみに「Email-ext plugin 2.36」で「Always(いかなる状態でも通知する)」という強力なTriggersが追加されていました!
https://github.com/jenkinsci/email-ext-plugin/commit/d288c1e40ec86bc2d03a601e15e6e142868ab4a8

参考サイト

[#JENKINS-20215] Send to requester is using "name" rather than "id" to generate an email address - Jenkins JIRA

Email-ext plugin - Jenkins - Jenkins Wiki
[#JENKINS-20262] Fix for JENKINS-18629 caused a regression in several plugins - Jenkins JIRA
Changelog | Jenkins CI
Plugin tutorial - Jenkins - Jenkins Wiki

Zenback