JenkinsからRedmineのチケットをクローズとかするPluginつくったった
公開場所
BitBucket:【BaseReality6thLayer / RedmineRest — Bitbucket】
バイナリ:【Dropbox - RedmineRest.hpi】
できること
ジョブが成功したときにコミットコメントに含まれているチケットを特定のステータスに更新します。
RedmineのREST APIを使って更新しにいきます。
コミットコメントは「close refs #12」みたいな感じです。複数のチケットを指定する場合は「close refs #12 #13」みたいな感じです。「close refs」までは固定です。
対象のRedmineと更新させたいステータスはJenkins全体とジョブの両方で設定できて、ジョブの設定が空文字の場合はJenkins全体の設定を使うようになっています。
インストール方法
バイナリをダウンロードして、Jenkinsのプラグインの管理 -> 高度な設定 と遷移し、「プラグインのアップロード」するからRedmineRest.hpiをアップロードしてください。
Jenkinsを再起動するとインストールされるはずです。
設定方法
- RedmineのREST API有効化
- Redmine REST APIアクセスキーのメモ
- 管理者ユーザーの個人設定画面から右側にある「APIキー 表示」をクリックして表示される英数字をメモしておきます。
- Jenkinsからチケット自動更新するときの自動更新後のステータスのIDをメモ
- 管理 -> チケットのステータス と遷移し、更新後の状態にしたいステータスをクリックするとステータスの編集画面に遷移します。このとき開かれるURLの末尾が「issue_statuses/4/edit」などとなっています。この最後から2番目の数字(ここだと4)がIDになります。文字列でも指定出来るのですが、文字化けとか対処する必要がでそうなので、ID指定にしました。
- Jenkinsでシステムの設定から「Redmine Rest」を設定する
- 自動更新したいジョブの設定でRedmine Restを有効にする
- ジョブの設定画面で「ビルド後の通知を追加する」から「Redmine REST」を選択してください。先の設定と同じ項目が出ると思います。ここで設定をすると、先の画面で設定した値が上書きされます。必要がなければ特に値を設定しなくても大丈夫です。
実行
ビルドを実行すればおkです。ただ、コミットコメントは「変更」から取得しているので、「前回のビルドとリビジョンに差のないビルド実行」はJenkinsが変更として検知しないので、今回のプラグインは動作対象外になります。
つまり、「新しいコミットにおいて、close refs #xxx となっているときにビルドが成功すればそのチケットを任意のステータスに更新する」という感じです。
現状とか今後
まだまだ追加したい機能があるのですけど、まぁとりあえず動くものを触ってもらえる人がいそうなので使いにくい状態ではあるけど、公開しました。
なので手動でちょこちょこと動かしたくらいしかテストしていません。動作に問題があれば連絡ください。直します。
今後追加したい機能は
「ユーザーが指定した正規表現でマッチ」と「更新後のステータス」を1セットにしていくつも指定できるようにする。
「ビルドのステータスによってチケットを作成する」
「チケットの作成、更新時に特定のユーザーをウォッチャーに追加する」
くらいをやりたいです。
たぶん今月中には実装して、正式にJenkins Pluginとして申請する予定です。
面倒な人は月末まで待っているほうがいいかも。
他にもBitBucketとかGitHubのIssuesと連携するPluginをつくろうと思っています。あとTracもいじってみたいですね。
- 作者: John Ferguson Smart,Sky株式会社玉川竜司
- 出版社/メーカー: オライリージャパン
- 発売日: 2012/02/22
- メディア: 大型本
- 購入: 12人 クリック: 345回
- この商品を含むブログ (38件) を見る