GitLab CI vs GitLab

GitLab compared to other tools

FEATURES

アプリケーションのパフォーマンス監視

Prometheusを利用して、GitLabはデプロイしたアプリケーションのパフォーマンスメトリクスを収集し表示できます。開発者はマージが本番環境に与える影響を、GitLabから離れることなく、簡単に確認できます。

デプロイしたアプリケーションの監視の詳細

アプリケーションのパフォーマンスに関するアラート

GitLab を使うと、エンジニアはソースコードを書くのと同じワークフローで、サービスレベルインジケータアラートをシームレスに作成し、必要なイベントを通知できます。

SLI アラートの作成についてさらに学んでください。

GitLabサーバーの監視

オンプレミスで運用しているGitLabサーバーをPrometheusで監視できます。これにより、自身のGitLabサーバーの稼働状況を簡単に確認できます。

GitLabサーバーの監視の詳細

サイクル分析

GitLabは計画からモニタリングまでに要した時間を計測するためのダッシュボードを提供します。GitLabには、アイディアを本番環境にデプロイするまでに必要なツールのすべてが組み込まれているので、このようなデータの提供が可能です。

サイクル分析の詳細

Review Appsで変更をプレビュー

GitLab CI/CDを利用して、ブランチごとに新しい環境を作成することができ、開発プロセスを高速化できます。 自分のブランチをプレビューできるマージリクエスト用の動的な環境を起動できます。

Review Appsの詳細

包括的なAPI

GitLabは、インテグレーションの開発を可能にするために、多くの機能をAPIとして提供しています。

APIのドキュメントを表示

コンテナやDockerとの高い親和性

GitLabは、GitLab独自のコンテナレジストリとDocker CI Runnerを搭載しているため、それだけでCI/CDでのコンテナワークフローを完結できます。つまり追加のプラグインをインストール、設定、管理する必要はありません。

クラウドネイティブ

GitLabとGitLab CI/CDはクラウドネイティブな設計で開発されています。GitLab は Kubernetes 上に簡単にデプロイできます。また、Gitlab を使用してアプリケーションをそのまま Kubernetes に対しデプロイできます。

Kubernetes 連携

統合されたウェブターミナルでコンテナをデバッグ

GitLabにビルトインされたウェブターミナルを使用すると、あらゆる環境のコンテナを簡単にデバッグできます。アプリケーションをKubernetesにデプロイしている場合は、GitLabの環境メニューから直接ターミナルのセッションを開始することができます。この強力な機能により、ブラウザから離れることなく、問題の調査を素早く行うことができます。

ウェブターミナルの詳細

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

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

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

成果物をブラウズ可能

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

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

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

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

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

コード品質

マージリクエストのウィジェットエリアに表示されるコード品質レポートにより、 変更がコードの品質に与える影響を事前に知ることができます。

コード品質レポートの詳細

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

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

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

保護変数

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

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

環境とデプロイメント

GitLab CIを使用すると、ビルドやテストだけではなく、インフラへのデプロイもできます。 また、CIのジョブのタグに似ている、環境を利用するとデプロイ履歴をトラッキングできます。

環境の詳細

環境履歴

環境履歴を使用するとサーバーに現在、何がデプロイされているのかを確認できます。また、環境の詳細画面では過去のすべてのデプロイ情報を表示できます。 この画面から現在のバージョンを再デプロイしたり、何か問題が発生した場合は、過去の安定バージョンにロールバックすることができます。

環境履歴の詳細

特定環境用の変数

どの環境から変数の値を取得できるのか制限することができます。

特定環境用変数の設定方法の詳細

グループレベル変数

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

変数の設定方法の詳細

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では、カスタマイズ可能な正規表現を使用してジョブの出力をパースして、SimpleCovのようなツールが生成するコードカバレッジを取得できます。 取得したデータはUIに自動的に表示され、HTMLページなどに埋め込むためのバッジとして使用することもできます。

GitLabでコードカバレッジの生成と表示の詳細

CIのジョブで生成されたJUnitレポートの管理

多くの言語に、自動テストの実行と結果のレポートを生成するためのテスティングフレームワークがあります: 例えば、様々なツールがJUnit形式のレポートの出力をサポートしています。 GitLabでは成果物をブラウズし、レポートをダウンロードすることはできますが、レポートをブラウザ上で適切に表示する方法については現在も検討が行なわれています。

この課題の詳細を確認

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

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

この課題の詳細を確認

Auto DevOps

Auto DevOps機能を使用すると、ソフトウェア開発ライフサイクルの自動設定が適用されます。 これにより、DevOpsのベストプラクティスに従って、プロジェクトを推進することができます。

Auto DevOpsの詳細なドキュメントを確認

保護Runner

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

この課題の詳細を確認

構築済みのKubernetesクラスタと容易に連携

