インフラコードのリポジトリ管理に悩んでる
コードを公開していると、メンテナンスしたいものと書き捨ての2種類のコードがあることに気づきます。
今回はリポジトリをどういう軸で分けるといいか考えてみます。この話は特にオチはなく、どうしたらいいんだろうなあ、と思ったのでメモしておきました。
リポジトリを分ける軸
リポジトリを分ける軸はいくつかあると思います。プロジェクトのたびに新しくリポジトリを作っていたのですが、最近はまとめたい気持ちが出てきました。
そこで軸をいくつか考えてみます。
- プロジェクトごと
- 分野ごと
- infra, website, …
- 状態ごと
- メンテナンスするもの、書き捨てのもの
ここで、そもそも何で書き捨てのコードを残すんだろうという点について考えてみます。
- 書きかけだから、後から再開したい
- 参考になる学びはあるので、残したい
この2つが大きな理由かなと思います。後から再開したい場合はmainブランチに残っていても不思議ではないですが、参考になる学びとして残す場合はもう続行されることはないのでmainブランチに置くのは違いそうです。archivedみたいなラベルをつけたい気持ちになります。
今困っていること
今、ちょうど uta8a/infra というリポジトリでこのあたり困っています。このリポジトリはインフラに関するコードをまとめて置くつもりなのですが、一時的に作ってデプロイしたterraformのコードがmainブランチにいつまでも残っているのは嫌な気持ちになります。archivedとactiveの見分けをつけるためにmetadataをディレクトリに置いていますが、目に入ってくるのがやっぱり微妙だと思います。
おそらく、リポジトリを分ける軸が複数に渡っているのが問題なので、それを分離する形を考えると良さそうです。
また、“状態ごと”は実はメンテする/しないの2軸ではなく、ライフサイクルがありそうです(書いてる→デプロイした→失敗した→放置, デプロイ成功→消して終了, デプロイ成功→メンテする、など)。このライフサイクルのうち、プロジェクトはどこに存在しているかの管理はしたい気がします。
終わりに
なんかあまりまとまってないので観点が足りてないがゆえの言語化不足を感じます。