278.md 5.5 KB
Newer Older
Lab机器人's avatar
readme  
Lab机器人 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126
# 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) .