すえひろがりっっっっ! このページをアンテナに追加 RSSフィード

2017-08-28

Redmine Bitbucket Hook プラグインを fork して最新の Redmine で使えるようにした

Bitbucket に push したコミットRedmineリポジトリに取り込むプラグイン redmine_bitbucketgit_hook が Rails4 ベースの Redmine と最新の Bitbucket に対応していなかったので対応した。

リポジトリ

https://github.com/suer/redmine_bitbucketgit_hook

変更点

Rails 4 に対応

Rails 4 ベースの Redmine で動くように変更した。

Bitbucket の Webhook 設定に対応

Bitbucket では従来 Services という設定で他のアプリとの連携を行っていたが、ある時期から Webhooks という設定に変更になった。

この新しい設定に対応した。

git コマンドを Redmine の設定から取得できるように変更

もとの redmine_bitbucketgit_hook では git のコマンドにパスが通っている必要があった。

この修正では config/configuration.yml で git のパスが設定されている場合に、その設定を使うように変更した。

インストール

1. 以下を実行

$ cd $RAILS_ROOT/plugins
$ git clone https://github.com/suer/redmine_bitbucketgit_hook.git
$ bundle install

上記を実行して Redmine再起動

使い方

管理 > プラグイン > redmine_bitbucketgit_hook の「設定」で Bitbucket から clone する先のディレクトリを指定する。(1度だけ)

f:id:suer:20170829005407p:image

リポジトリの設定で Bitbucketリポジトリ URL を指定する。

f:id:suer:20170829005402p:image

作成ボタンをクリックすると、またリポジトリの設定画面が表示されるが、ローカルのディレクトリパスに変換されているので、もう一度このまま作成ボタンをクリックする。

f:id:suer:20170829005357p:image

Bitbucket 側では Webhooks の設定を行う。

URL には https://{RedmineRoot}/bitbucketgit_hook を指定する

f:id:suer:20170829005353p:image

以上の設定により、

  1. Bitbucket に push
  2. Bitbucket が https://{RedmineRoot}/bitbucketgit_hook にアクセス
  3. RedmineBitbucket からもらった JSON を見て Bitbucket から fetch

という動きとなり、自動的に同期される。

2011-06-20

本当はすごい codefirst の開発環境

(本記事は @suer, @mallowlabs, @mzp がノリノリで共同執筆しました!)



近代的なソフトウェア開発に必要なツールは3つある。

私はこれに AsakusaSatellite (以下AS)を加えたいと思う。

以上の4ツールを使用することによって、迅速なコミュニケーション、洗練された自動化をベースとした開発リズムを体験することができる。

このあとの節では具体的なユースケースをベースに、上記ツールの連携方法及びそのメリットをみていく。

ユースケース:開発中にソースコードの特定行で例外が発生した原因を探る

ここは codefirst の開発室。

@suer と @mallowlabs と @mzp はリズム良くコードを書いています。


f:id:suer:20110619234757p:image


そんなとき、ビルドの異常を知らせるポップアップが表示されます。

f:id:suer:20110619235023p:image

さっそくAS 上でミーティングがはじまります。

@suer「あれ?なんか失敗してる。さっきの push で関係ないところがバグったみたいだ。
       Searcher.scala の23行目で例外が発生してる」
@mallowlabs「ウケルわー。誰だよこれ書いたやつwwww」
@mzp「…」


該当ソースコードを開くために、Redmineの「コード検索プラグイン」を使います。


f:id:suer:20110619235149p:image

@suer「最速で開けて便利だ」
@mallowlabs「ウケルわー」


Redmine の「注釈」機能を用いて、その行が誰がどのコミットで変更したかを調査します

f:id:suer:20110619235401p:image

f:id:suer:20110619235727p:image


@suer「コミットログにチケット番号が入ってるからコミットの意図が追えるね」
@mallowlabs「意図丸出しでウケルんですけどーw」
@mzp「…(僕しかコード書いてない)」


