# GitLab Composer Repository

> 原文：[https://docs.gitlab.com/ee/user/packages/composer_repository/](https://docs.gitlab.com/ee/user/packages/composer_repository/)

*   [Enabling the Composer Repository](#enabling-the-composer-repository)
*   [Getting started](#getting-started)
    *   [Creating a package project](#creating-a-package-project)
    *   [Publishing the package](#publishing-the-package)
    *   [Installing a package](#installing-a-package)

# GitLab Composer Repository[](#gitlab-composer-repository-premium "Permalink")

[Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/15886) in [GitLab Premium](https://about.gitlab.com/pricing/) 13.2.

使用 GitLab Composer 信息库，每个项目都可以有自己的空间来存储[Composer](https://s0getcomposer0org.icopy.site/)软件包.

## Enabling the Composer Repository[](#enabling-the-composer-repository "Permalink")

**注意：**仅当您的 GitLab 管理员[启用了对 Package Registry 的支持时，](../../../administration/packages/index.html)此选项才可用.

启用 Composer 信息库后，默认情况下它将可用于所有新项目. 要为现有项目启用它，或者要禁用它：

1.  导航到项目的**"设置">"常规">"可见性，项目功能，权限"** .
2.  找到"软件包"功能并启用或禁用它.
3.  单击**保存更改**以使更改生效.

然后，您应该能够在左侧栏中看到" **程序包和注册表"**部分.

## Getting started[](#getting-started "Permalink")

本节将介绍如何创建一个新的示例 Composer 软件包进行发布. 这是测试**GitLab Composer 注册表**的快速入门.

您将需要最新版本的[Composer](https://s0getcomposer0org.icopy.site/) .

### Creating a package project[](#creating-a-package-project "Permalink")

了解如何创建完整的 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 
```

### Publishing the package[](#publishing-the-package "Permalink")

现在，我们的项目基础已经完成，我们可以发布该软件包了. 为此，您将需要以下内容：

*   个人访问令牌. 您可以生成范围设置为`api`的[个人访问令牌](../../../user/profile/personal_access_tokens.html) ，以进行存储库身份验证.
*   您的项目 ID，可以在项目的主页上找到.

要发布托管在 GitLab 上的软件包，我们需要使用`curl`这样的工具对 GitLab 软件包 API 进行`POST` ：

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

Where:

*   `<personal-access-token>`是您的个人访问令牌.
*   `<project_id>`是您的项目 ID.
*   `<tag>`是您要发布的版本的 Git 标记名称. 在此示例中，它应为`v1.0.0` . 请注意，除了使用`tag=<tag>`您还可以使用`branch=<branch>`来发布分支.

如果上面的命令成功执行，您现在应该可以在项目页面的" **程序包和注册表"**部分下看到该程序包.

### Installing a package[](#installing-a-package "Permalink")

要安装您的软件包，您需要：

*   个人访问令牌. 您可以生成范围设置为`api`的[个人访问令牌](../../../user/profile/personal_access_tokens.html) ，以进行存储库身份验证.
*   您的组 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>"  },  ...  } 
```

Where:

*   `<group_id>`是在项目的"组"页面下找到的组 ID.
*   `<package_name>`是软件包的`composer.json`文件中定义的软件包名称.
*   `<version>`是您的软件包版本（在此示例中为`1.0.0` ）.

您还需要使用 GitLab 凭据创建一个`auth.json`文件：

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

Where:

*   `<personal_access_token>`是您的个人访问令牌.

配置了`composer.json`和`auth.json`文件后，您可以通过运行`composer`安装软件包：

```
composer update 
```

如果成功，您应该能够看到指示软件包已成功安装的输出.

**重要提示：**请确保不要将`auth.json`文件提交到您的存储库. 要从 CI 作业安装软件包，请考虑将[`composer config`](https://s0getcomposer0org.icopy.site/doc/articles/handling-private-packages-with-satis.md)工具与您的个人访问令牌一起使用，并将其存储在[GitLab CI / CD 环境变量](../../../ci/variables/README.html)或[Hashicorp Vault 中](../../../ci/examples/authenticating-with-hashicorp-vault/index.html) .