最近もうCI/CD(に限った話ではないが)をOSSで自前で構築するのが手間で仕方がないと感じている。弊社は基本的に外部サービスは利用していないので、だいたいのアレコレをOSSで対応している。

GitLab


GitLabは本当に素晴らしいツールでこういったものがOSSで提供されているのは頭が上がらないのですが、やっぱり不満はある。

  • 指先一つでダウンする(コンフリクトの解消とかRevertとか、たまにMergeでも落ちる)
    • マシンケチってるのも原因だけど、重すぎないすか??
  • マイナーバージョンアップで破壊的に壊れることがある
  • 割としょうもない(え?そこアカンの??みたいな)不具合が多い
  • GitHubと比較するとUIが分かり辛い
    • 慣れの問題かもしれない
  • 全盛りの思想が好きじゃない
    • 設定ファイルが多すぎてマジで手間
    • その割にGitLab Runnerだけ分かれてるの、なんでなの?[1]
    • そもそもスマホもそうだが、全ての機能を載せるとかこの全盛思想がマジで好きではない

文句があるならIssueを挙げるかパッチ送るのが先だと思うし、そういっても無料なのでありがたく使わせて頂いているんですけど、しかしながら、正直やはりGitHubに比べるといろいろなところで「う~ん、ちょっとどなんすかぁ??」みたいな部分があると思っていて、できればGitHub使いたいです。

そうは言ってもGitLabはMattermost(チャットツール)の認証に使用しているので消せないんですけど、そもそも私からすればMattermostすら管理したくないんですよ。

CI/CDについて


例えばプライベートでは下記のような組み合わせを試してきた。

  • C# + AppVeyor + Codecov
  • Scala + Codecy + TravisCI + Coveralls
  • JavaScript(TypeScript) + Codecy + TravisCI + Coveralls
  • GitHub + DockerHub

他にもCircleCIとかwerckerも一通り触っている。

自分もその昔は自前主義だったが、正直これらを自前で準備するのはめちゃくちゃ手間がかかる。趣味なら今でも自前でやることが多い(これはいろいろと理由があるがここでは割愛する)が、仕事では各々のインスタンスの準備がめんどくさいし、組み合わせを考えたり認証とか、サービス使えばyamlのみで済むところを各々のアプリケーションごとに設定しないといけないし、アプリケーションの使い方も覚えないといけない。それ以前には選定とかもあるし、とにかくマジでめんどくさい。プライベートでこれらのサービスを使うたびにマジで楽で楽で楽過ぎて仕事でも使いたいと思う。とくにCI/CD周りの連携。

まとめ


要するに基本的に自前でやるのはコストがかかりすぎるのでお金を払って済むものはお金を払って済ませたいです。「安〇先生、GitHubが使いたいです…」


  1. いちおう、これは思想的に分けたのは理解してる。なんでなの?書いたけど ↩︎