Harness vs GitLab

GitLab compared to other DevOps tools

このページのコンテンツ

要約

Harness.io is a Continuous Integration product that is available both as SaaS and on-premises deployment (Connected On-Premises & Disconnected On-Premises). The basic value prop for Harness is that it abstracts away some of the complexity involved in deploying both traditional applications and in microservices based applications. Harness' stregth is more in the newer microservices based architectures. Harness provides a good user interface to perform most Continuous Integration tasks and also connects with various SCM and CI tools.

Strengths

不足部分

比較

FEATURES

共有Runner、または個別RunnerでのCI/CDが無料

GitLab.comが提供する共有Runnerを使用して、プライベートプロジェクトでは毎月2000分までのCI/CDを、パブリックプロジェクトでは時間無制限のCI/CDを無料で利用できます。さらに、より高速なビルド、時間無制限のビルド、特殊な要件などに対応するために個別Runnerをセットアップして使用することもできます。

GitLab.comのプランを表示

統合されたCI/CD

GitLabにはCI/CD機能が統合されているので、CI/CDのために他のツールをインストールする必要はありません。GitLabのCI/CDを使用して、ウェブサイト(GitLab Pages)やウェブアプリケーションをビルド・テスト・デプロイできます。ジョブの結果はマージリクエストに表示され、簡単にアクセスできます。

CI/CDの詳細

CI/CD 水平自動スケール

GitLab CI/CDのクラウドネイティブなアーキテクチャでは、ワークロードが増加した場合に、新しいノードを追加することで簡単に水平方向にスケールできます。GitLab Runnerはパイプライン処理が開始されると、自動的に新しいコンテナを作成し、処理が完了して不要になったコンテナを削除します。これにより、CI/CDのコストを抑えることができます。.

GitLab CI/CDの水平オートスケーリングの詳細

CI/CD パイプラインダッシュボード

プロジェクトやグループ全体のパイプラインの履歴と現在のステータスをユーザーごとにカスタマイズできる単一のダッシュボードで視覚化します。

オペレーションダッシュボードでのプロジェクト間のパイプラインの詳細

チャットからデプロイ

チャットを使用して、ある環境(例: ステージング)から他の環境(例: 本番環境)へのデプロイができます。

スラッシュコマンドのドキュメントを確認

柔軟なパイプライングラフ

複数のジョブを直列、または並列に実行するパイプラインの構造は非常に複雑です。 GitLabでは単一のパイプライングラフですべてのジョブのステータスを表示できるので、 何が起こっているのかを簡単に確認できます。

パイプライングラフの詳細

成果物をブラウズ可能

GitLab CIを使用すると、外部サービスを必要としないで、GitLab内にジョブの成果物をアップロードできます。 これによって、アップロードした成果物をGitLabのウェブインターフェースで表示できます。

プロジェクト内のジョブアーティファクトの利用の詳細

パイプラインをスケジュール実行

cronのように、パイプラインをスケジュール実行できます。

GitLabでパイプラインがスケジュール実行される仕組の詳細

複数プロジェクトのパイプライングラフ

マイクロサービスアーキテクチャでは、パイプラインの設計はより複雑なものになります。 複数プロジェクトのパイプライングラフを使用すると、アップストリームとダウンストリームのパイプラインが、プロジェクトのトリガーを通して、どのように協調しているのかを表示することができます。

複数プロジェクトのパイプライングラフの詳細

保護変数

権限のあるユーザーだけが変数の値を取得できるように、変数を保護することができます。 「保護変数」は「保護ブランチ」で実行されているジョブからだけ取得できます。

保護変数の利用方法の詳細

デプロイメントプロジェクト

デプロイメントプロジェクトには、ビルドおよびテストされたリリースやリリースがデプロイされた環境など、デプロイしているソフトウェアプロジェクトが含まれます。

GitLabのプロジェクトの詳細

グループレベル変数

グループレベルで変数を定義し、グループ内のすべてのプロジェクトから使用することができます。

変数の設定方法の詳細

CI/CDの設定ファイルのパスを変更可能

プロジェクトのトップディレクトリにCI/CDの設定ファイルを置きたくない場合などに、設定ファイルのパスを独自に定義できます。

カスタムCI/CD設定ファイルの設定方法の詳細

CI/CDジョブをWindowsで実行

GitLab RunnerはWindowsをサポートしているので、ジョブをこのプラットフォームでネイティブに実行できます。 PowerShellやバッチファイルを活用することで、Windowsに基づくプロジェクトを自動で構築、テスト、デプロイすることが可能です。

