Jenkins と、Git ディストリビューションに付属する GitLab CI、drone.io などの他の CI との違いは何ですか。調査したところ、GitLab コミュニティ エディションでは Jenkins を追加できないが、GitLab エンタープライズ エディションでは追加できるということしかわかりませんでした。他に大きな違いはありますか?
ベストアンサー1
これは私の経験です:
私の職場では、GitLab EE を使用してリポジトリを管理しており、Jenkins サーバー (1.6) を実行しています。
基本的にはほぼ同じです。サーバー/Docker イメージ上でいくつかのスクリプトを実行します。
TL;DR;
- Jenkinsは使いやすく、習得も簡単ですが、プラグイン地獄になるリスクがあります
- Jenkins には GUI があります (他の人がアクセスしたりメンテナンスしたりする必要がある場合は、こちらの方が適しています)
- GitLabとの統合はGitLab CIよりも少ない
- Jenkinsはリポジトリから分離できる
ほとんどのCIサーバーは非常に単純です(コンコース.ci、GitLab の Ci、サークル-ci、トラビスCi、ドローン.io、良い他にもいろいろあります。これらを使用すると、YAML ファイル定義からシェル/バット スクリプトを実行できます。Jenkins はプラグイン化がはるかに容易で、UI も付属しています。これは、ニーズに応じて利点にも欠点にもなり得ます。
Jenkins は、利用可能なプラグインが豊富なため、非常に柔軟に設定できます。ただし、欠点としては、CI サーバーがプラグインのスパゲッティ状になってしまう可能性があることです。
私の意見では、Jenkins でのジョブの連鎖とオーケストレーションは、YAML (curl コマンドの呼び出し) 経由よりもはるかに簡単です (UI のため)。さらに、Jenkins は、サーバー上で利用できない場合に特定のバイナリをインストールするプラグインをサポートしています (他のものについてはわかりません)。
最近では (ジェンキンス2Jenkinsfile
とでより「適切なci」もサポートしますパイプラインJenkins 2 以降でデフォルトで提供されるプラグインですが、GitLab CI などに比べてリポジトリとの結合度が低くなっています。
YAML ファイルを使用してビルド パイプラインを定義すると (最終的には純粋なシェル/バットを実行すると)、よりクリーンになります。
Jenkins で利用できるプラグインを使用すると、テスト結果、カバレッジ、その他の静的アナライザーなど、あらゆる種類のレポートを視覚化できます。もちろん、いつでも自分で作成したり、ツールを使用してこれを実行できますが、これは Jenkins にとって間違いなくプラスになります (特に、これらのレポートを過度に重視する傾向のあるマネージャーにとって)。
最近、GitLab CI を使う機会が増えています。GitLab では、全体的な体験を楽しいものにするために本当に素晴らしい仕事をしています。Jenkins を使用している人がいるのは理解していますが、GitLab が稼働して利用できる状態であれば、GitLab CI を使い始めるのは本当に簡単です。サードパーティとの統合にかなりの労力が費やされているにもかかわらず、GitLab CI ほどシームレスに統合できるものはないでしょう。
- ドキュメントを見ればすぐに始められるはずです。
- 始めるためのハードルは非常に低いです。
- メンテナンスは簡単です(プラグインなし)。
- ランナーのスケーリングは簡単です。
- CI はリポジトリの完全な一部です。
- Jenkins のジョブ/ビューは乱雑になる可能性があります。
執筆時点での特典の一部:
- コミュニティ版では1つのファイルのみサポートされます。エンタープライズエディション。