GitLab Composerリポジトリ

GitLab Premium13.2で導入されました

GitLab Composerリポジトリを使えば、すべてのプロジェクトはComposerパッケージを保存するための独自のスペースを持つことができます。

Composerリポジトリの有効化

Note:このオプションは、GitLab管理者がパッケージレジストリのサポートを有効にしている場合にのみ利用できます。

Composer リポジトリを有効にすると、デフォルトですべての新規プロジェクトで利用できるようになります。 既存のプロジェクトで有効にする場合、または無効にする場合は、以下の手順に従います:

  1. プロジェクトの[設定]>[一般]>[権限]に移動します。
  2. パッケージ機能を検索し、有効または無効にします。
  3. 変更を有効にするには、[変更を保存]をクリックします。

左サイドバーに「パッケージ&レジストリ」セクションが表示されます。

利用を開始

このセクションでは、新しい Composer パッケージのサンプルを作成して公開する方法を説明します。 これは、GitLab Composerレジストリをテストするためのクイックスタートです。

Composerの最新バージョンが必要です。

パッケージプロジェクトの作成

Composer プロジェクトの完全な作成方法を理解することは、このガイドの範囲外ですが、レジストリをテストするための小さなパッケージを作成することはできます。まず、my-composer-packageという新しいディレクトリを作成します:

mkdir my-composer-package && cd my-composer-package

このディレクトリ内部に新しいcomposer.json ファイルを作成し、基本プロジェクトをセットアップします:

touch composer.json

composer.jsonの内部に、以下のコードを追加します:

{
  "name": "<namespace>/composer-test",
  "type": "library",
  "license": "GPL-3.0-only",
  "version": "1.0.0"
}

<namespace> を、GitLab のユーザー名やグループ名などのユニークな名前空間に置き換えてください。

この基本的なパッケージ構造を作成したら、gitでタグ付けしてリポジトリにプッシュする必要があります。

git init
git add composer.json
git commit -m 'Composer package test'
git tag v1.0.0
git add origin git@gitlab.com:<namespace>/<project-name>.git
git push origin v1.0.0

パッケージの公開

プロジェクトの基本が完成したので、パッケージを公開しましょう。 そのためには、以下のものが必要です:

  • 個人アクセストークン。リポジトリ認証のスコープをapi に設定して、個人アクセストークンを生成できます。
  • プロジェクトIDは、プロジェクトのホームページに記載されています。

GitLab にホストされているパッケージを公開するには、curlのようなツールを使って GitLab パッケージ API にPOST を作成する必要があります:

curl --data tag=<tag> 'https://__token__:<personal-access-token>@gitlab.com/api/v4/projects/<project_id>/packages/composer'

どこで

  • <personal-access-token> はあなたの個人アクセストークンです。
  • <project_id> はプロジェクトIDです。
  • <tag> は公開したいバージョンの Git タグ名です。この例ではv1.0.0とします。ブランチを公開するにはtag=<tag> のかわりにbranch=<branch> を使うこともできることに注意しましょう。

上記のコマンドが成功すれば、プロジェクトページのPackages & Registriesセクションにパッケージが表示されるはずです。

パッケージのインストール

パッケージをインストールするには、以下のものが必要です:

  • 個人アクセストークン。リポジトリ認証のスコープをapi に設定して、個人アクセストークンを生成できます。
  • プロジェクトグループのホームページで確認できるあなたのグループID。

GitLab Composerのパッケージリポジトリを既存のプロジェクトのcomposer.json 。インストールしたいパッケージ名とバージョンも一緒に追加します:

{
  ...
  "repositories": [
    { "type": "composer", "url": "https://gitlab.com/api/v4/group/<group_id>/-/packages/composer/packages.json" }
  ],
  "require": {
    ...
    "<package_name>": "<version>"
  },
  ...
}

どこで

  • <group_id> はプロジェクトのグループページにあるグループIDです。
  • <package_name> は、パッケージのcomposer.json ファイルで定義されているパッケージ名です。
  • <version> はパッケージのバージョンです ( この例では1.0.0 )。

また、GitLab の認証情報でauth.json ファイルを作成する必要があります:

{
    "http-basic": {
        "gitlab.com": {
            "username": "___token___",
            "password": "<personal_access_token>"
        }
    }
}

どこで

  • <personal_access_token> はあなたの個人アクセストークンです。

composer.jsonauth.json ファイルが設定されたら、composerを実行してパッケージをインストールします:

composer update

成功すれば、パッケージが正常にインストールされたことを示す出力が表示されるはずです。

重要:auth.json ファイルをリポジトリにコミットしないようにしてください。 CI ジョブからパッケージをインストールするには、GitLab CI/CD環境変数または](https://getcomposer.org/doc/articles/handling-private-packages-with-satis.md#authentication)Hashicorp Vault](https://getcomposer.org/doc/articles/handling-private-packages-with-satis.md#authentication)に保存されている個人アクセストークンを使用して、composer config ツールを使用することを検討してください。