Redmineとちょっとした自動化でちょっと幸せに

3行で言うと…


今回のブログ担当、石川です。ブログの記事を書くのは今回で15回目になります。過去に自分が書いたブログを見ていくと、当時の様子を思い返せてなかなか面白いです。

さて、突然ですが、私は”ちょっとした自動化”が好きです。大きな自動化となると色々考えることも多く大変ですが、 数十行程度でサラッと書いてしまえる個人レベルのちょっとした自動化はとても楽しめます。今回はそんなちょっとした自動化の一部をご紹介します。

実際に利用しているスクリプト

git hookで楽しいチケット駆動開発(もどき)

Redmineにチケットを起こし、そのチケットごとにxxxx/チケット番号という形でブランチを切って開発を進めるチケット駆動開発もどきで一部の開発を進めています。この作業なんでやったんだっけ?となったときにgitの履歴からブランチを特定すればRedmineのチケットにたどり着けるので作業がしやすくなっています。

しかし、このブランチ(例: feature/11111)ってなんの作業だっけ?となることが多く、困っていました。もちろんRedmineでそのチケット番号を検索すれば良いのですが、それが手間でした。

その手間を減らすためにちょっとした自動化を行いました。gitには、あまり有名ではありませんがブランチごとに説明を設定する機能(git branch --edit-description [])があるので、それを活用しています。

具体的には、

という動きをするスクリプトを作りました。

そして、Git - Git フックを利用し、スクリプトがブランチをチェックアウトした時に実行されるようにしています。

そうすることで、ブランチを切り替えるたびに以下のようにどんな作業をこのブランチで進めるのかと、そのチケットのURLが表示されるようになりました。



せっかくなので別のシェルスクリプトを書いて、ブランチの説明一覧を表示できるようにもしているので、ブランチ切り替えも楽になっています。



他の人の環境でも動くかわかりませんが、一応コードを公開しておきます。

Redmine子チケットの自動作成

とあるプロジェクトでは、学習的な意味合いを含んでいることもあってチームメンバー全員が各自作業したら終了、というようなチケットが多数作られていました。


全員が作業しないと終了できないチケット

当時のKPT

しかし、その運用には上記のKPTにもあるように複数人が同時に同じチケットの作業をやっていて、作業の見える化が…というような問題がありました。こういったチケットでは担当者がほとんど機能しないので、「このチケット終了にできてないけど、まだ作業してないの誰?」というのを確認するためにはチケットを開いて履歴を読む必要がありました。

ということで、KPTのTRYでもあげているように、現在は全員が作業するチケットに個人ごとの子チケットを作り、子チケット全てが終了となったら親チケットも終了とするという運用に切り替えました。(運用としてこれがベストの形なのかはともかく)



このチケットの作成は基本チケットのコピー機能を利用するのですが、

という個別の変更もしたかったため手作業が多く大変でした。

そこで、ちょっとした自動化です。



画像のようにrubyプログラムを実行し、要求された通り親チケットのIDを入力すると、子チケットが作成されるようにしました。

自分用なのでエラー処理すらしていませんが、一応動いています。
このスクリプトを書いたときは、この作業を行うのに何回もクリックが必要だったのが、こんなに簡単に!という満足感がありました。
(ついでに、RedmineのAPIの勉強にもなりました)

他の人の環境でも動くかわかりませんが、一応コードを公開しておきます。

git hookでコミットメッセージのフォーマットチェック

Redmineでは、関連づけたリポジトリへのコミットメッセージにチケット番号をつけておくと、直接チケットにそのコミットを関連づけることができます。



とっても便利な機能ですが、チケット番号をコミットメッセージに入れ忘れてしまうとチケットへの紐付けはRedmine上で直接設定しないといけません。頻繁にチケット番号を忘れるので困っていました。

そこで、先ほども出てきたGit - Git フックのcommit-msg フックを利用することでコミットメッセージを入力した後にチケット番号が含まれているかをチェックすることに。

コミットメッセージの中に#と数字が連続して含まれて入ればチケット番号とみなし、それが含まれていない場合はコミットできないようにしました。これによってチケット番号を忘れることなくコミットができるようになりました。

まとめ

今回はRedmineに関わる一部の例を紹介しましたが、意外とこのような小さな自動化でも「困っていること」をなくすことができます。

RedmineはAPIが多く提供されているので、”ちょっとした”自動化がやりやすくなっています。是非みなさんも個人レベルから”ちょっとした自動化”を初めてみてください。そうすれば、ちょっと幸せになれるかもしれません。

こちらの記事もオススメです!
MacのAutomatorで自動化して遊んでみた話
Macの標準アプリケーション「Automator」を使って写真の整理などを自動化しています。
初めて「APPS JAPAN」に出展しました
6月13日〜15日に幕張メッセで開催された「APPS JAPAN」に初めて出展しました。
人民元と香港ドルへの両替に外貨宅配サービス「Exchangers」を利用してみた
外貨宅配サービス「Exchangers」を利用して、日本国内で現地通貨を準備しました。
Bad SNSで脆弱性検査の練習!
WEB+DB PRESSの記事に従って「Bad SNS」を診断してみました。攻撃者立場の目線で検査を行うことが重要と感じました。
中国深圳にRedmineロゴ入りQiワイヤレスチャージャーを発注してみた
新ノベルティグッズとして竹製Qiワイヤレスチャージャーを中国の業者に直接発注しました。
ファーエンドテクノロジーからのお知らせ(2018/10/16更新)
第8回情報セキュリティEXPO秋(10/24〜26開催) でRedmineについてのご相談にお応えします
オープンソースのプロジェクト管理ソフトウェア「Redmine」についてのご相談にお応えします。
RubyWorld Conference 2018 (11/1・2開催) でブース出展・ショートプレゼン発表
RubyWorld Conference 2018でブース出展・ショートプレゼン発表を行います。
Redmineの最新情報をメールでお知らせする「Redmine News」配信中
新バージョンやセキュリティ修正のリリース情報、そのほか最新情報を迅速にお届け