構築済みのKubernetesクラスターをプロジェクトに追加できます。CI/CDパイプラインから、 追加したKubernetesクラスターへ簡単にアクセスでき、Review Appsをホストしたり、アプリケーションをデプロイしたりすることができます。

この課題の詳細を確認

GKE上にKubernetesクラスターを簡単に構築

Googleアカウントに接続して、いくつかの情報を入力するだけで、 プロジェクトから直接GKE上にKubernetesクラスターを構築できます。構築したクラスターは、Auto DevOpsでアプリケーションをデプロイのに使用することができます。

この課題の詳細を確認

複数のKubernetesクラスターをサポート

ステージングや本番環境のような異なる環境を異なるKubernetesクラスターに簡単にデプロイできます。 これにより、ステージングと本番環境のデータを完全に分離することができます。

この課題の詳細を確認

KubernetesにHelm、Ingress、Prometheusを簡単にデプロイメント

Helm Tiller、Nginx Ingress、Prometheus、GitLab RunnerをGitLabのWeb UIから1クリックでクラスターにインストールできます。

GKEクラスターにアプリケーションをインストールのドキュメントを確認

カナリアデプロイメント

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

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

失敗したCIのジョブを自動で再実行

.gitla-ci.ymlに特別なキーワードを記述することで、GitLab CIでジョブが失敗した場合に、 指定の回数だけジョブを自動で再実行できます。

失敗したCIのジョブを自動で再実行の詳細

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

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

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

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

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

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

静的アプリケーションセキュリティテスト

GitLabのCI/CDパイプラインでは、静的アプリケーションセキュリティテスト(SAST)を簡単に実行できます。 静的アプリケーションテストでは、ソースコードの脆弱性やアプリケーションが使用するライブラリに存在する既知のセキュリティバグをチェックできます。テスト結果はマージリクエストおよびパイプラインの画面に表示されます。 この機能は[Auto DevOps](https://docs.gitlab.com/ee/topics/autodevops/#auto-sast)の一部として利用できます。

静的アプリケーションセキュリティテストの詳細

依存性スキャン

GitLabはアプリケーションが使用するライブラリに存在する既知のセキュリティバグを自動的に検出し、アプリケーションを脆弱性から保護します。 依存性スキャンの結果はマージリクエストおよびパイプラインの画面に表示されます。 この機能は[Auto DevOps](https://docs.gitlab.com/ee/topics/autodevops/#auto-sast)の一部として利用できます。

依存性スキャンの詳細

コンテナスキャン

アプリケーションのDockerイメージをビルドする際に、コードをデプロイする環境に既知の脆弱性が存在しないかGitLabで確認できます。 コンテナスキャンの結果はマージリクエストとパイプラインに表示されます。 この機能は[Auto DevOps](https://docs.gitlab.com/ee/topics/autodevops/#auto-sast)の一部として利用できます。

コンテナスキャンの詳細

動的アプリケーションセキュリティテスト

オンラインのアプリケーションに対して、GitLabのCI/CDパイプラインで動的アプリケーションセキュリティテスト(DAST)を実行できます。 これにより、アプリケーションにXSSや認証フローの不備のような脆弱性が存在しないかをテストできます。 テスト結果はマージリクエストとパイプラインに表示されます。 この機能は[Auto DevOps](https://docs.gitlab.com/ee/topics/autodevops/#auto-sast)の一部として利用できます。

コンテナのアプリケーションセキュリティの詳細

双方向なアプリケーションセキュリティテスト

[IAST](https://blogs.gartner.com/neil_macdonald/2012/01/30/interactive-application-security-testing/) は静的 / 動的アプリケーションセキュリティテスト方法の要素を組み合わせて、結果の全体的な品質を改善します。通常 IAST はライブラリの呼び出しなどを監視するために、エージェントを使用してアプリケーションを計測します。GitLab はまだこの機能を提供していません。

ランタイムアプリケーションのセキュリティテスト

RASP は本番稼働中のアプリケーションにおけるライブラリの呼び出しを監視するために、エージェントを使用してアプリケーションを計測します。他のセキュリティツールとは異なり、RASP はリアルタイムで脅威をブロックするアクションをとることができます。また、Web アプリケーションのファイアウォールに似ていますが、ネットワーク層ではなくアプリケーションのランタイム環境内から実行できます。GitLab はまだこの機能を提供していません。

ブラウザーパフォーマンステスト

変更をmasterにマージする前に、簡単にウェブアプリのパフォーマンス悪化を検知できます。 Auto DevOpsのパフォーマンステストを使用すると、 設定不要で自動的にパフォーマンス分析を利用できます。

ブラウザーパフォーマンステストの詳細

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

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

この課題の詳細を確認

Kubernetes podログの表示

Kubernetesにデプロイしたアプリのpodログを素早く簡単に表示できます。

Kubernetes podログの表示の詳細