GitLab Composer Repository
原文:https://docs.gitlab.com/ee/user/packages/composer_repository/
GitLab Composer Repository
Introduced in GitLab Premium 13.2.
使用 GitLab Composer 信息库,每个项目都可以有自己的空间来存储Composer软件包.
Enabling the Composer Repository
注意:仅当您的 GitLab 管理员启用了对 Package Registry 的支持时,此选项才可用.
启用 Composer 信息库后,默认情况下它将可用于所有新项目. 要为现有项目启用它,或者要禁用它:
- 导航到项目的"设置">"常规">"可见性,项目功能,权限" .
 - 找到"软件包"功能并启用或禁用它.
 - 单击保存更改以使更改生效.
 
然后,您应该能够在左侧栏中看到" 程序包和注册表"部分.
Getting started
本节将介绍如何创建一个新的示例 Composer 软件包进行发布. 这是测试GitLab Composer 注册表的快速入门.
您将需要最新版本的Composer .
Creating a package project
了解如何创建完整的 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
现在,我们的项目基础已经完成,我们可以发布该软件包了. 为此,您将需要以下内容:
- 个人访问令牌. 您可以生成范围设置为
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' 
Where:
<personal-access-token>是您的个人访问令牌.<project_id>是您的项目 ID.<tag>是您要发布的版本的 Git 标记名称. 在此示例中,它应为v1.0.0. 请注意,除了使用tag=<tag>您还可以使用branch=<branch>来发布分支.
如果上面的命令成功执行,您现在应该可以在项目页面的" 程序包和注册表"部分下看到该程序包.
Installing a package
要安装您的软件包,您需要:
- 个人访问令牌. 您可以生成范围设置为
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>"  },  ...  } 
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工具与您的个人访问令牌一起使用,并将其存储在GitLab CI / CD 环境变量或Hashicorp Vault 中 .