capistrano-github-releases でデプロイ時に Releases と Tags を自動生成する
前回,「capistrano-releases-notification」を導入したことでデプロイ時にSlack通知をするようにしました.今回は「capistrano-github-releases」を導入し,デプロイ時に該当リポジトリの Release と Tags を自動生成するようにします.
今回も試した Ruby のバージョンは2.6.5
、Capistrano のバージョンは3.10.1
です.
使い方
使い方はとても簡単です.以下のように gem を追加します.
Gemfile
gem 'capistrano-github-releases'
$ bundle install
Capfile
とproduction.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 が作成されていることが確認できます.
Merged された最新のプルリクエストにコメントがついていることも確認できます.今回は自分のアカウントのアクセストークンを使ったため自分がコメントしているようになりました.
Bot ユーザを用意し,そのアクセストークンを使うやり方もアリだと思います.
動作を確認できたら--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 コマンド実行後,このようなコメントになることがわかります.他にもオプション機能はあるので,公式リポジトリを見ながらカスタマイズしてみましょう.
導入してみた結果
導入する前は Release と Tags を手動で作成する必要があったため手間だと感じていましたが,デプロイ時に生成されることでその手間を省くことができました🙌.
また,自動でリリースした旨のコメントがされるため,プルリクエスト上でコードレビューからリリースまでの一連の流れがわかるようになりました🙌.
今までは本番環境にリリース後にリリースした旨のコメントをプルリクエストに入れるルールでやっていて,たまにコメントし忘れることがありましたが,これでもう大丈夫です 💪
デプロイ周りでのチーム内コミュニケーションはだいぶ整ってきました😄.
linyows さん!ありがとうございます!!!