はじめに
これまでのブログでは、Gitの基本的な使い方を学び、GitLab上でリポジトリを連携させる方法を解説してきました。これで、Gitの基本的な機能はバッチリです。
今回は、Gitの知識をさらに広げ、GitLabが提供する機能群に焦点を当てます。GitLabの画面と主要な機能について解説します。特に、チーム開発、CI/CD、そしてセキュリティという3つの側面からGitLabの役割を見ていきます。GitHubとの違いについても触れることで、GitLabの強みがより明確になります。
GitLabの主な利用機能とGithubとの違い
GitLabは、DevOpsライフサイクル全体を一つのプラットフォームでカバーすることを目指しています。これが、単一の機能に特化した他のツールとの最も大きな違いです。
プロジェクト
GitLabにおける「プロジェクト」は、GitHubにおける「リポジトリ」に相当するものです。ただし、GitHubのリポジトリが主にコードを管理する場所であるのに対し、GitLabのプロジェクトはそれ以上の機能を持っています。コードを格納するGitリポジトリはもちろん、イシュー管理、CI/CD、Wiki、セキュリティレポートなど、開発に必要なすべての機能がこのプロジェクトに紐づいています。プロジェクトは、GitLabにおける作業の単位であり、開発の中心です。
プロジェクトのホーム画面です。画面左のメニューから様々な機能にアクセスできます。
CI/CD
CI/CD(継続的インテグレーション/継続的デリバリー)機能をプラットフォームに最初から組み込んでいます。.gitlab-ci.ymlという一つのファイルで、コードのテスト、ビルド、デプロイまでを自動化できます。
CI/CDを構成する一連の自動化された処理は、「パイプライン」として視覚化されます。
メニューのビルド>パイプラインからパイプラインの実行履歴などを確認することができます。.gitlab-ci.ymlの作成方法やパイプラインの実行方法などは第8回で詳しく説明します。
セキュリティ
ソースコードの脆弱性や機密情報を自動で検知するセキュリティ機能も、GitLabのコア機能として統合されています。開発の初期段階からセキュリティを考慮したDevSecOpsを容易に実現できます。
メニューのセキュリティ>セキュリティ設定からセキュリティ機能の設定が可能です。これらのセキュリティ機能を設定すると、.gitlab-ci.ymlにテスト・スキャン実行の設定が追加されます。
GitHubとの差分
GitHubでのCI/CDやセキュリティ機能は、GitHub ActionsやGitHub Advanced Securityといった、機能ごとに独立したサービスとして提供されます。これに対し、GitLabは最初からオールインワンで統合されており、簡単に利用できる点が大きな違いです。つまり、GitHubが多様なツールを組み合わせて利用する「拡張性」を重視するのに対し、GitLabはすべての機能をプラットフォーム内に集約する「統合性」と「一貫性」を重視しています。
チーム管理で利用される機能
Issue管理
タスク、バグ、機能追加の要望などを管理するための機能です。Issueには担当者を割り当てたり、ラベルを付けたり、期限を設定したりできます。また、イシューボードを使うことで、タスクの進捗状況を視覚的に把握できます。
メニューの計画>イシューからIssueの管理が可能です。
イシューの作成をしてみます。
[新しいイシュー]をクリックします。
タイトルと説明を入力します。入力したら、[イシューを作成]をクリックします。
他にも担当者や開始日/期限などが設定可能です。
作成出来たら、イシューの詳細画面に映ります。
イシューも作成できたので、メニューの計画>イシューボードを見てみましょう。
ここでは、イシューをステータスごとに一覧で視覚的に管理することができます。
新しいステータスの項目を追加したり、イシューをドラッグアンドドロップで直感的に操作することができます。
マージリクエスト機能
GitHubのプルリクエストにあたる機能です。これは単にコードをマージするための申請ではなく、コードレビュー、CI/CDの結果確認、セキュリティスキャンを1つの画面で行うことができます。
マージリクエストの実際のフローについては、第5回を参考にしてみてください。
CICD
GitLabの強みであるCI/CD機能は、コードの変更を検知してテストやビルドなどを自動で行い、開発プロセスを自動化します。GitLabとGitHubのCI/CD機能について簡単に紹介します。
GitLab Runner
CI/CDパイプラインのジョブを実行するためのエージェントです。オンプレミスのGitLabでは自社のサーバーにRunnerを設置できるため、社内ネットワーク内の環境を利用した自動化が容易になります。GitLab runnerについては第8回で詳しく説明します。
GitHub Actions
GitHubが提供するCI/CDサービスです。GitLab CI/CDと同様に、YAMLファイルでワークフローを定義し、ジョブを自動実行します。
セキュリティ
GitLabは、開発の初期段階からセキュリティを組み込む「DevSecOps」を重視しています。GitLabとGitHubのセキュリティ機能について簡単に紹介します。どちらのプラットフォームも、コードの脆弱性や機密情報を自動で検知するセキュリティ機能を提供していますが、利用できる機能の範囲は、契約しているプラン(Free, Pro, Enterpriseなど)によって異なります。
GitLab:コードの静的解析 Static Application Security Testing(SAST)
コードのビルドや実行前に、ソースコードに潜在する脆弱性やバグを自動的に検知します。CI/CDパイプラインに組み込むことで、問題のあるコードがマージされるのを防ぎます。
GitLab:認証情報検知
ソースコードにハードコードされたパスワードやAPIキーなどの機密情報を検知し、情報漏洩のリスクを減らします。
GitHub:Code scanning・Secret scanning
GitHubにも同様の機能があります。GitLabとの違いは、これらのセキュリティ機能がGitLabでは単一のプラットフォームに統合されている点です。
まとめ
今回は、GitLabが提供するプロジェクト管理、CI/CD、そしてセキュリティの各機能について、GitHubとの違いを交えながら解説しました。
GitLabは、コード管理に加えて、チーム管理のためのイシュー機能、開発を自動化するCI/CD、そしてコードの安全性を確保するセキュリティ機能まで、開発ライフサイクルのすべてを一元管理できる強力なDevOpsプラットフォームです。
次回以降のブログでは、今回紹介した各機能について、より詳細な設定方法や具体的な活用例を実践的に解説していきます。
参考文献
https://docs.gitlab.com/user/project/organize_work_with_projects/
https://docs.gitlab.com/user/project/issues/
https://docs.gitlab.com/topics/build_your_application/
https://docs.gitlab.com/user/application_security/secure_your_application/
https://docs.gitlab.com/ci/migration/github_actions/#key-similarities-and-differences
https://docs.github.com/ja/actions
https://docs.github.com/ja/get-started/learning-about-github/about-github-advanced-security