Travis CIとGitLabの比較 | GitLab.JP

このページでは、Travis CIとGitLabを比較しています。それぞれの強みや不足部分を確認して、判断材料にしてください。

Travis CI はホストされた分散型の継続的インテグレーションサービスで、GitHub にホストされているソフトウェアプロジェクトをビルドしたりテストするために使用されています。Travis CI は、GitHub Enterprise のインストール、もしくは GitHub.com のアカウント取得、のいずれかを必要とする Travis CI Enterprise と呼ばれるセルフホストバージョンも提供します。In contrast, GitLab.com and GitLab self-hosted versions offer both source code management, issue tracking, continuous integration, and many more DevOps tool chain requirements in a single application, while still also working with GitHub.

When Travis CI has been activated for a given repository, GitHub will notify it whenever new commits are pushed to that repository or a pull request is submitted. その後、Travis CI は関連するブランチをチェックアウトし、.travis.yml で指定されたコマンドを実行します。通常、コマンドはソフトウェアをビルドし、自動テストを実行します。そのプロセスが完了すると、Travis は先程の .travis.yml で設定された方法で開発者に通知します。

Travis CI のソースコードは技術的にはフリーのソフトウェアであり、GitHubで許可されたライセンスの下で入手できますが、企業ではカジュアルユーザーが自分達のプラットフォームに連携できる可能性は低いと指摘しています。(参考: wikipedia)対照的に、GitLab はオープンソースであり、オープンコアであり、誰でも貢献することができます。

FEATURES

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

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

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

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

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

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

GitLab サーバのセルフ監視

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

GitLab サーバのセルフ監視の詳細

Value Stream Analytics

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

Learn more about Value Stream Analytics

統合されたコンテナレジストリ

GitLabコンテナレジストリは、Dockerイメージのセキュアでプライベートなレジストリです。GitLab CIから簡単にイメージのアップロードやダウンロードができます。コンテナレジストリはGitリポジトリ管理と完全に統合されています。(Codefresh will be ending their support for private docker registries as of May 1, 2020

コンテナレジストリのドキュメント

Review Appsで変更をプレビュー

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

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でパイプラインがスケジュール実行される仕組の詳細

コード品質

Code Quality reports are available in the merge request widget area or on the pipeline page, giving you early insights into how the change will affect the health of your code before deciding if you want to accept it.

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

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

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

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

保護変数

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

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

環境とデプロイメント

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でコードカバレッジの生成と表示の詳細

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クラスターに簡単にデプロイできます。 これにより、ステージングと本番環境のデータを完全に分離することができます。

この課題の詳細を確認

Easy Deployment of applications for Kubernetes clusters

Install Helm Tiller, Nginx Ingress, Cert-Manager, Prometheus, GitLab Runner, JupyterHub, and Knative directly into your cluster from the GitLab Web UI with one click.

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 はまだこの機能を提供していません。

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

マスターにマージする前に、Web アプリケーションのパフォーマンスの低下を簡単に検出します。ブラウザのパフォーマンステストは Auto DevOps に含まれており、設定なしでルートページの自動的なパフォーマンス分析を提供します。

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

Automated Accessibility scanning of Review Apps

Performing accessibility testing is important in order to ensure you're serving all the users who use your products. In GitLab you can generate Accessibility reports automatically prior to merging into master.

Learn more about Autoamted Accessibility scanning

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

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

分所

Kubernetes podログの表示

生成されたログファイルにより、サーバ、アプリケーション、ネットワーク、セキュリティデバイスを監視し、エラーや問題を特定して分析します。GitLab では、接続された Kubernetes クラスタ内で実行中の Pod のログを簡単に見ることができる。GitLab でログを直接表示することで、開発者はコンソールツールを管理したり、別のインタフェイスにジャンプする必要がなくなります。

Kubernetes podログの表示の詳細

Windows Container Executor

この機能を使用すると、Linux ホスト上と同じように Windows 上で Docker コンテナを直接使用できます。これにより、Microsoft プラットフォームのユーザーは、より高度なパイプラインの調整と管理が可能になります。

Windows Container Executor の詳細

Visual Reviews

Visual Review allow users to give feedback on a proposed change in a Merge Request directly from the Review App itself. This feature enables designers, Product Managers, and other stakeholders to comment on the changes to the look and feel / user experience of a change just as easily and quickly as developers working in the MR.

Learn more about Visual Reviews