GitHub vs GitLab

GitLab compared to other DevOps tools

最近のGitHubのお知らせ

イベント: GitHub Satelite

5月6日、GitHubはGitHub Satelliteでいくつかの機能発表を行いました。 詳細はこのイベントについての GitLabのブログ記事を参照ください。

GitHub Freeプラン

2020年4月14日、GitHubはTeamプランを無償化することを発表しました。GitLabは発足以来、チーム/組織向けに無料で提供されています。GitHubによるこの動きについて、GitLabのブログ記事のレスポンスと#GitChallengeを読んでみてください。

GitHubとGitLabの比較図

GitHubとGitLabの比較図をご紹介します。この図を構築するために使用された手法は、ここで見ることができます。強みや不足部分などの詳細な比較や解説は、以下のセクションにまとめています。

GitLab GitHub Comparison Chart

注:このチャートは、GitLabとGitHubがサポートしている機能カテゴリを比較して作成したものです。例えば、PlanステージのGitLabの「5/7」という比率は、そのDevOpsライフサイクルステージ内で7つの機能カテゴリのうち5つをサポートしていることを示しています。 次に、特定の%のしきい値を適用して、バーに色付けしました。GitLabの透明性という価値観に沿って、GitLabとGitHubの両方の機能にこのスコアリング手法を適用しました。 分析方法や情報の追加についてご質問がある場合は、本家サイトのページの下部にあるリンクをクリックしてイシューを投稿するか、コメントをしてください。{: .note}

このページのコンテンツ

概要

要約

GitLabとGitHubの比較 - 独立した外部組織 (LinuxHint.com) によって作成された比較動画です。

GitHubを使用するとリポジトリのホスティング、コードレビュー、プロジェクト管理、ソフトウェアのビルドが可能です。GitHubは、Gitの分散バージョン管理やソースコード管理機能のすべてと独自の追加機能を提供します。GitHubはアクセス制御と、バグ追跡、機能要求、タスク管理、Wikiなどのいくつかのコラボレーション機能を提供します。

2019年11月、GitHubは全ユーザー向けにGitHub Actionsの一般提供を発表しました。GitHub Actionsの機能により、コンテナ内でコードスニペットを実行できることに加えて、様々なGitHubのAPIを利用することができます。これにより、ユーザーは任意のイベントに基づいて様々なワークフローを実行することができます。GitHub Actionsでは、ワークフローやステップはリポジトリ内のコードにすぎません。これにより、プロジェクトのビルド、テスト、デプロイの自動化が容易になり、Linux、macOS、Windowsのランナーもサポートされています。GitHub Actionsでは、ワークフローをコンテナまたは仮想マシンで実行します。

同様に、GitLabはCI/CDを統合していますが、アプリケーションのパフォーマンスやサーバーの監視などの追加機能も提供しています。また、GitLabには静的・動的セキュリティテストやコンテナスキャンも含まれています。

GitHubにはデプロイメントプラットフォームが付属しておらず、アプリケーションをデプロイするためにはHerokuのような追加のアプリケーションが必要です。GitLabはKubernetesを活用して、単一のアプリケーションでシームレスなデプロイ体験を実現します。

GitHubでは、オープンソースのソフトウェアプロジェクトをホストするために一般的に使用されるプライベートリポジトリと無料アカウントの両方のプランを提供しています。

2019年9月現在、GitHubは4000万人以上の開発者が利用していると報告しています。「GitHub上の開発者とは、その活動内容とは無関係に、個人ユーザーアカウントのこと」と定義されていますが、1億件のリポジトリ(2800万件の公開リポジトリを含む)を保有しており、世界最大のソースコードのホスティングサービスとなっています。

GitHubはGitHub Enterprise(GHE)というセルフマネージド版も提供しています。

2018年6月4日、マイクロソフトはGitHubを買収しました。

GitHubの強み

GitHubの不足部分

GitHub Actionsの不足部分

ソース: GitHub Actionsのコミュニティフォーラム

次の表は、GitHub Actions の主な不足部分とそれに伴う影響を示しています。この情報は、2020年4月10日時点のGitHub Actionsのコミュニティグループでのユーザーフィードバックを元にしています。

