公開:2025年2月19日
1分で読めます
GitLab独自のプロジェクトベースの公開モデルを活用し、ルートグループレベルを使用して、安全で柔軟なパッケージ管理戦略を立てる方法についてご紹介します。
組織の規模が拡大するにつれ、社内パッケージの管理はますます複雑になります。JFrog ArtifactoryやSonatype Nexusなどの従来のパッケージ管理システムでは一元化されたリポジトリアプローチが使用される一方で、GitLabでは現代の開発チームの作業により合致する、別の方法を採用しています。この記事では、Mavenパッケージとnpmパッケージを例に、エンタープライズ規模のGitLabパッケージレジストリを効果的に構築する方法について見ていきます。
従来のパッケージ管理システムからGitLabのアプローチへ移行する際は、その違いに最初は戸惑うかもしれません。GitLabでは、単一の集中型リポジトリを使用する代わりに、パッケージ管理を既存のプロジェクト構造とグループ構造に直接統合します。これにより、次のような運用が可能になります。
このモデルには、次のようないくつかの利点があります。
GitLabではさまざまなグループレベルでパッケージを利用できますが、GitLabユーザーの間では、ルートグループレベルを使うことがベストプラクティスとして定着しつつあります。それには、以下のような理由があります。
では、実際に大規模な企業ではどのように機能するか見ていきましょう。
company/ (root group)
├── retail-division/
│ ├── shared-libraries/ # 部門固有の共有コード
│ └── teams/
│ ├── checkout/ # チームはここにパッケージを公開
│ └── inventory/ # チームはここにパッケージを公開
├── banking-division/
│ ├── shared-libraries/ # 部門固有の共有コード
│ └── teams/
│ ├── payments/ # チームはここにパッケージを公開
│ └── fraud/ # チームはここにパッケージを公開
└── shared-platform/ # 企業全体の共有コード
├── java-commons/ # 共有Javaライブラリ
└── ui-components/ # 共有UIコンポーネント
チームは各自のプロジェクトレジストリにパッケージを公開します。これにより、所有権が明確化されます。
<!-- checkout/pom.xml -->
<distributionManagement>
<repository>
<id>gitlab-maven</id>
<url>${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/maven</url>
</repository>
</distributionManagement>
// ui-components/package.json
{
"name": "@company/ui-components",
"publishConfig": {
"registry": "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/npm/"
}
}
ルートグループを使用する利点をここで発揮します。全チームは、パッケージへのアクセス用に単一のエンドポイントを設定します。
<!-- 任意のプロジェクトのpom.xml -->
<repositories>
<repository>
<id>gitlab-maven</id>
<url>https://gitlab.example.com/api/v4/groups/company/-/packages/maven</url>
</repository>
</repositories>
# 任意のプロジェクトのnpmrcファイル
@company:registry=https://gitlab.example.com/api/v4/groups/company/-/packages/npm/
この設定では、プロジェクトベースでの公開による利点を活用しつつ、社内全体にわたってすべてのパッケージへのアクセスを自動的に提供します。
GitLabが採用しているモデルでは、デプロイトークンとCI/CD統合により、認証が簡素化されます。
GitLabは、CI_JOB_TOKEN
を使用してパイプラインでの認証を自動的に処理します。
#-.gitlab. .gitlab-ci.yml
publish:
script:
- mvn deploy # またはnpm publish
# CI_JOB_TOKENによって自動的に認証が行われる
グループデプロイトークンを用いて、パッケージを使用します。
GitLabのパッケージレジストリモデルは、特にルートグループの使用を活用すれば、エンタープライズ向けのパッケージ管理用の強力なソリューションとなります。組織は、プロジェクトベースでの公開とルートグループでの利用を組み合わせることで、所有権の明確化とアクセスの簡素化の両方を実現できます。このアプローチなら、セキュリティと使いやすさを維持しながら、組織の規模に合わせて自然にスケールできます。
まずは、1つのチームまたは部門にこのモデルを導入し、この統合アプローチの効果を実感しながら徐々に展開していくことをおすすめします。なお、この記事ではMavenとnpmに焦点を当ててご説明しましたが、GitLabでサポートされているすべてのタイプのパッケージにも、同じ原則を適用できます。
今すぐパッケージレジストリを使い始めましょう!GitLab Ultimateの60日間無料トライアルにぜひお申し込みください。