GitHubActionsを使い倒してあらゆる処理を自動化する
まえがき
webshというWebアプリを公開した
CI/CDを可能な限り自動化したので、やったことを書く
詳細な設定はwebshのリポジトリの.github/ディレクトリを見てもらえれば
全部無料
やったこと
GitHubActionsでNimのコードを自動テスト
Nimのコードを静的解析してGitHub PullRequestに通知するGitHubActionsを自作した
GitHubActionsでリリースドラフトの生成を自動化した
自動リリースだとGitHubActionsでクロスプラットフォーム用に実行ファイルを生成してリリースするの方を今は使ってる
MergifyでGitHubのPullRequestでテストがパスすると自動でマージする
これは今は使ってない
依存ジョブが完了してから別のジョブが起動するようなワークフローのときに、まだ全部のジョブが完了していないのにマージされたりして困ったので使わなくなった
GitHubActionsでskip ciがコミットメッセージに含まれる時はジョブをスキップする設定
サーバへの自動デプロイ(CD)
GitHubActionsでリリースドラフトをpublishするとリモートサーバにデプロイする設定
デプロイフロー
https://gyazo.com/89f53348ecb19f3c828b53aed815c859
感想
自動化かなり力入れた
ここまで自動化するのに、それなりに時間かかった
https://gyazo.com/d5329b33e8de1d8924399bc4dee10798
websh全体では50時間くらいかかってる
たぶん10~20時間くらいはCIいじってたんじゃないかな
CIだけ分けるように記録してなかったのでわからない
一度自動化の仕組みを作って理解してしまえば、他のリポジトリでも流用が効く
他のリポジトリに設定ファイルをシュッとコピーするだけ
最初の一度は手間取ってコストを払うことになるかもしれない
時間は有限なので、限られた時間の中で生産性を最大化するためにも自動化はしよう
GitHubActions便利
でも不足の機能あるなぁ
GitLabCIは自動マージ、CIスキップを標準で備えてるのでやばい