October 28, 2015

Jenkins の Warnings Plugin で Python の依存パッケージの更新をチェックする

Pythonで開発していると、依存しているパッケージたちが古いのかどうか自動でチェックしたくなりますが、クローズドなものだと shields.io のような外部のサービスでチェックすることができません。そこで、piprotJenkinsWarnings Pluginでチェックできるようにします。

piprot について

piprotpip install -U piprot でインストールでき、 piprot requirements.txt で依存パッケージが古いかどうかチェックできます。

コマンドでメールを送信したい場合は年間$25払ってとWebページには記載されていますが、メールを送信しなければフリーで使えます。

コマンドの実行結果は下記のような感じです。

$ piprot requirements.txt test_requirements.txt 
click (5.1) is up to date
elastictabstops (1.0.0) is up to date
pyvmomi (5.5.0-2014.1.1) is out of date. Latest is 5.5.0-2014.1
flake8-pep257 (1.0.3) is up to date
flake8 (2.5.0) is up to date
pep257 (0.6.0) is 80 days out of date. Latest is 0.7.0
pep8-naming (0.3.3) is up to date
piprot (0.9.4) is up to date
pytest-cov (2.2.0) is up to date
pytest-xdist (1.13.1) is up to date
pytest (2.8.2) is up to date
tox (2.1.1) is up to date
Your requirements are 65 days out of date

Compiler Warnings の設定

いきなりですが、JenkinsにWarnings Pluginをインストールしている前提です。

Jenkins -> Manage Jenkins -> Compiler Warnings でパーサを追加します。

設定は下記のようにします。

  • Name: Piprot
  • Link name: Piprot
  • Trend report name: Piprot Warnings Trend
  • Regular Expression: (.+) \((.+)\) .* out of date. Latest is (.+)
  • Mapping Script:
import hudson.plugins.warnings.parser.Warning

String requiredPackage = matcher.group(1)
String currentVersion = matcher.group(2)
String latestVersion = matcher.group(3)
String categories = "piprot"
String message = requiredPackage + " " + currentVersion + " is out of date. Latest is " + latestVersion

return new Warning(requiredPackage, 0, "Piprot Parser", categories, message)

Job の設定

下記のような感じで、Build -> Execute shell にスクリプトを書き、 piprot を実行するようにします。

piprot requirements.txt

Post-build Actions -> Scan for compiler warnings の Scan console log に下記のように設定します。

  • Parser: Piprot

さらに Advanced… で、下記のようにしています。

status-thresholds

ビルド結果

下記の画像のようにビルド結果にPiprotというのが追加されます。

build-result-warnings クリックすると下記のような画面になります。

piprot-details-files Mapping Scriptでパッケージ名をファイル名としているので、パッケージ毎に情報が表示されています。

Warningsタブ。

piprot-details-warnings Detailsタブ。

piprot-details-details トレンドのグラフも表示されます。

piprot-warnings-trend

© Yuya Kusakabe 2011-2022

Powered by Hugo & Kiss.