Wiplock - 作業途中の Pull Request を間違えてマージするのを防止する

 English

TL;DR

未完了のタスクやタイトルに WIP という文字列を含む Pull Request からメインブランチを保護する Wiplock をリリースしました。

よかったら試して下さい。

https://wiplock.com

ソースコードを公開しています。Go と React + Redux で開発しました。

https://github.com/ngs/wiplock

動機

日々の GitHub を使った開発フローで、作業途中 (WIP) の Pull Request を作成し、同僚と実装に関する議論に役立てたりします。

これらの Pull Request を、タスクが未完了のままマージしてしまったり、タイトルに WIP を付けたままマージしてしまい、紛らわしいマージコミットを作成してしまいます。

このようなミスオペレーションを防止するため、Wiplock という、小さな Web アプリケーションを開発しました。

使い方

1. GitHub でサインインする

Wiplock を開くと、黒い Sign in with octocat ボタンがあります。

これをクリックして、次の画面で承認を行って下さい。

組織で利用する場合には、組織の Grant Access ボタンをクリックし、アクセス権を付与して下さい。

2. リポジトリーを見つけてスイッチをオンにする

GitHub でのサインインが完了すると、Wiplock に自分のリポジトリー一覧が表示されます。

利用したいリポジトリを見つけてスイッチをオンにして下さい。

3. 動作確認

リポジトリページを開き、WIP という文字列をタイトルに含む Pull Request を作成、または編集して下さい。

タイトルを編集すると、Pull Request のステータス表示が Pending になります。

4. ブランチを保護する

Settings > Branches 画面を GitHub のリポジトリページで開き、Require branches to be up to date before merging チェックボックスをオンにします。

自分の Wiplock をつくる

他者の管理するアプリケーションに権限を付与したくない場合は、Heroku や Docker ホストに自身の Wiplock を起動することができます。

必要なもの

GitHub で自身の OAuth アプリケーションを作成する必要があります。

https://github.com/settings/applications/new

Heroku

Wiplock リポジトリの README にある、Heroku Button をクリックするだけで、簡単にご利用いただけます。

https://github.com/ngs/wiplock#heroku

Docker

起動するには、Redis サーバーが必要です。

まだ、お手持ちの環境にインストールされていない場合には、公式 Docker イメージを使うことで、簡単に導入できます。

docker pull redis
docker run --name wiplock-redis -d redis

Wiplock の Docker イメージをダウンロード (Pull) します。

docker pull atsnngs/wiplock

そして、REDIS_URL を起動した Redis コンテナの名前を使って指定し、Wiplock を起動します。

docker run --name wiplock -p 8000:8000 -d --rm \
  --link wiplock-redis:redis \
  -e GITHUB_CLIENT_ID=${GITHUB_CLIENT_ID} \
  -e GITHUB_CLIENT_SECRET=${GITHUB_CLIENT_SECRET} \
  -e SECRET=${SECRET} \
  -e REDIS_URL="redis://redis:6379" \
  atsnngs/wiplock

ローカルホストで Wiplock の起動が確認いただけます。

http://localhost:8000

Milestones

  • in progress ラベルがついている Pull Request も保護する
  • リポジトリルートにある、.wiplock.yml を使って保護条件を設定できる

みなさんの開発フローを安全に保つのにお役に立てれば幸いです!

comments powered by Disqus