説明 影響 参考
継続的インテグレーション    
ビルド時間を増加させる課題    
GitHub Actions は [skip ci] をサポートしていない 些細な変更でも、必ずCIステップが自動的に開始されるため、長いビルド時間が必要となる可能性があります。 GitHubコミュニティでの議論
冗長なビルドの自動キャンセルができない 同じブランチで新しいビルドが起動した場合、実行中のビルドがキャンセルされず、新しいビルドで起動します。そのため、ビルド時間と計算リソースが増加します。 GitHubコミュニティでの議論
リポジトリ内のアーティファクトをキャッシュして以降のビルドで再利用することができない dockerイメージを毎回リビルドしたりhubから取得したりする必要があるため、ビルド時間が遅くなります。 GitHubコミュニティでの議論
GitHub Actions の実行間のファイルのキャッシュが 200 MB に制限されている プロジェクトやビルドの実行に時間がかかります。 GitHubコミュニティでの議論
continue-on-errorの結果がUIに通知されない 許容されるエラーはUIに通知されないので、ログを確認する必要があります。 GitHubコミュニティでの議論
失敗したビルドを再試行できない 手動での監視と手動での再試行のトリガーが必要なため、再試行の間のアイドル時間が増加します。 GitHubコミュニティでの議論
GitHub ActionsはプライベートなDockerレジストリ(AWS ECR, Docker Hub, GC Container Registry)からプルすることができません。 ビルド時間が長くなります。 GitHubコミュニティでの議論
GitHub Actionsビルドキャッシュ - Dockerレイヤー コンテナイメージを一から構築するため、構築に時間がかかります。 GitHubコミュニティでの議論
運用コストを増大させる課題    
他のワークフローで実行中の依存関係を指定できません コードの再利用ができない、コードが重複している、いくつかの条件が必要な場合には、ワークフローの定義が複雑になります。 GitHubコミュニティでの議論
同じ組織内のリポジトリであっても、Actionsでは他のプライベートリポジトリにまたがってアクセスすることはできません。 コードの再利用が難しい。 この制限の回避策を実装するのが難しい。 GitHubコミュニティでの議論
UIから個々のワークフローの実行を削除することができない 失敗したワークフローの実行を削除できないので、情報を整理するのが難しくなり、管理性を低下させます。 GitHubコミュニティでの議論
継続的デリバリー    
デリバリー時間が延びる課題    
ワークフロー内の単一のジョブだけを再実行できない 例えば、いくつかの失敗したジョブだけを再実行することができません。ユーザーはワークフロー全体を再実行しなければならず、無駄な時間や生産性の低下を招くことになります。10個のジョブがあるワークフローでは、10個すべてを再実行する必要があります。 GitHubコミュニティでの議論
運用コストを増大させる課題    
ステージング環境と本番環境で異なるワークフローを簡単にトリガーできない 条件付きのワークフローは、GitHub Actions Events には関連する型がないので、実装やメンテナンスが大変です。ワークフローにif条件を実装しなければなりません。 GitHubコミュニティでの議論
リポジトリの GITHUB_TOKEN を使用して、別のワークフローから新しいワークフローをトリガーできない。オプションは、1)ボットユーザーを作成して個人のアクセストークンを使用するか、2)github appを作成するかです。 コードプッシュ後のテストを簡単に開始できません。所定の回避策のいずれかを使用しなければなりません。 GitHubコミュニティでの議論
プルリクエストのメッセージ/コメントを介してアクションをトリガできない 例: ユーザーは、プルリクエストごとに実行するのに時間がかかるアクションを望んでいません。代わりに、特定のアクションが実行されないようにするために、プルリクエストにコメントを追加します。 GitHubコミュニティでの議論
YAML アンカーとエイリアスのサポートの欠如 コードの再利用を妨げます。この制限を克服するためには、ユーザーはコードをコピーアンドペーストする必要があり、メンテナンスが困難になります。 GitHubコミュニティでの議論
リスクを増大させる課題    
ワークフローの実行を手動でトリガーできない。 本番環境での手動トリガーは制限されますが、他の環境での自動トリガーは許可されています。 GitHubコミュニティでの議論
エンタープライズ・レディネス    
リスクを増大させる課題    
フォークのビルドのために秘密情報を利用 ワークフローにプレーンテキストでトークンを含めるなどの回避策により、セキュリティ上の脆弱性が増加します。 GitHubコミュニティでの議論
GitHub Actionsでは、公開リポジトリからDockerイメージにアクセスするための資格情報が必要です。UIを介して手動で作業します。 回避策として別のDockerレジストリが必要です。GitHub パッケージは、資格情報がないと Actions からアクセスできません。 GitHubコミュニティでの議論
運用コストを増大させる課題    
GitHub Enterprise ServerでのGitHub Actionのサポート GitHub ActionsはGitHub Enterprise Serverでは動作せず、現在はGitHub Enterprise Cloudでのみ利用可能です。 GitHubコミュニティでの議論
UIからアーティファクトを選択的に削除したり、アティファクトの保存期間を90日未満にすること 必要なストレージの増加は、価格の上昇につながります。また、アーティファクト保存の上限に達すると、チームがブロックされてしまうこともあります。ストレージを削減するために、特別なスクリプトを書いたり、ビルド後のアーティファクトを管理したりする必要があります。 GitHubコミュニティでの議論

GitLab のスケーリング、高可用性、ゼロダウンタイムのアップグレード機能

発表

リソース

比較

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の詳細

インナーソース

GitLabの内部プロジェクトにより、内部リポジトリのインナーソースが促進されます。

インナーソースの詳細

コミットグラフとレポートツール

GitLabは共同作業に役立つ、コミットグラフとレポートツールを提供します。

コミットグラフの詳細

可用性

GitLabは99.95%以上の可用性を目標としていますが、現在は99.5%にとどまっています。GitLabは可用性の改善に継続的に取り組んでいます。

GitLab.comの稼働状況

包括的なインポート機能

GitLab は、GitHub や他の VCS よりも多くのソース (GitHub, Bitbucket, Google Code, FogBugz, Gitea, 任意の git URL) からプロジェクトと課題をインポートできます。また、SVNからGitへ移行するための包括的なガイドとドキュメントも用意されています。

GitLabの利用開始をより簡単に

プロジェクトのエクスポート

GitLabのプロジェクトを他のシステムにエクスポートすることが可能です。

GitLabはデータへのアクセスを制限しません

課題

複数の課題のステータスや担当者やマイルストーンを素早く一括で設定でき、設定した値で簡単に絞り込みができます。プロジェクトを横断して、マイルストーンや課題を表示できます。

課題管理の詳細

説明テンプレート

課題やマージリクエストに description テンプレートを追加することにより、新しい課題やマージリクエストを作成するユーザーは、効果的なコミュニケーションに役立つテンプレートを選択できます。

GitLabの説明テンプレートの詳細

GitLab 特有の Markdown 記法

GitLabでは「GitLab Flavored Markdown」(GFM)を使用できます。GFMは標準的なマークダウンを拡張して、いくつかの便利な機能を追加したものです。

GitLab Flavored Markdownの詳細

ラベル

ラベルを使用すると、 'バグ' , 'ドキュメント' といった説明的なタイトルに基づいて、問題、マージリクエスト、エピックを簡単に分類できます。

GitLabのラベルの詳細

課題のウェイト

GitLabでは課題のウェイトを設定して、アジャイルのプラクティスに従って課題を管理できます。

課題のウェイトのドキュメントを表示

マイルストーン

プロジェクトレベルやグループレベルの両方でマイルストーンを作成/管理したり、現在実施しているマイルストーンの全ての課題を表示して、アジャイルプラクティスのインクリメントやリリースを表現します。

マイルストーンの詳細

Iterations

Create and manage iterations at the group level, view all the issues for the iteration you’re currently working on within your group or project, and enable all subgroups and projects to stay in sync on the same cadence.

Learn more about Iterations

課題の対応期限

GitLabでは個々の課題に対して期限日を設定できます。これは、特定の期限日までにしなければならない、複数の小さなタスクを管理するのに役立ちます。

期限日のドキュメント

複数の課題担当者

一度に複数の担当者を課題に設定できます。

