Beeeat’s log

Beeeat’s log

プログラミングで出くわした知識やツール、日常生活、働き方その他色々なことをメモしていくブログ

capistrano-github-releases でデプロイ時に Releases と Tags を自動生成する

前回,「capistrano-releases-notification」を導入したことでデプロイ時にSlack通知をするようにしました.今回は「capistrano-github-releases」を導入し,デプロイ時に該当リポジトリの Release と Tags を自動生成するようにします.

今回も試した Ruby のバージョンは2.6.5Capistrano のバージョンは3.10.1です.

github.com

使い方

使い方はとても簡単です.以下のように gem を追加します.

Gemfile

gem 'capistrano-github-releases'
$ bundle install

Capfileproduction.rbに設定を追加します.

Capfile

require 'capistrano/github/releases'

config/deploy/production.rb:

after 'deploy:finishing', 'github:releases:create'
after 'deploy:finishing', 'github:releases:add_comment'

動作確認

前回の「capistrano-releases-notification」の記事にもありましたが,今回の動作確認も--dry-runオプションをつけて実行してみます.GitHub の個人アクセストークンが必要なため事前に作成しておきましょう.

$ bundle exec cap production deploy --dry-run

実行後, Releases と Tags が作成されていることが確認できます. f:id:bake0937:20191031061155p:plain f:id:bake0937:20191031061219p:plain

Merged された最新のプルリクエストにコメントがついていることも確認できます.今回は自分のアカウントのアクセストークンを使ったため自分がコメントしているようになりました.

Bot ユーザを用意し,そのアクセストークンを使うやり方もアリだと思います.

f:id:bake0937:20191031062624p:plain 動作を確認できたら--dry-runオプションを外して実行してみましょう.

ちょっと一工夫

capistrano-github-releases のオプション機能でプルリクエストへのコメントはカスタマイズが可能です.そのため,production 環境でリリースをしたことを明記するようにしてみます.

config/deploy/production.rb:

set :release_comment, ":hammer_and_pick: #{fetch(:stage)} にタグ [#{fetch(:release_tag)}]\
(#{fetch(:github_releases_path)}/#{fetch(:release_tag)}) でリリースしたよ〜 :rocket:"

cap コマンド実行後,このようなコメントになることがわかります.他にもオプション機能はあるので,公式リポジトリを見ながらカスタマイズしてみましょう. f:id:bake0937:20191031062322p:plain

導入してみた結果

導入する前は Release と Tags を手動で作成する必要があったため手間だと感じていましたが,デプロイ時に生成されることでその手間を省くことができました🙌.

また,自動でリリースした旨のコメントがされるため,プルリクエスト上でコードレビューからリリースまでの一連の流れがわかるようになりました🙌.

今までは本番環境にリリース後にリリースした旨のコメントをプルリクエストに入れるルールでやっていて,たまにコメントし忘れることがありましたが,これでもう大丈夫です 💪

デプロイ周りでのチーム内コミュニケーションはだいぶ整ってきました😄.

linyows さん!ありがとうございます!!!