すえひろがりっっっっ! このページをアンテナに追加 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

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

2012-12-04

複数の Jenkins と Travis のビルドの失敗が最速で分かる Stoplight を Heroku にデプロイ

f:id:suer:20121204224733j:image:w400

複数のビルドサーバを一つのUIで確認できるStoplight - cynipeと読む を見て「これだっ!」と、この前まで隣だった人が叫んでいたので Heroku にデプロイしてみました。

iPad で表示したままにしておいて、チームのメンバが見えるところにおいておくと XFD っぽくていい感じです。


前提

以下が準備済みである必要があります。

手順

1. stoplight を clone する

$ git clone git://github.com/customink/stoplight.git
$ cd stoplight

2. ログ出力パスの変更

Heroku は tmp/ ディレクトリ以外のファイル書き込みを禁止しているのですが、ログ出力で log/ ディレクトリに書き込みをしようとしているのでこのままでは実行時にエラーを吐いてしまします。

$ git grep application.log
config/boot.rb:$logger = ::Logger.new('log/application.log')
lib/stoplight/providers/provider.rb:  $logger = Logger.new('log/application.log')

そこでそれぞれのログ出力パスを tmp/ ディレクトリ以下に変更します。


$ git diff 
diff --git a/config/boot.rb b/config/boot.rb
index 036429e..2db6b98 100644
--- a/config/boot.rb
+++ b/config/boot.rb
@@ -16,5 +16,5 @@ require 'application'
 
 require 'logger'
 class ::Logger; alias_method :write, :<<; end
-$logger = ::Logger.new('log/application.log')
+$logger = ::Logger.new('tmp/application.log')
 use Rack::CommonLogger, $logger
diff --git a/lib/stoplight/providers/provider.rb b/lib/stoplight/providers/provider.rb
index 9bcadd9..77b7f44 100644
--- a/lib/stoplight/providers/provider.rb
+++ b/lib/stoplight/providers/provider.rb
@@ -7,7 +7,7 @@ require 'uri'
 
 unless $logger
   require 'logger'
-  $logger = Logger.new('log/application.log')
+  $logger = Logger.new('tmp/application.log')
 end
 
 # Provider is an abstract class that all providers inherit from. It requires that a specified format be returned. This way, stoplight

変更を commit しておきます。

$ git commit -am "change log file path"

3. 設定

設定は servers.yml に記載します。

example ファイルがあるので、これをコピーして編集します。

$ cp config/servers.yml.example config/servers.yml

以下のような内容を追記します。編集内容は 本家 README を参考にしましょう。

-
  type: 'jenkins'
  url: JenkinsのURL
-
  type: 'travis'
  url: http://travis-ci.org
  owner_name: ユーザ名

config/servers.yml は .gitignore で無視されるので、無視されないようにします.

$ git diff
diff --git a/.gitignore b/.gitignore
index e9461a4..1496818 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,7 +1,6 @@
 .bundle
 .rvmrc
 .sass-cache