WindowsにGitLab Runnerをインストール

macOSでCI/CDのジョブを実行

GitLab RunnerはmacOSをサポートしているので、このプラットフォーム上でネイティブにジョブを実行できます。 シェルスクリプトやコマンドラインツールを利用して、macOSベースのプロジェクトのビルド、テスト、デプロイを自動化できます。

macOSにGitLab Runnerをインストール

Linux ARMでCI/CDのジョブを実行

GitLab RunnerはARMアーキテクチャのLinuxをサポートしているので、このプラットフォーム上でネイティブにジョブを実行できます。 シェルスクリプトやコマンドラインツールを利用して、Linux ARMベースのプロジェクトのビルド、テスト、デプロイを自動化できます。

LinuxにGitLab Runnerをインストール

FreeBSDでCI/CDのジョブを実行

GitLab RunnerはFreeBSDをサポートしているので、このプラットフォーム上でネイティブにジョブを実行できます。 シェルスクリプトやコマンドラインツールを利用して、FreeBSDベースのプロジェクトのビルド、テスト、デプロイを自動化できます。

FreeBSDにGitLab Runnerをインストール

GitLab CI/CDでの各コマンドの実行時間の詳細

他のCIシステムの中には、ジョブ全体の実行時間に加えて、各コマンドの実行時間を表示できるものがあります。 GitLabにも同様の機能を実装するための検討が行われています。

この課題の詳細を確認

保護Runner

保護Runnerを使用すると、デプロイ用の秘密鍵のような、機密情報を保護することができます。 保護ブランチで実行されるジョブのみが、保護Runnerにアクセスできます。

この課題の詳細を確認

デプロイボード

GitLab Premium には Deploy ボードが付属しており、Kubernetes 上で実行している各 CI/CD 環境の現在の健全性とステータスを統合的に表示します。Kubernetesにアクセスすることなく、 最新デプロイのそれぞれのpodの稼働状況をGitLab内でシームレスに表示できます。

デプロイボードの詳細

定期的かつ手動でのインクリメンタルなロールアウトデプロイメント

GitLab を使うと、数個のわずかな Pod から開始して Kubernetes上に新しいバージョンのアプリケーションをデプロイし、全てが正常に機能している場合は割合を増やすことができます。これは、スケジュールに従って続行するか、入力のために一時停止して続行するように構成できます。

インクリメンタルなロールアウトデプロイメントの設定の詳細

カナリアデプロイメント

GitLab Premiumでは、Kubernetesにアプリケーションをデプロイしている場合は、 カナリアデプロイメントを監視できます。

カナリアデプロイメントの設定の詳細

最小限のCI/CDの設定

GitLab CI/CDは、Jenkinsのようなツールで同様のパイプラインを実行する場合と比べて、より少ない設定で済みます。

GitLab CI/CDの詳細

パイプラインのセキュリティ

保護ブランチで実行されるCI/CDパイプラインに対して、定義したセキュリティルールが守られているかチェックできます。 パイプラインのセキュリティは、手動で作成したパイプライン、再実行したジョブ、手動アクションにも適用されます。

パイプラインのセキュリティの詳細

外部のCI定義ファイルをインクルード

複数のプロジェクトで共通なジョブのテンプレートとして再利用するために、 外部のCI定義ファイルをインクルードできます。

外部ファイルのインクルードの詳細

CI/CDのログを折りたたんで表示

ジョブの各コマンドの出力ログを折りたたんで表示できます。

ドキュメント

外部リポジトリ用のCI/CD

GitLabに、GitHubやBitbucketなどの外部サービスがホストしているあなたのプロジェクトを接続し、 GitLab CI/CDのパイプライン機能を活用し、アプリケーションを簡単に構築、テスト、開発しましょう。

外部リポジトリ用のCI/CDの詳細

GitHub用のCI/CD

GitLabにGitHubがホストするあなたのプロジェクトを接続し、GitLab CI/CDのパイプライン機能を活用し、 アプリケーションを簡単に構築、テスト、開発しましょう。

GitHub 用の CI/CD の詳細

インタラクティブな Web ターミナル

インタラクティブな Web ターミナルを使用すると、実行中または完了済みの Kubernetes、Docker、Shell ランナージョブに接続し、コマンドを手動で実行して、システムで何が起こっているかをよりよく理解できます。

インタラクティブ Web ターミナルの詳細

リポジトリ毎の複数のパイプラインを定義

GitLab では複数プロジェクトにまたがるビューを提供する複数プロジェクトのパイプラインがありますが、各パイプライン定義は特定のプロジェクトに関連付けられた YAML ファイルとして存在します。GitLab には今のところ 1 つの YAML ファイルに複数のパイプラインを定義する機能はありません。

