Wiplock - 作業途中の Pull Request を間違えてマージするのを防止する
長瀬 敦史
TL;DR
未完了のタスクやタイトルに WIP
という文字列を含む Pull Request からメインブランチを保護する Wiplock をリリースしました。
よかったら試して下さい。
ソースコードを公開しています。Go と React + Redux で開発しました。
https://github.com/ngs/wiplock
動機
日々の GitHub を使った開発フローで、作業途中 (WIP) の Pull Request を作成し、同僚と実装に関する議論に役立てたりします。
これらの Pull Request を、タスクが未完了のままマージしてしまったり、タイトルに WIP
を付けたままマージしてしまい、紛らわしいマージコミットを作成してしまいます。
このようなミスオペレーションを防止するため、Wiplock という、小さな Web アプリケーションを開発しました。
使い方
1. GitHub でサインインする
Wiplock を開くと、黒い Sign in with GitHub ボタンがあります。
これをクリックして、次の画面で承認を行って下さい。
組織で利用する場合には、組織の 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 の起動が確認いただけます。
Milestones
in progress
ラベルがついている Pull Request も保護する- リポジトリルートにある、
.wiplock.yml
を使って保護条件を設定できる
みなさんの開発フローを安全に保つのにお役に立てれば幸いです!