課題の複数担当者のドキュメントを表示

議論をロック

不正使用、スパム、非生産的な議論を防止するため、管理者以上の権限を持つユーザーは議論の継続をロックすることができます。

議論をロック

機密の課題

機密の課題を使用すると、機密情報をセキュアに管理できます。GitLabでは、機密の課題をプロジェクトの報告者レベル以上のアクセス権を持つメンバーだけに公開できます。

機密の課題の詳細

関連した課題

関連する、ブロックする、ブロックされている課題として明示的にマークし、そのステータスを追跡します。 ブロックされた課題は、課題画面に表示され、簡単に識別できます。

関連した課題の詳細

他プロジェクトへの課題の移動

GitLabでは課題を別のプロジェクトへ移動できます。元の課題のすべてのリンク、履歴、コメントが移動先の課題にコピーされ、移動先の課題から元の課題を参照できます。これによって、複数のプロジェクトで課題を追跡するのが容易になります。

別のプロジェクトへ課題を移動の詳細

課題を重複としてマークする

課題を別の課題の重複としてマークし、その課題をクローズします。

重複した課題のマーク付けの詳細

課題をCSVファイルにエクスポート

GitLabから課題をCSVファイルとしてエクスポートすることができます。エクスポートしたファイルはデフォルトの通知メールアドレスに添付されて送信されます。

課題のCSVエクスポートの詳細

バーンダウンチャート

GitLabではマイルストーンのバーンダウンチャートを表示できます。これはスプリントやソフトウェアの新バージョンの作業の進捗管理に役立ちます。

バーンダウンチャートのドキュメントを表示

クイックアクション

GitLab は、クイックアクションでコメントフィールドから離れずに、課題やマージリクエストのメタデータを変更する便利な方法を提供します。

クイックアクションに関するドキュメント

Todos

ユーザーが課題やマージリクエストでメンションされたりアサインされると、そのユーザーの Todo List に表示されます。これにより開発ワークフローをより素早く簡単に追跡することができます。

Todoの詳細

コメント変更の追跡

コメントに関する全ての更新の履歴を表示します。

タスクのドラック&ドロップ

タスクリスト内のタスクをドラッグ&ドロップで並べ替えます。

この機能に関するGitLabの課題を表示

リンクホバーに関するリッチオブジェクトの概要

GitLab のユーザー、課題、マージリクエスト、その他のオブジェクトへのリンクにカーソルを合わせると、豊富な情報量の概要を表示されます。

この機能の実装に関するエピックを表示

JIRA 開発パネルから GitLab のブランチを作成

JIRA の課題の開発パネル内から GitLab のブランチを作成できます。

課題を表示

JIRA 開発パネルから GitLab のマージリクエストを作成

JIRA の課題の開発パネル内から GitLab のマージリクエストを作成できます。

課題を表示

プロジェクト課題ボード

GitLabには、課題のラベルをベースに課題をリストを表示する、課題ボードがあります。課題ボードは課題管理をよりユーザーフレンドリーな形で提供するものです。

GitLab課題ボードの詳細

作業時間の記録

GitLabでは課題とマージリクエストに作業時間の見積と実績を入力できます。

作業時間の記録の詳細

マージリクエストの承認を必須にする

プロジェクトで複数の承認が必要な場合、マージ前にすべてのマージリクエストを承認する必要があります。 必要な承認の数を設定し、特定の承認者のリストを事前に定義することで、マージリクエストの承認を必須にすることができます。 これにより、コードの品質と標準への準拠を保証することができます。

マージリクエストの承認の詳細

コードレビューを複数人で承認

GitLab では厳密なコードレビューを保証するために、マージリクエストをマージする前に、 マージリクエストに対して様々なユーザーからの特定の数の承認 を要求することができます。一度承認した後で問題に気がついた場合は、承認を取り消すこともできます。

承認機能のドキュメント

コードレビューの承認ルール

適格な承認者のリスト、それぞれの承認数の最小値、 およびどのターゲットブランチを保護するかを指定して、 承認ルールに沿って適切な人がマージリクエストをレビューするようにします。これにより、 エンジニアリング、UX、プロダクトといった異なるチームにレビューを依頼することが容易になります。

承認機能のドキュメント

リポジトリのプルミラーリング

リモートの Git サーバからローカルサーバにリポジトリをミラーリングすることで、ローカルのフォークやレプリカを簡単に最新の状態に保つことができます。

リポジトリのプルミラーリングの詳細

任意のマージリクエストの承認

良好な状態のマージリクエストを承認することは、レビュープロセスの重要な部分であり、変更をマージして良いことを明確に伝えることができます。

任意のマージリクエストの承認の詳細

コードオーナー

ファイルにコードオーナーを割り当てて、 `CODEOWNERS` ファイルを使用してプロジェクトのコードを担当するチームメンバーを指定します。コードオーナーはマージリクエストの承認者として自動的に割り当てられ、必要に応じて設定し、ファイルを表示するときにそれらを表示できます。

コードオーナーの詳細

コードオーナーセクション

コードオーナーセクションでは、各チームが独自のコードオーナー 設定を独立して行うことができ、複数のチームがコードベースの共通 部分を管理することができます。

コードオーナーセクションの詳細

フォークしたリポジトリの Git オブジェクトに関する重複排除

Gitオブジェクトをプールすることで、フォークされたGitリポジトリのディスクストレージ使用量を削減します。

Gitオブジェクトプールの詳細

Wiki によるプロジェクトのドキュメント

それぞれのプロジェクトのドキュメントを管理するためにWikiが使用できます。。すべてのWikiは独立したGitリポジトリとして利用できます

GitLabのWikiの詳細

デザイン管理

デザイン管理では、ユーザーはデザインアセット(ワイヤーフレームやモックアップなど)を課題にアップロードし、それらを一箇所に保管しておくことができます。これにより、プロダクトデザイナー、マネージャー、エンジニアがシームレスにデザインのディスカッションを行うことができます。 これらのアセットは簡単にアップロードでき、バージョンごとに保管されます。 また、ディスカッションでフォーカスしたい場所の画像をクリックすると、スレッドを開始することができます。

ドキュメント

GitLab-Figmaプラグイン

