🤖

GitHubと共に、気の利いた仕事をしているふうの手抜きをする

2024/07/04に公開

なにこれ

できる限り手抜きをしたいがかといってそのために頑張りたいわけでもないエンジニアの独白。
GitHubのPRやdependabotを使ってる人向けの記事。

前置き

初投稿...ども...am-maです。
GitHub、使ってますか?
なくてはならないツールですが、なんやかんや手動でやらないといけないことが多くてしんどいですよね。
ゴリゴリの自動化をする選択肢もありますが、そこまで時間や労力がなかったり、
せっかく自動化してもそれ自体をメンテするのがしんどかったり。

あ〜〜〜〜〜〜楽してぇ〜〜〜〜〜〜〜〜

この記事はそういう人がどういう仕事の仕方をするのかというドキュメンタリーです。

リリースのもっとよい自動化もそのうちやるだろう

前提条件とルールは以下の通りです。

  1. リリース処理自体は自動化済み
    • この処理のため、開発用ブランチを本番ブランチに、PRを経由してマージする必要がある
  2. リリースを最低1日に1回行う
    • Slackのリマインダーで定時に確認の通知が送られる

自動化されているとはいえど、PRを立ててさらにマージするなんてとても面倒くさいですね。
手抜きしましょう。
また、気を効かせポイントとして、リリース用PRに何のPRが含まれているか(=何をリリースしようとしているか)がひとめでわかるようにします。

1) GitHubのcompare機能のURLをSlack通知に添える

前述の通り、弊チームではリリース確認の通知が定時に送られてきます。
しかし、「リリースが必要かどうか?」の意思決定は人力です。
開発用ブランチと本番ブランチを比較してリリースするべき内容を確認し、リリースが必要ならPRを立て、それをマージする必要があります。
リポジトリのページにアクセスし、PRのページに行き、対象ブランチを選択し...となかなかの手数です。

通知メッセージにGitHubのcompare機能を利用して「開発用ブランチと本番ブランチを比較」したURL(※)を添えてしまいましょう。

これで、Slack通知からURLにアクセスするだけで変更差分が見られるようになり、差分画面上でPRの作成までノンストップで進めます。
必要なクリック数が3個くらい減りました。

※compareのURL

https://github.com/sonatano-kaisha/sonatano-repo/compare/main...development

Slackのリマインダーメッセージ
Slackのリマインダーメッセージ

compareページにアクセスしたときの景色
compareのURLにアクセスしたときの景色

2) PRでリリース内容を示す

いろんな手段がありますが、雑にやるならやっぱりChrome Extentionですね。
(Chromeの回し者ではありません)
以前はブックマークレットで実装していたのですが、もっと楽したかったのでExtentionに組み込みました。

PRのdescriptionに、含まれているPRを自動で列挙してくれるボタンを置きます。
列挙するPRのURLは、マージされようとしているPRのcommit log部分からクロールしています。

ボタンを押したところ
ボタンを押したところ

descriptionのプレビュー
descriptionのプレビュー

で?

作業がじっくり1分くらいから、ざっくり15秒くらいになりました。
このための思考回数もだいぶ減らせていい気分です。

dependabotにできるだけ楽に仕事を振りたい

dependabot使ってますか?
dependabotについては詳細を割愛しますので、ご存じの方のみ続きをどうぞ。
(これについてはそのうちblog書くかもしれませんし、書かないかもしれません。)

前提条件とルールは以下の通りです。

  1. dependabot alertとupdateの両方を利用している
  2. dependabot updateはminor, patchのPRを立てる
  3. patchのPRはGitHub Actionsで自動マージする
  4. 手動でマージ指示する場合、PRをApproveしそのコメントでコマンドを打つ
    • これにより、誰が処理したか後で見やすくしている

dependabotへの指示をワンクリックにする

ここまで読んでいるみなさんは、dependabotへの指示はコメントに規定のコマンドを書き込むことだとご存知だと思います。
ただ、このコマンドをわざわざ手打ちするのは面倒です。
あと、PRのApproveも面倒です。

よってまたもChrome Extentionを作ります。
以下の処理を一発で行うボタンを配置します。

  1. PRのApprove後、@dependabot mergeをコメント
  2. @dependabot rebaseをコメント
  3. @dependabot recreateをコメント

ボタン群

で?

コメントを打つ手間、Approveのための画面遷移などが不要になりました。
気分がいいですね。

まとめ

手抜きをしたいが気の利いた仕事をしているふうでもありたいエンジニアの生態が垣間見えたかと思います。
エンジニアって、面白い生き物ですね。

それではまた次回。

SMARTCAMP Engineer Blog

Discussion