-config/servers.yml
 log/*.log
 tmp
 vendor/ruby

設定を commit します。

$ git add .
$ git commit -a -m "settings"

4. Procfile を消す

Procfile の内容が実行されますが Heroku では失敗します。

運用環境では必要無いので消してしまいましょう。

$ rm Procfile
$ git commit -a -m "remove Procfile"

5. デプロイ

いよいよデプロイします。heroku create 時に URL が表示されるのでメモしておきましょう。

(忘れた場合でも Heroku にログインすれば確認できます)

$ heroku create
Creating stark-badlands-1640... done, stack is cedar
http://stark-badlands-1640.herokuapp.com/ | git@heroku.com:stark-badlands-1640.git
Git remote heroku added

$ git push heroku master

6. 確認する

デプロイ時に表示された URL に index.html をつけてアクセスします。

今回の場合なら http://stark-badlands-1640.herokuapp.com/index.html となります。

f:id:suer:20121204221700p:image:w300

まとめ

実際は試行錯誤しましたが、まとめてみると簡単にデプロイできるようになりました。

ビルドサーバVPS などグローバルにアクセスできるところにあるのであれば、Heroku へのデプロイを検討してみてもいいかもしれません。

2011-12-11

プロジェクトの概要にREADMEを表示するプラグインを書いた



f:id:suer:20111208120833j:image



この記事はRedmine Advent Calendar jp 2011 11日目の記事となります。

運用寄りの記事も考えましたが、それよりもプログラムを書くのが楽しそうだったので、即興で小さなプラグインを作ってみました。

概要

github だと READMEから始まるファイルがあるときれいに表示してくれます。

私のようなずぼらなプログラマはREADMEって書くのが億劫になるのですが、

あんな風にプロジェクトの顔的存在として表示されるとなると頑張って書きたくなります。

Redmineはプロジェクトにリポジトリを持っているので、githubと同じことができるじゃん!ということで試作してみました。

動作環境

Redmine1.2が動く環境で確認しています。

リポジトリgit しか確認していません。

ソースコード

github で公開しています。

https://github.com/suer/redmine_readme

機能

リポジトリのトップディレクトリからREADME から始まるファイルを探してきて、プロジェクトの概要ページに表示します。

Redmineが使っているWikiフォーマッタを使用しているのでなんとなくHTMLに整形されます。

また、Markdownプラグインが入っていて、ファイル名が README.markdown の時に限り、markdownフォーマッタを優先的に使用します。


まとめ

なんだか細いけど、まあなんとか見れます。

こうしてみるとREADMEがプロジェクトの概要として機能して見えますね。

リポジトリから取ってきているのでもちろんバージョン管理されます。

つまり、プロジェクトの概要がバージョン管理されることになります。

READMEにはビルド方法とか動作環境とか書くのでちょっとイメージと違うかもしれませんが、

これはこれでおもしろいのではないかと。

次は@TrinityTさんです。よろしくお願いします。

2010-10-24

Redmine iPhone UI プラグインを 1.0.0 対応しました

Redmine iPhone UI プラグインが便利そうなので入れてみたのですが、1.0.0 から追加された subtasking に対応していなかったようなのでやってみました。

さらに、プロジェクトの階層について

  • 権限のないプロジェクトが表示される(リンク先はforebiddenだけど。。。) → 権限があるプロジェクトだけ見せたい
  • プロジェクトの親子関係がなくフラットに展開されている→階層表示したい

という感じで改善点が結構あったのでこの辺りも対応しました。

http://github.com/suer/redmine_iphone_plugin

環境

以下の環境で確認しています

Redmine 1.0.0 以降

Ruby 1.8.6

インストール

1. GitHubにおいてありますので最新版を以下のようにもってきます。

$ git clone git://github.com/suer/redmine_iphone_plugin.git

2. すると redmine_iphone_plugin という名前のディレクトリができるので、これを

RAILS_ROOT/vender/plugins/redmine_iphone_plugin

として保存します。

3. Rails再起動します

使い方

プロジェクト一覧画面

Redmineの「ホーム」のURLの末尾に /iphone を付けます。

トップはアクセス権限があるプロジェクトが階層表示されます。

f:id:suer:20101024233143p:image:h240

チケットの閲覧画面

親チケットと

f:id:suer:20101024233144p:image:h240

子チケットの一覧を表示します。

f:id:suer:20101024233145p:image:h240

Add SubTask をクリックしたとき

デフォルトで親チケットを登録します。

f:id:suer:20101024233146p:image:h240

2010-10-03

履歴付チケット一覧出力プラグインを書いてみた

Redmineのチケット一覧のCSV出力は説明は出力されますが、履歴が付いてきません。

チケットを長らくメンテしてると、重要な情報は履歴にあったりするので、一覧するときには履歴が付いていた方が便利なことが多々あります。

そこで通常のCSV出力の末尾に履歴を追記するプラグインを書いてみました。

もしかしたら世の中には既に作っている人がいるかも知れません...

リポジトリ

http://github.com/suer/redmine_export_with_journals

環境

Redmine 1.0.0 で確認しています。

0.9 系でも使えるかも。

インストール

Redmineのルートディレクトリ

$ ruby script/plugin install git://github.com/suer/redmine_export_with_journals.git

してからRails再起動

使用方法

設定

システム管理者アカウントログインし、

「管理」メニューの「ロールと権限」から許可したいロールの「Export csv with journals」にチェックを入れて保存します。

f:id:suer:20101004002234p:image

出力
  1. 許可したロールのユーザでログイン後、プロジェクトにアクセスし、「チケット」メニューをクリックします
  2. 適当に検索します
  3. チケットリストの右下の「csv with journals」をクリックします

f:id:suer:20101004002235p:image

こんな感じで履歴が後ろに出力されます。

f:id:suer:20101004002237p:image

まとめ

履歴まで一覧できたらどうだろう、ということでやってみましたがどうなんでしょう。

それなりに便利そうならメンテを続けるかもしれません。


2011/6/12 追記

出力件数の上限のロジックを変更しました。

チケット一覧で25件表示だったら25件しか出力していなかったのですが、標準のCSV出力と合わせました。

管理者アカウント

  • 「管理」 > 「設定」 > 「チケットトラッキング」タブ

と進み、「出力するチケット数の上限」の数値を設定してください。

f:id:suer:20110612225252p:image