Figmaプラグインを使うと、GitLabの課題にFigmaのフレームやコンポーネントをアップロードすることができます。

ドキュメント

課題から新しいブランチを作成

GitLabでは、課題から素早く新しいブランチを作成できます。ブランチには課題の番号とタイトルが自動的に含まれるので、課題とブランチの紐付けを簡単にできます。

ドキュメントで詳細を確認

アップストリームの管理者にフォークの編集を許可

フォークしたプロジェクトからマージリクエストを投稿した場合に、 アップストリームの管理者にソースブランチの編集を許可するオプションが選べます。 これにより、アップストリームの管理者はマージ前に軽微な変更を行うことができ、 コミュニティからの貢献を受け入れる負担を軽減できます。

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

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

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

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

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

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

GitLab サーバのセルフ監視

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

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

バリューストリーム分析

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

バリューストリーム分析の詳細

Group Level Value Stream Analytics

GitLab provides a group dashboard that lets teams measure the time it takes to go from planning to monitoring. GitLab can provide this data because it has all the tools built-in: from the idea, to the CI, to code review, to deploy to production.

バリューストリーム分析の詳細

画像に関する議論

コミット画面やマージリクエストの差分画面で、画像の特定の位置を指定して、画像に関する議論をコメントできます。1つの画像に対して複数の議論を作成できます。

画像に関する議論

マージリクエストのコミットに関する議論

マージリクエストのコミットに対してコメントをすることができます。

マージリクエストのコミットに関する議論

初回貢献者バッジ

プロジェクトに初めて貢献する貢献者をハイライト表示します。

SUPPORTファイルへのリンク

新しい課題の作成画面に、サポート情報を記載したSUPPORTファイルへのリンクが表示されます。

この機能に関するGitLabの課題を表示

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

GitLab Container Registryは、Dockerイメージのためのセキュアでプライベートなレジストリです。 GitLab CIからイメージを簡単にアップロードしたりダウンロードしたりすることができます。 Gitリポジトリ管理と完全にインテグレーションされています。 (Codefresh社は2020年5月1日をもってプライベートなDockerレジストリのサポートを終了する予定です。)

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

レビューアプリで変更をプレビュー

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

レビューアプリの詳細

環境の自動停止

この機能では、Review App環境で設定できる任意の有効期限を設定することができます。

環境の自動停止の詳細

毎月、新機能を追加

毎月22日に、新機能の追加や多くの改善が適用されたGitLabの新しいバージョンがリリースされます。

1つの一体化したツール

一般的に多くのツールは、ソフトウェアの開発ライフサイクルを完成するために、複数のサードパーティツールを必要とします。一方Gitlabは、開発ライフサイクル全体をカバーできる完全に一体化したソリューションです。

サーバへのアクセス

ユーザにはサーバやインスタンスへの完全な制御権があります。したがって、侵入検知やパフォーマンスモニタリングなどの外部ソフトウェアのインストールや、サーバ自身のログファイルの閲覧も可能です。GitLabの進んだログシステムは、すべてを記録し、豊富なログファイル情報への容易なアクセスを提供しています。

ログシステムの詳細

ベアメタルでの実行が可能

GitLabは、ディスクI/Oや、CPU、RAMなどを制御できるベアメタルサーバでも実行できます。問題なく水平的な拡張が可能です。

GitLabのインストール方法を表示

インスタンスで独自のソフトウェアの実行が可能

GitLabを実行しているインスタンス上で、独自のソフトウェアを自由に実行することができます。独自の侵入検知システムを実行したい?まったく問題ありません。

GitLabのインストール方法を表示

構成管理ソフトウェアの選択肢

素早くシンプルな実装のために構成管理ソフトウェアは、Puppet、Chef、 Ansibleから選択できます。

GitLabのインストール方法を表示

メンテナンスとモニタリングには標準のUnixツールの使用が可能

メンテナンスとモニタリングには、使い慣れているツールをお使いください。標準ツールでもご自分のツールでもお好きなものご使用いただけます。GitLabによる制限はありません。

GitLabのインストール方法を表示

IPv6対応

GitLab.com と GitLab セルフホスティングサーバは IPv6 をサポートします。

IPv6 設定に関するドキュメントを確認

AD/LDAP連携

他グループとの同期、SSHキーの管理、許可や認証の管理などが可能です。GitLabインスタンスのすべてをAD/LDAP連携によって管理できます

AD/LDAP連携の詳細

複数LDAP/ADサーバーのサポート

複数のサーバをGitLabにリンクし、認証と認可を行うことができます。

LDAPの詳細設定

他のサービスから簡単に移行

以前に使用していたサービスから、すべてのリポジトリ、課題、マージリクエストのデータをGitLabへ簡単に移行できます。

プロジェクトをGitLabに移行する方法の詳細

ソースコードへのアクセス、および修正が可能

他の大多数のプロバイダが使用しているコードはプロプライエタリなので、ソースコードの閲覧や編集はできませんが、GitLabのソースコードは公開されています。したがってユーザがそれぞれのセキュリティや開発ニーズに合ったコードを調査し、またコードの修正が可能です。

GitLabのライセンスを表示

包括的なAPI

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

APIのドキュメントを表示

曖昧ファイル検索でファイルを探す

GitLabは少ないキー入力でリポジトリ内のファイルを探す方法を提供します。

ファイル検索のドキュメントを表示

fast-forwardマージ、およびrebaseオプション

マージコミットを作成せず、すべてのマージをfast-forwardとするように、プロジェクトレベルで設定できます。fast-forwardマージができない場合は、rebase後にマージするオプションを選択できます。

マージ前rebaseの詳細

squashしてマージ

複数のコミットを1つにまとめてからマージすることで、メインブランチの履歴をシンプルに保つことができます。

squashしてマージの詳細

リモートリポジトリにプッシュミラーリング

ローカルサーバーから別サーバーのリポジトリにミラーリングができます。プッシュミラーリングは、パスワード認証を使用した HTTP/SSH、SSH での公開キー認証を使用してサポートされます。

リポジトリのプッシュミラーリングの詳細

監査ログ

コードの整合性を維持するために、GitLab Premiumには管理者向けに、高度な監査ログシステムで、GitLabサーバ内で行った修正をすべて確認できる機能があります。これにより、すべての変更を制御、分析、追跡することが可能となります。

