[解決済み] GitLab CIとJenkinsの比較【終了しました
質問
JenkinsとGitLab CIやdrone.ioのようなGitディストリビューションに付属するCIとの違いは何でしょうか?調べてみると、GitLabコミュニティ版ではJenkinsを追加できないが、GitLabエンタープライズ版では追加できることくらいしか出てきません。他に大きな違いはあるのでしょうか?
どのように解決するのですか?
これは私の経験です。
私の職場では、GitLab EEでリポジトリを管理し、Jenkinsサーバー(1.6)が稼働しています。
基礎では、彼らはほとんど同じことをします。彼らはサーバー/Dockerイメージ上でいくつかのスクリプトを実行します。
TL;DR。
- Jenkinsは使いやすい・覚えやすいが、プラグイン地獄になる危険性がある
- JenkinsはGUIを持つ(他の人がアクセス/メンテナンス可能である必要がある場合、これは好ましいことである)。
- GitLabとの統合はGitLab CIより少ない
- Jenkinsはリポジトリから分離することができる
ほとんどのCIサーバは、非常にわかりやすい( concourse.ci ), gitlab-ci , circle-ci , トラビス-CI , drone.io , gocd など)。これらは、YAMLファイルの定義からシェル/batスクリプトを実行することができます。Jenkinsはよりプラグイン化しやすく、UIが付属しています。これは、あなたのニーズによって、利点にも欠点にもなりえます。
Jenkinsは、利用可能なすべてのプラグインがあるため、非常に設定しやすいです。この欠点は、CIサーバーがプラグインのスパゲッティになりかねないことです。
私の意見では、Jenkinsでのジョブのチェーンとオーケストレーションは、YAML経由(curlコマンドの呼び出し)よりもはるかにシンプルです(UIがあるため)。それに加えて、Jenkinsは、特定のバイナリがサーバー上で利用できないときにインストールするプラグインをサポートしています(他のものについては知りません)。
現在では (
Jenkins 2
は、より多くの "適切な ci" をサポートするようになりました。
Jenkinsfile
と
パイプライン
プラグインがありますが、GitLab CIよりもリポジトリとの連係が弱いです。
ビルドパイプラインを定義するためにYAMLファイルを使用する(そして最終的には純粋なシェル/batを実行する)ことは、よりクリーンです。
Jenkinsで利用可能なプラグインは、テスト結果、カバレッジ、その他の静的アナライザーなど、あらゆる種類のレポートを視覚化することを可能にします。もちろん、あなたは常にあなたのためにこれを行うツールを書くか使用することができますが、これは間違いなくJenkinsのプラスです(特に、これらのレポートを過度に評価する傾向がある管理者にとって)。
最近、私はGitLab CIで仕事をすることが多くなってきました。GitLabでは、彼らは経験全体を楽しくするために本当に素晴らしい仕事をしています。Jenkinsを使う人がいることは理解していますが、GitLabが動いていて利用可能であれば、GitLab CIを始めるのは本当に簡単です。サードパーティとの連携にも力を入れていますが、GitLab CIほどシームレスに統合できるものはないでしょう。
- 彼らのドキュメントを見れば、すぐに始められるはずだ。
- 始めるための敷居が非常に低い。
- メンテナンスが簡単(プラグインなし)。
- ランナーのスケーリングが簡単です。
- CI は完全にあなたのリポジトリの一部です。
- Jenkins のジョブ/ビューは厄介になることがあります。
執筆時点の特典もあります。
- コミュニティ版では 1 つのファイルのみをサポートします。マルチプル ファイルを エンタープライズ版 .
関連
-
[解決済み】git pullの取り消し、レポを古い状態に戻す方法
-
[解決済み】git rev-parseは何をするのですか?
-
[解決済み] 警告: push.default は設定されていません。その暗黙の値は Git 2.0 で変更されています。
-
[解決済み] Jenkinsを手動で再起動する方法は?
-
[解決済み] ローカルのGitの変更を削除するさまざまな方法
-
[解決済み] Git - 'assume-unchanged'と'skip-worktree'の違い
-
[解決済み] git reset」と「git checkout」の違いは何ですか?
-
[解決済み] 現在のブランチにコミットされていない変更がある場合、別のブランチをチェックアウトする
-
[解決済み】Featureブランチのリベースの後、Gitプッシュが拒否される。
-
[解決済み】gitはどのようにファイルを保存するのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] git rebase fatal: 必要なリビジョンは1つです。
-
[解決済み】Githubエンタープライズ - リモート。Git の操作でパスワード認証が利用できない
-
[解決済み】Git Push Error: リポジトリデータベースにオブジェクトを追加する権限が不足しています。
-
[解決済み] git が「Pull is not possible because you have unmerged files」と表示するのはなぜですか?
-
[解決済み] Git pull - マージする前に移動または削除してください。
-
[解決済み] git でディレクトリ階層が異なる 2 つのブランチをマージするには?
-
[解決済み] git rebase: "error: cannot stat 'file': パーミッションが拒否されました"
-
[解決済み] git リモートリポジトリには、ローカルブランチにマージされていないコミットが含まれています。
-
[解決済み] Gitのエラー「object file ... is empty」はどうすれば直せますか?
-
[解決済み] 新しいBitbucketでリポジトリを削除するにはどうすればよいですか?