リリースノートを自動生成するGradleプラグインを作ってみた

Android 版 feather 開発担当の@numa08です。

実はコベリンでは毎週水曜日に「つくる会」と言って、社員が自分のアイデアなどを形にする会をやっているのですが、そこでの成果物として、Gradleプラグインを作ったのででここで報告をしようと思います。

作ったもの

Gitのログなどに記入しておいた所定のフォーマットの文章を解析して、リリースノートを作るGradleのプラグインを作りました。

解決したかった問題

アプリケーションの開発を行う上でリリースノートは必要なリソースの1つだと言えます。しかし、単なるテキストにすぎないのでソースコードなどとの紐付けが難しく、正しくメンテナンスされているのかが分かりにくい物でもあります。

そこで、リリースノートの作成を自動化し、またノートのソースにはGitのコミットログを利用することで低いコストで手軽にリリースノート作成をしたいと考えました。

出来上がったもの

MITライセンスで公開をしています。

numa08/gradle-releasenote-gen-plugin

Gitのログなどからリリースノートを作り、Markdown形式で出力をします。実はこのツール自体はGitには依存をしておらず、所定のフォーマットの文章をパラメータに指定しさえすれば、それで解析ができます。

そこで、パラメータにgit logコマンドに任意のオプションなどを指定して利用をすることを想定しています。

fix/なんとか機能: どうしようもないクラッシュ問題を対応しました。
feat/いつも使う機能: 誰もが驚く世紀の大発明を実施しました
fix/なんとか機能: 悲しみあふれる闇を取り払いました
feat/ときどき使う機能: 驚天動地の新機能を実装しました。

こういう感じの文章を使って

## 新機能

[いつも使う機能]

 - 誰もが驚く世紀の大発明を実施しました

[ときどき使う機能]

 - 驚天動地の新機能を実装しました。

## 不具合修正

[なんとか機能]
 - どうしようもないクラッシュ問題を対応しました。
 - 悲しみあふれる闇を取り払いました

こういうMarkdown形式のリリースノートとして出力します。

使い方

プラグインはBintrayを利用して公開しているので、リポジトリを参照に追加し、プラグインを適応してください。

buildscript {
    respositories {
        maven { url "https://dl.bintray.com/numa08/maven" }
    }
    dependencies {
        classpath 'net.numa08:genrelease:1.0'
    }
}
apply plugin: 'net.numa08.genrelease'

そして、プラグインの設定を記入します。

releaseNote {
 version "1.0"
 source "git log".execute()
 output file("Release.txt")
}
  • version - リリースノートに表示されるバージョンです。(今はまだ実装されていません)
  • source - リリースノートを作るソースとなる文章です。
  • output - 出力先のファイルです。指定しない場合は標準出力に表示されます。

フォーマット

解析される文字列のフォーマットは

[scope]/[subject]: [description]

となっています。

  • scope - fix/featのいずれかを指定してください。
    • fix - 不具合修正となります
    • feat - 新機能になります
  • subject - どの機能に対する修正/追加なのかを書いてください

  • description - どういった改修なのかを記入します

今後の発展

実は日本語にしか対応をしていないのでローカライズを行う必要があります。

また、カスタマイズもあまりできないので、そのあたりも。出力もMarkdownだけでなくプレーンテキストやHTMLなどを選択できるようにしたいですね。

まとめ

Gitのログなどからリリースノートを作るGradleのプラグインを作りました。実際はまだ開発フローの中に導入したわけでは無いのですが、今後取り入れたらまたここで紹介をさせて頂こうと思います。