GeekFactory

int128.hatenablog.com

リリースタスクの見える化を自動化する

ソフトウェアのリリース作業は時間が経つとともに複雑化する傾向があります。どんなに作業の自動化を推し進めても、リリース後の確認やドキュメントの更新などの手作業は残ってしまいます。また、一部の担当者しかリリース作業を知らないと、人がボトルネックになってしまいます。

そこで、リリース作業の内容や状況を見える化しておくことで、誰でも素早くリリースを行えるようになります。たとえ一人ぼっちの開発であっても、一ヶ月後の自分が作業手順を完璧に覚えているとは限らないため、見える化しておく価値はあります。

リリースタスクをIssueに書く

もしGitHubでタスクを管理している場合は、リリースタスクをIssueに書くやり方があります。

私がオープンソースで開発しているGradle SSH PluginGroovy SSHでは、リリースの度に以下のようなIssueを作成しています。

f:id:int128:20150513233733p:plain

リリースのワークフローは以下になります。

  1. 開発者がGitHubに新しいタグをpushする。
  2. Travis CIがビルド(コンパイル、テスト、外部リポジトリへのアップロード等)を行う。
  3. 開発者はIssueにしたがって手作業(リリース後の確認、リリースノートの更新、ドキュメントの更新等)を行う。

なお、JIRAやRedmineなどでタスク管理している場合はそちらにタスクを追加するとよいでしょう。普段からタスク管理している方法に合わせるべきです。

今回はGitHubを使う前提として、Issueの作成を自動化する仕組みを考えてみました。

リリースIssueの作成を自動化する

GitHubにはリリースの一覧が含まれるAtomフィードがあります。このリリースフィードは、リポジトリのURLに /releases.atom を付加すると取得できます。例えば、Gradle SSH Pluginのリリースフィードは以下になります。

https://github.com/int128/gradle-ssh-plugin/releases.atom

リリースフィードは新しいタグがpushされた契機で更新されます。

IFTTTでリリースフィードをポーリングすることで、新しいリリースが追加されたら自動的にIssueを作成することが可能です。IFTTTのレシピを以下で公開しているのでご活用ください!

IFTTT Recipe: Create an issue for the release on GitHub connects feed to githubifttt.com