リリース手順の半自動化

リリース手順について

大筋で同感だけども、リリースって全自動化もオール手作業もちょっと微妙なゾーンがあると思ってる。

テキストベースのリリース手順書は、

  • コピペする順番を間違える可能性がある。
  • コマンド実行後の確認を怠られるとつらい。
  • 手順書の作り手が思っている以上にリリース作業者は何も考えずに作業を行う。

と、自動化すべき理由がある一方、

  • きっちり構成管理できてないと、同じ機能のリリース作業でも毎回手順が微妙に変わったりする。
  • その割に、「特定のプロセスが動いていたら終了するまで待つ」みたいな自動化するにはプチ面倒な作業が多い。

といった、自動化を妨げる問題があったりする。。

リリース手順の半自動化

というわけで、、コピペの追放とコマンド実行後の確認の部分に主眼をおいて自動化することにした。

https://github.com/shitai246/shellutils/blob/master/bin/checkexec

  • 外部ファイルに定義した1行を1コマンドとして処理していく。
  • コマンド実行前に確認される。確認時のyesに相当するキーは毎回ランダムで変更される。
  • コマンド実行時の返り値が0じゃなかったら作業を中断する。
  • # で始まる行はコメントとして標準出力するのでコマンドの意味をリリース担当者が見ながら作業できる。

コマンド結果を利用するコマンドが実行できないとか、diff みたいなコマンドの返り値が0にならないけど異常系じゃないみたいなパターンとかがちょっとアレだけども、リリースに対するアプローチのひとつとして。