監査ログの詳細

詳細なユーザーの役割と柔軟な権限

5つのユーザーの役割と外部ユーザーの設定により、プロジェクトへのアクセスと権限を管理できます。ユーザーに設定した役割に従って、リポジトリへの読み取り・書き込みの権限を制御することができます。ソースコードへのアクセスが不要なユーザーには、課題管理システムへのアクセスのみを許可することができます。

ユーザーロールの詳細

マージの衝突を解決

マージの衝突をGitLabのUIでプレビューして、どちらのバージョンを使用するのか選択できます。

マージ衝突解決UIの詳細

未署名コミットを拒否

GitLab Premiumでは未署名コミットのプッシュを拒否することで、GPG署名コミットを強制することができます。

強制プッシュルールを表示

コミッターの検証

コミッターとプッシュの実行者が同一人物であることを検証できます。

GitLabで開発中です。詳細な情報はこのリンク先を参照ください。

マージリクエストの差分で、メソッド/関数にナビゲーション

マージリクエストの差分を表示しているときに、変更されたファイルのメソッド/関数に直接ナビゲーションできます。

この機能の実装に関するGitLabの課題を表示

パイプラインの成功時にマージ

レビューが済んでマージできる状態なのに、CI/CDのジョブが完了するまで待つ必要がある場合は、パイプラインが成功したら自動的にマージするように予約することができます。

パイプラインの成功時にマージの詳細

特定のコミットやマージリクエストをUIから取り消し

ボタンをクリックするだけで、コミットやマージリクエストの取り消しができます。

GitLabのUIからコミットやマージリクエストの取り消す方法の詳細

Web IDE

Web IDE を使用してローカル開発環境でのコンテキスト切り替えを回避することで、プロジェクトへの貢献を迅速にします。Web IDE はマージリクエストや GitLab CI と統合されているため、Web IDE を離れることなくフィードバックを解決、失敗したテストの修正、変更のプレビューをクライアント側の評価でライブ表示ができます。

Web IDEの詳細

Web IDE でのライブプレビュー

Web IDE のライブ プレビューを使用して、JavaScript と 静的なHTMLファイルのプロジェクトに加えた変更をプレビューできます。

Web IDEの詳細

Web IDE の Web ターミナル

Web IDE の Web ターミナルでコードを操作して、API 応答の検査、REPL の実験、コードのコンパイルを実行します。

Web IDE の Web ターミナルの詳細

Web ターミナルへのファイル同期

Web IDE で行った変更が Web ターミナルに同期されるようになりました。Web IDE で行ったユーザーの変更を、 プロジェクトにコミットする前に Web ターミナル内でテストできるようになりました。

Web ターミナルへのファイル同期の詳細

Web IDEの設定

Web IDEは、プロジェクトで作業するすべてのユーザーのコーディングスタイルを標準化するために、プロジェクト内で `.editorconfig` ファイルを使用することをサポートしています。 これにより、プロジェクト全体での一貫性と品質を簡単に維持することができます。

Web IDE の設定についてはこちらをご覧ください。

Web IDEのMarkdownに画像を貼り付ける

Web IDEでMarkdownファイルを編集する際に、コンテンツに画像を貼り付けることができます。これにより、コンテンツ内で画像を自動的にアップロードし、参照できます。

Web IDEでのMarkdown編集の詳細

Real-time feedback for .gitlab-ci.yml in Web IDE

To make it easier to configure your GitLab CI pipeline, the Web IDE now provides real-time linting and completion when editing `.gitlab-ci.yml` files.

Learn more about .gitlab-ci.yml editing feedback in the Web IDE

インラインコメントと議論の解決

マージリクエストのインラインコメントを使用すると、コードやテキストのレビューがより高速かつ効果的になります。特定のコード行についてコメントを残し、議論を解決します。GitLab では、マージリクエストのインラインコメントは議論として解釈され、変更されてもされなくても任意の行に残すことができます。すべての議論が解決されたときにのみマージリクエストが承認されるようにプロジェクトを構成できます。

議論の解決の詳細

変更のcherry-pick

マージリクエストや特定のコミット内のCherry-Pickボタンをクリックするだけで、あらゆるコミットをcherry-pickできます。

マージリクエストをcherry-pickの詳細

GPG署名コミット

署名コミットを使用すると、特定のユーザーによってコミットされたことを証明できます。

GPG署名コミットの詳細

サブグループ: グループ内のグループ

グループ内にさらにグループを作成することで、規模の大きなチームやプロジェクトの管理が容易になります。

サブグループの詳細

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

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

ウェブターミナルの詳細

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

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

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

GiLab Pagesで無料でウェブサイトを公開

GitLab Pages は、GitLab リポジトリと GitLab CI を使用して静的サイトをホストするための簡単なシステムを提供し、カスタムドメイン、アクセス制御、HTTPS サポートを備えています。

GitLab Pagesの詳細

GitLab リリース機能を使ってリリースを追跡する

GitLabのリリース機能を使えば、プロジェクト内の成果物を追跡することができます。ソース、ビルド出力、その他のメタデータや成果物など、リリースされたバージョンのコードに関連したスナップショットと考えてください。

GitLab リリース機能の詳細

無料のプライベートプロジェクトからウェブサイトを公開

サイトのコンテンツは無料のプライベートプロジェクトで管理しつつ、公開したい情報(HTML)だけをGitLab Pagesで公開できます。

GitLab Pagesのドキュメントを表示

GitLab Pagesのカスタムドメイン

GitLab Pagesでは、カスタムドメインやサブドメインを使用できます。

GitLab Pagesのウェブサイトにカスタムドメインを適用する方法の詳細

GitLab Pagesのマルチカスタムドメイン

GitLab Pagesでは1つのウェブサイトに複数のカスタムドメイン(ドメインエイリアス)を追加できます。ドメインエイリアスは1つの部屋への複数の扉のようなものです。

GitLab Pagesのウェブサイトにカスタムドメインを追加する方法の詳細

GitLab Pagesのセキュアなカスタムドメイン(HTTPS)

