投稿

6月, 2015の投稿を表示しています

lube

前回の記事でStashのPullRequestのrefspecがうまく更新されない問題を紹介しました。
今回は、インストールするだけでrefspecを自動で更新してくれるPluginの紹介です。

lube
その名の通り、lubeといいます。
すでにGithubに公開しているので、必要な方は自分でビルドしてください。

名前から分かると通り潤滑油をイメージしています。

インストールするだけで動きが良くなる
そんな思いを込めています。
今のところ、PullRequestのrefspecが自動で更新されるよう機能のみです。
が、リクエストやPRなどがあれば取り入れていこうかなとも思っています。

終わりに
コードの中身は10分程度で書けるほどシンプルなものなので、どうやってPullRequestListenerを作っているかを見る分には良いと思いますよ。

StashのPullRequestのrefspecが変わるタイミング

今回は、Atlassian社の有償製品の1つStashについてです。
公式ブログにも書いてある通り、PullRequest元や、PullRequestがMergeされた後のrefspecをStash側で提供しています。
これを使って、Jenkins上でPullRequestのテストを行った時に問題が発生しました。

問題
その問題とは、StashからJenkinsへ渡されるPullRequest元のCommit Hashが、Stash側が提供しているPullReqhestのrefspecには存在せず参照出来ないといったものです。
以下の様なエラーが発生しました。



これだけでは理解するのは難しいと思いますが、
要点をまとめると、Jenkinsでfetchしたrefspecが更新されていないという現象です。

解決策
私が確認したわけではありませんが、どうやらPullRequestの詳細画面を開いたタイミングでStash内部のPullRequestのrefspecが更新されているようです。
そこで画面を開いた時の処理を追ってみたところ、Merge可能かが確認出来るEndpointにリクエストを投げていました。
このEndpointにリクエストが投げられ、StashがPullRequest元と先をMerge可能かを検証するタイミングで、PullRequestのrefspecを更新しているようでした。
そのため、Jenkinsがfetchする前に先ほどのEndpointにリクエストを投げると、StashがPullRequestのrefspecが更新し、Jenkinsがうまく参照出来るrefspecをfetch出来るようになります。

こういうのって結構ハマっている人多そうだなぁ。。。
うーん、RepositoryServicePullRequestServiceにcanMergeだったかというメソッドあったし、プラグインでそれ呼べばいんじゃね?と思う月曜日でした。

※ Git初心者なので間違っているところがあれば指摘お願いします。

Slackerのバグ修正版公開

v0.1.2には致命的なバグが含まれていました。
そのバグフィックス版、v0.1.2を公開しました。

致命的なバグは、User Map JSONが240文字程度を超える文字を保存しようするとエラーが500エラーが発生するというものです。
すでに使用している方はアップデートすることを推奨します。

次にリリースはバグフィックスではなくユーザーの設定画面をリリースしたいですね。