この課題の詳細を確認

monorepo の明示的なサポート

特定のパスやファイルに変更がある場合にのみジョブを実行する機能は、単一のレポに多くのマイクロサービスを含むモノレポをサポートします。

CI/CD のみ/以外の実行の詳細

マージリクエストパイプライン

マージリクエストに関連付けられたパイプライン内にある場合にのみジョブを実行するように指定できます。 これにより、必要なジョブのみを実行することができ、パイプラインをより効率的にできます。

マージリクエストパイプラインの詳細

マージ結果パイプライン

masterをGreenに保つことは、開発の効率化に重要です。 masterにマージする前にマージされたコードの結果に対してパイプラインを実行することで、ブランチ上では成功していても、マージ後のmaster上で失敗するような変更を検出できます。

結果パイプラインの詳細

マージトレイン

パイプラインを並列にキューイングすることで、ターゲットブランチへのパイプライン内の変更を整然と効率的に実行できます。 マージトレインと一緒に、スカッシュしてマージを使用することもできます。

マージトレインの詳細

コードリポジトリ内の任意のイベントでパイプラインを起動する

コードリポジトリで定義されたイベントが実行された時に、パイプラインやワークフローを起動できるようにします。 例えば、リポジトリやプロジェクトに新しいメンバーが追加された時に、ウェルカムメールを送信するワークフローを実行することができます。

GitLab で利用可能なイベントに関するドキュメント

コミュニティによるワークフロー (設定はコード化されているので共有可能)

GitLabのパイプライン(ワークフロー)はリポジトリ内でymlとして定義されており、アクションと同じように共有することができます。

あらゆるプラットフォーム、言語、クラウドに対応

あらゆるOSプラットフォーム、言語、クラウドプロバイダーで実行可能です。

設定、インフラの構築、パッチの適用は不要

SaaS型として提供されているので、ツールの設定、インフラの構築、メンテナンスを行うことなく、ソフトウェア開発やデリバリーのために利用できます。

プログラミング言語に基づいて実行するパイプラインを自動的に提案

プログラミング言語を検出し、実行するパイプラインのテンプレートを自動で提案し、ユーザーが迅速にパイプラインを実行できるようにします。

多くの定義済みパイプラインが付属

ベストプラクティスを集めた、多くの定義済みパイプラインを提供されているので、一般的なプログラミング言語、プラットフォームの各プロジェクトで簡単に利用を開始できます。

SDLCで使用される様々なツールとサービスを接続

さまざまなツールやサービスからのデータや出力を接続する、中心のハブとして使用することができます。

マトリックスビルド

ビルドを定義して実行する機能が組み込まれており、多数の入力変数に基づいて複数の並列ジョブやパイプラインを自動的に起動することができます。 例えば、3つのOS用と3つの異なるバージョン用のライブラリのビルドは、自動的に9つの並列ジョブで実行されます。 GitLabでは、マトリックスビルドを動的な子パイプラインを使って実装できます。

親子パイプラインの詳細

Linuxの共有Runnerを利用

SaaSで提供される、Linuxの共有Runnerでジョブを実行できます。

Windowsの共有Runnerを利用

SaaSで提供される、Windowsの共有Runnerでジョブを実行できます。

ベータテスト中

macOSの共有Runnerを利用

SaaSで提供される、macOSの共有Runnerでジョブを実行できます。

プル/マージリクエストでパイプラインのステータスを表示

パイプライン実行のステータスと結果をマージ/プルリクエストで表示することができます。

実行中のパイプラインのログのライブ表示

(パイプライン実行中に)ジョブのログをライブ表示できます。

すべてのジョブのログを横断的に検索

すべてまたは複数のジョブのログを一度に検索できます。 トラブルシューティングやジョブの出力のレビュー中に、エラーやその他のコンテンツをより効率的に検索できます。

生のログを平文で表示

ログの平文を取得して、マークアップせずに表示したり、外部で使用したりできます。

リポジトリごとに複数のパイプライン

コードリポジトリごとに複数のパイプラインを定義して、異なるプロセスを異なる時間に実行できるようにしたり、1つのリポジトリ内に複数のアプリケーションがある場合に、アプリケーションごとに異なるビルドと処理を行うことを可能にします。

別のリポジトリでアクション/ジョブを参照する

パイプライン/ワークフローを参照し、実行されているリポジトリとは別のリポジトリのアクション/ジョブを使用できるようにします。