GitLab Pagesのカスタムドメインでは、無料でSSL/TLS証明書をインストールして使用できます。

GitLab PagesのウェブサイトにSSL/TLS証明書を追加する方法の詳細

GitLab Pagesのカスタムドメインの検証

新しいカスタムドメインを追加する場合は、ドメインの所有権を検証するために、指定のTXTレコードを追加しなければなりません。 この機構により、所有していないドメインのなりすましを防止することができます。

GitLab Pagesのドキュメントを表示

GitLab Pagesはすべての静的サイトジェネレーター(SSG)をサポート

GitLab Pagesでは、あらゆるSSGをビルドできます。また、使用するSSGのバージョンを指定することも可能です。

GitLab PagesであらゆるSSGをビルドする方法の詳細

GitLab Pagesのサンプルプロジェクト

フォークする[サンプルプロジェクト](https://gitlab.com/pages)を選択して、GitLab Pagesを開始することができます。

プロジェクトをフォークして、GitLab Pagesを開始する3分間のチュートリアル動画

静的サイト生成用の GitLab Pages テンプレート

プロジェクトをフォークしたくない人のために、GitLab PagesにはGitbook、Hugo、Jekyll、Gatsby、PlainHTMLのテンプレートも用意されており、テンプレートから GitLab Pagesサイトを立ち上げることができます。

テンプレートを使って GitLab Pages サイトを立ち上げる方法を 2 分間のビデオでご紹介します。

GitLab PagesはすべてのJekyllプラグインをサポート

GitLab Pagesでは、あらゆるバージョンのJekyllでビルドできることに加えて、すべてのJekyllプラグインを利用できます。

GitLab Pagesのドキュメントを表示

GitLab Pages へのアクセス制御

GitLab Pages では、サイトのカスタムアクセス制御を設定できます。

GitLab Pages の Web サイトでのアクセス制御の設定方法の詳細

デプロイボード

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

デプロイボードの詳細

制御

メンテンスのダウンタイムを制御できます。また、バックアップ方法や保管場所を制御できます。バックアップや保管場所を制御する方法の詳細

アップグレードのタイミングを選択可能

毎月、GitLabの新しいバージョンがリリースされ、都合の良いタイミングでアップグレードできます。

GitLabインスタンスのアップグレード方法の詳細

簡単なアップグレードプロセス

GitLab公式のLinuxリポジトリまたはDockerイメージを使用することで、いとも簡単にGitLabをアップグレードできます。

GitLabインスタンスのアップグレード方法の詳細

マージリクエストのすべてのフィールドを編集可能

GitLabのマージリクエストは、マージリクエストの作成者、プロジェクトの所有者、管理者権限があるユーザーであれば、すべてのフィールドを編集可能です。ターゲットブランチと同じように、すべてのフィールドを編集可能です。

GitLabのマージリクエストのドキュメントを確認

マージリクエストがマージされると課題を自動的にクローズ

GitLabでは、特別なキーワードを使用して、マージリクエストがマージされたタイミングで複数の課題を自動的にクローズすることができます。

課題の自動クローズの詳細

課題を自動クローズするパターンを設定可能

マージリクエストがマージされたタイミングで、複数の課題を自動クローズするためのキーワードを自身で定義できます。

課題の自動クローズの詳細

仕掛中のマージリクエスト (WIP)

仕掛中のマージリクエストを間違えてマージすることができないように、マージリクエストを仕掛中(WIP)としてマークできます。これにより、仕掛中の変更であっても安心してレビューの依頼ができます。

WIPマージリクエストの詳細

カスタムGitフック

リポジトリで発生した特定のアクションに対して、カスタムスクリプトを連鎖的に実行することができます。Gitフックによって、コミットが拒否されたり、エラーが発生すると、GitLabのUIにエラーメッセージが表示されます。GitLabは全種類のフックをサポートします。

GitLabでGitフックを使用する方法の詳細

レスポンシブデザイン

GitLabはレスポンシブデザインに対応しています。デスクトップ・タブレット・スマートフォンのそれぞれで、見やすく表示されるように最適化されています。

コミュニティベースでの開発

GitLabには公開されている課題管理システムがあります。GitLab自身の課題だけではなく、インフラやマーケティングに関する課題も公開されています。

GitLabのすべてのコントリビューターを表示

Git LFS 2.0対応

音楽・動画・画像ファイルのような巨大ファイルを管理するのに、Git LFSは役に立ちます。 Git LFS 2.0では、ファイルのロック機能が追加され、チーム作業でのバイナリファイルの取り扱いが改善されました。 このファイルのロック機能は、GitLabに組み込まれているファイルのロック機能に統合されています。

GitLabでのGit LFS対応の詳細

様々な認証メカニズム

GitLabは、ほぼすべての認証と認可のプロバイダを統合することができます。

GitLabの認証インテグレーションを表示

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

GitLab では、CI/CD パイプラインで静的アプリケーションセキュリティテスト (SAST) を簡単に実行することができます。 アプリケーションに含まれるライブラリの中に脆弱なソースコードや よく知られたセキュリティバグがないかどうかをチェックします。 結果はマージリクエストとパイプラインビューに表示されます。 この機能は [Auto DevOps](https://docs.gitlab.com/ee/topics/autodevops/stages.html#auto-sast) の一部として利用可能で、デフォルトでのセキュリティを提供しています。

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

機密情報の検出

GitLab では、CI/CD パイプラインで機密情報の検出を行い、意図せずにコミットされた機密情報をチェックします。 結果はマージリクエストやパイプラインビューに表示されます。 この機能は [Auto DevOps](https://docs.gitlab.com/ee/topics/autodevops/) の一部として提供されています。

機密情報の検出の詳細

依存関係の脆弱性スキャン

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

セキュリティダッシュボード

"Security Dashboards report the latest security status of the default branch for each project. View, triage, and manage vulnerabilities at the Project, Group, or Instance level from a single view. Drill into individual vulnerability details or see high level trends and potential trouble spots."

セキュリティダッシュボードの詳細

コードカバレッジの時間変化をグラフ表示

ブランチのコードカバレッジが時間の経過とともにどのように変化しているかを追跡するのは、チームにとって時間がかかり、価値の低い作業になります。 GitLab は、計算されたコードカバレッジの値が時間の経過とともにどのように推移しているかを示すシンプルなグラフを提供します。

コードカバレッジのグラフ表示の詳細

Gitのプッシュでプロジェクトを作成

新しいプロジェクトを作成したい場所にプッシュすると、自動的に新しいプライベートプロジェクトが作成されます。

プロジェクト作成の詳細

個人メールアドレスの非公開

個人メールアドレスを非公開にして、匿名メールアドレスでのコミットができます。

コミットメールの個人アドレスの詳細

Kubernetesクラスター監視

接続しているKubernetesクラスターの主要なメトリクスを監視できます。

クラスター監視の詳細

ChatOps

チャットから直接一般的なアクションを実行し、チャットに実行結果を出力することができます。

ChatOpsの詳細

デプロイトークン

Kubernetes上にアプリケーションをデプロイする場合などに必要な、特定のリポジトリやコンテナイメージへの読み取り専用アクセスを提供します。 この設定は、プロジェクトレベルとグループレベルで利用できます。

デプロイトークンの詳細

グループ用のSAML SSO

GitLab 内のグループを SAML ID プロバイダに接続して、認証を管理します。

LDAPのグループ同期の詳細

Kubernetes podログの表示

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

Kubernetes podログの表示の詳細

地理検知DNSのサポート

地理的に離れた場所にレプリケーションされたサーバーがあるとGitのpullを高速に実行できますが、地理検知DNSのサポートがないと、開発者は手動で近くにあるサーバーを指定する必要があります。地理検知DNSのサポートがあれば、ユーザーが意識することなく、最も近くにあるサーバーから高速にリポジトリのデータを取得できます。

GitLab Geoの詳細

高度な検索

Advanced Search via Elasticsearch provides rich search capability

GitLabの検索機能の詳細

ナビゲーションのグループドロップダウン

簡易的なドロップダウンメニューで直接グループを検索することが可能です。これにより、作業中の画面を見ながら目的のグループを見つけることができます。

グループの詳細

CommonMarkに対応したマークダウン

GitLabのマークダウンは、最新標準である、CommonMarkに対応しています。新しく追加したコンテンツはCommonMarkで描画されます。

GitLab Flavored Markdownの詳細

プロジェクトの作成時にREADMEファイルを追加

新しいプロジェクトを作成する時に、リポジトリにサンプルREADMEファイルを一緒に作成することができます。プロジェクトの作成時にチェックを入れると、リポジトリのmasterブランチにサンプルREADMEファイルが追加され、すぐにリポジトリをクローンできます。

プロジェクト作成の詳細

二要素認証をバイパスするためのSAML保証レベル

GitLab側での二要素認証をバイパスするために、SAMLプロバイダの保証レベルを優先できます。

SAML OmniAuth Providerの詳細

2要素認証(2FA)を強制

2要素認証を有効にすると、パスワードでの認証に加えて2番目の認証が必要となるので、あなたのアカウントを安全にできます。たとえあなたのパスワードが侵害されても、2番目の認証があなたのアカウントを守ってくれます。2要素認証を強制することで、すべてのユーザーに2要素認証を使用させることができます。

GitLabで2FAを強制の詳細

マージリクエストウィジェットにある JUnit テストの概要を確認する

GitLab を使用すると、マージリクエストウィジェットから JUnit テスト結果を表示できるので、変更による品質への影響に関する見解が得られます。

マージリクエストウィジェットにある JUnit テストのサマリーの詳細

ユーザーステータスメッセージ

プロフィールページ、コメント、作成者の行に表示される絵文字やテキストメッセージを使って、個人的なステータスメッセージを定義して表示します。

ステータスメッセージの詳細

プライベートプロファイルページ

プライバシーが懸念されるような特定の状況下では、ユーザーが自分の活動、貢献、個人的なプロジェクトを表示したくない場合があります。アクティビティ関連の情報は、プロファイル設定で無効にできます。

プライベートプロファイルの詳細

ダウンロードシングルリポジトリーファイル

GitLab 上のプロジェクトのリポジトリを閲覧する場合、単一のファイルに直接アクセスすることが適切なユースケースです。ファイルビューアの 'ダウンロード' ボタンを使用すると、GitLab UI から個々のファイルをダウンロードできます。

プロジェクトリポジトリの詳細

プロジェクト概要のリポジトリ言語

プロジェクト概要にあるプログラミング言語バーには、GitLab リポジトリを構成するすべての関連言語 (相対的な数を含む) が表示されます。

プロジェクトの詳細

マージリクエストにTerraform Planのサマリーを出力

マージリクエストのウィジェットに`terraform plan` 実行後に予想されるインフラの変更のサマリーを表示できます。

Infrastructure as Code の機能の詳細

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

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

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

インスタンスファイルテンプレート

カスタムの `LICENSE`、`.gitignore`、`Dockerfile`、`.gitlab-ci.yml`ファイルのテンプレートを定義して、GitLabインスタンスの一貫性を高めることができます。

カスタムインスタンスファイルテンプレートの詳細

グループファイルテンプレート

カスタムの `LICENSE`、`.gitignore`、`Dockerfile`、`.gitlab-ci.yml`ファイルのテンプレートを定義して、グループの整合性を取りやすくします。

カスタムグループファイルテンプレートの詳細

保護環境

特定の環境へのデプロイを許可するユーザー、グループ、アカウントを指定して、機密性の高い環境の保護と安全性を強化します。

保護環境の詳細

仮想パッケージリポジトリを活用して、パッケージ管理ワークフローを簡素化します。

仮想リポジトリとは、単一の論理 URL を通じてアクセスされるローカル、リモート、その他の仮想リポジトリの集合体です。

GitLabのエピックで、この機能を追加するために必要な課題を詳細に説明しています。

より安全で信頼性の高いビルドのためのリモートパッケージレジストリをプロキシします。

多くの組織では、頻繁に利用しているアップストリームのイメージ/パッケージ用のキャッシュプロキシを使うのが便利です。CI/CD の場合は、プロキシはリクエストを受信し、レジストリからアップストリームのイメージを渡す責任があり、パイプラインを高速化するためのプルスルーキャッシュとして機能します。

依存性プロキシの詳細

Conan (C/C++) リポジトリ

Conan は、開発者がネイティブバイナリを作成, 共有するためのオープンソースの分散型 C/C++ マルチプラットフォームパッケージです。

Conanリポジトリに関するドキュメント

Maven (Java) リポジトリ

GitLab の Maven リポジトリにより、組織全体での Java ライブラリの公開と共有が簡単になり、依存関係が正しく管理されるようになります。認証と承認を含め、GitLab と完全に統合されています。

Maven リポジトリのドキュメント

NPM レジストリ

GitLab の NPM リポジトリにより、組織全体で NPM パッケージを公開および共有しやすくなり、依存関係が正しく管理されるようになります。認証と承認を含め、GitLab と完全に統合されています。

NPM リポジトリに関するドキュメント

NuGet (.NET) リポジトリ

GitLabのNuGetリポジトリは、C#/.NETの開発者がNuGetクライアントやVisual Studioを使ってパッケージを作成、公開、共有することを可能にします。

NuGet リポジトリのドキュメント

PyPI (Python) リポジトリ

Python開発者はGitLabをリモートPyPIリポジトリとして設定し、PyPIクライアントやGitLab CI/CDを使ってパッケージをビルド、公開、共有することができます。

エピックで詳細を確認

RPM (Linux) リポジトリ

この計画中の機能により、Linux開発者は、ソースコードやパイプラインと一緒にRPMパッケージを構築、公開、共有することができます。

課題で詳細を確認

Debian (Linux) リポジトリ

この計画中の機能により、Linux 開発者はソースコードやパイプラインと一緒に Debian パッケージを構築、公開、共有できるようになります。

課題で詳細を確認

RubyGems (Ruby) リポジトリ

この計画中の機能は、Ruby開発者がGitLabをリモートのRubyGemsリポジトリとして設定し、コマンドラインやGitLab CI/CDを使ってパッケージをビルド、公開、共有できるようにするものです。 また、GitLab自体の開発にとっても貴重な機能であり、[dogfooding](https://about.gitlab.com/handbook/values/#dogfooding)にも役立ちます。

課題で詳細を確認

Go リポジトリ

この計画中の機能により、Go開発者はソースコードやパイプラインと一緒にパッケージを構築、公開、共有できるようになります。 これはGitLab自体の開発にとっても貴重な機能であり、[dogfooding](https://about.gitlab.com/handbook/values/#dogfooding)にも役立ちます。

課題で詳細を確認

Composer (PHP) リポジトリ

この計画中の機能により、PHP 開発者はソースコードやパイプラインと一緒にパッケージを構築、公開、共有することができるようになります。

課題で詳細を確認

REST APIでパッケージレジストリを使用する

REST API を使用して GitLab パッケージレジストリの自動化とインテグレーションをサポートします。

APIに関するドキュメント

複数のリポジトリタイプで動作します。

Git, Subversion, Perforce, CVS, Mercurial などの複数のリポジトリタイプをサポートします。

他の SCM からの移行の詳細

GitLabが管理するTerraformのstateファイル

Terraformのstateファイル用に特定のオブジェクトストレージを使用するように、インスタンスレベルで設定できます。 これにより、最小限のテンプレートで新しいインフラプロジェクトを開始することができます。

GitLabでのInfrastructure as Codeの詳細

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

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

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

コードリポジトリアプリのエコシステム内の任意のイベントでパイプラインを起動する

コードリポジトリやそのリポジトリのエコシステムのアプリ拡張で定義されたイベントが実行されたときに、パイプラインやワークフローを開始できるようにします。 例えば、Slackインテグレーションでイベントが発生したときに、リポジトリの作業項目を更新します。

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

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

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

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

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

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

リポジトリに保存されている1つのファイルで定義されたパイプライン

パイプライン/ワークフローは、それが実行されるリポジトリに保存されている1つのファイルで完全に定義することができます。

CIの設定を外部リポジトリに保存

.gitlab-ci.yml のパスを任意の URL で指定すると、CI の設定を外部リポジトリに保存することができます。 これにより、何百ものリポジトリですべて同じ外部の gitlab-ci.yml ファイルを使用することができ、複数のリポジトリに対して更新する CI び設定ファイルを 1 つだけにすることで効率化を図ることができます。 また、サービスが設定ファイルを動的に生成するような場合にもメリットがあります。 .gitlab-ci.yml ファイルを別のプロジェクトでホストすることで、CI の設定変更に対するアクセス制御を柔軟に行うことが可能になります。

ドキュメント

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

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

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

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

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

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

マトリックスビルド

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

親子パイプラインの詳細

Linuxの共有Runnerを利用

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

Windowsの共有Runnerを利用

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

ベータテスト中

macOSの共有Runnerを利用

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

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

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

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

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

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

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

生のログを平文で表示

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

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

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

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

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

アーティファクトの依存関係があるプロジェクト横断的なジョブ

現在のプロジェクト内のジョブが別のパイプライン内のジョブによって生成された最新のアーティファクトに依存していることを指定できます。これにより、アーティファクトの依存関係があるプロジェクト横断的なパイプラインを簡単に設定できます。

ドキュメント

親子パイプライン

When one pipeline serves as a parent of one of more child pipelines, it removes many of the challenges of complex pipeline creation. Performance can be improved because child pipelines can run concurrently based on trigger configurations in the parent pipeline. As an added bonus, decomposing a single, complex, pipeline into a parent pipeline with multiple children simplifies pipeline visualization and ultimately improves comprehension for the entire team. It is also possible to dynamically generate the `.gitlab-ci.yml` for the child pipeline, making it easy to implement runtime behaviors in a clear way. GitLab includes a Jsonnet template as an example for how you can do this with a data templating language.

ドキュメント

S/MIME Signed Commits

署名コミットを使用すると、特定のユーザーによってコミットされたことを証明できます。

Read more about S/MIME signed commits

Static Site Editor

GitLab provides an easy way to collaborate on HTML content through the Static Site Editor. A collaborator doesn't need to set up a local environment to contribute to the content nor have any prior knowledge of the underlying templating language, site architecture, or even Git. The Static Site Editor is currently delivered through a Middleman project template.

Learn more about the Static Site Editor