TiDD」 を実現するためのツールである「bleis-hook(正式名称 Git-Hooks)」 により、開発者はトピックブランチ呼ばれるチケット単位のブランチで作業することになります。これにより、1つのコミットの単位は、2つ以上のチケットを解決する大きさにはなりません。また、すべてのコミットにはチケット番号が必ず含まれるようになるため、すべての行の意図を後から知ることができます。ブランチを使った開発で問題になるのがマージ作業ですが、分散バージョン管理システムの強力なマージ機能がこれをサポートします。


@suer「#643 の変更でバグったみたいだ。これは特定の条件が重なったときに起こるらしい。
       単体テストだけでなく、シナリオテストを書いておいてよかったな」
@mallowlabs「最速で見つけてさすがっす!」
@mzp「…(見つけたの Jenkins だし)」


「Jenkins 」による CIソースコードが push されるたびに ビルド / 単体テスト / シナリオテスト / 配備 が実行されるため、問題が発生・修正されたことが即座に分かります。バグのあるコミットをしたあと、その問題が何日も後に発見されて原因が特定しにくくなるという心配はありません。


@suer「ビルドが成功した瞬間にポップアップが表示されるし、XFD でもわかるし便利だ」
@mallowlabs「便利すぎてウケるわー」
@mzp「Websocket おいしいです」


Jenkins プラグインとそれと連携する Chrome エクステンション を独自に開発しているため、最速で問題に気づくことができます。


f:id:suer:20110620000206p:image


@suer「AS にも通知されるから見逃す心配もない」
@mallowlabs「通知も最速だわー」


Jenkinsのビルドが完了するたびに、AS に結果を通知するプラグインを使っているので、AS 上でもビルド結果が即座にわかります。


f:id:suer:20110619235952p:image

f:id:suer:20110619235951p:image


@suer「じゃあこの問題をコードレビューのチケットにしておいて」
@mallowlabs「ウケルわー」
@mzp 「…(直すのどうせ僕だし)」


f:id:suer:20110620000334p:image


@mallowlabs「チケット作ったわー」


f:id:suer:20110620000427p:image


AS では、チケット番号を入力するだけで、自動でチケットのタイトルが補完されたり、発言からチケットを作成できます。Redmine と AS の画面を往復せずに議論を進めることができ、開発のリズムを損ねません。


こうして根の深そうな問題も、発生からわずか10分たらずで解決。もちろん、このやりとりも AS や チケットに残るため、未来の自分たちを助けることになるのです。


@suer「バグ修正とかちょれーわ」
@mallowlabs「カッケー!」
@mzp 「…(直したの僕だし)」


半年後...

@suer 「なんでライブラリ変更したんだっけ?」
@mallowlabs「覚えてるわけないわーw」
@mzp「Redmine と AS を検索してみましょう」


Redmine と AS に記録が残っているため、簡単に検索してその意図を確認することができます。


f:id:suer:20110620000805p:image

f:id:suer:20110620000804p:image

@suer「設計意図がすぐに検索できて便利だなー」
@mallowlabs 「ウケルわー」
@mzp 「そういえば実装したの僕でした」


まとめ

  • 4ツールが噛み合ったときの開発リズムの中毒性は異常
  • おっさんかわいいよおっさん。
  • @mzp ががんばっている

注意事項

  • このストーリーはフィクションです。実在の人物、団体、事件などにはいっさい関係ありません。
  • @mzp が辛い思いをしていることはありません
  • @mallowlabs はアホの子ではありません
  • @suer は最速です。ただし、何が最速かは謎です。
  • どんなにツールが優れていても、チームのメンバを信頼できなければソフトウェア開発にリズムは生まれません。ストーリーの中の @mzp のように不信感を持ってはなりません。まずは信頼することから始めましょう。

ユースケース中に登場したソフトウェア



codefirstとは

codefirst とは自分たちを含めた世界中のコーダーが、 ステキなコードを楽しく書くことを目指して日々プログラムを書くチームです。 ソフトウェア開発を楽しくするツールをオープンソースで公開しています。