多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 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) .