Composer 制品库
958 字约 3 分钟
推送凭据配置
通过 cnb REST API 上传制品文件到 composer 制品库。如何获取 CNB_TOKEN
请参考创建访问令牌
配置 .netrc 以在使用 curl 命令时自动加载推送凭据
echo -e "\nmachine composer.cnb.cool\nlogin cnb\npassword <CNB_TOKEN>" >> ~/.netrc
或者直接在 curl 命令中显示指定推送凭据
curl -ucnb:<CNB_TOKEN> https://composer.cnb.cool/xxx... -T <PATH_TO_FILE>
拉取凭据配置
1.添加制品库地址到全局 config.json (通常位于 ~/.composer/config.json)。如何获取 CNB_COMPOSER_URL
请参考获取制品库地址
# 关闭默认官方源
composer config repos.packgist false -g
# 使用 cnb 源
composer config repos.cnb composer <CNB_COMPOSER_URL> -g
2.添加凭据到全局 auth.json (通常位于 ~/.composer/auth.json)
composer config http-basic.composer.cnb.cool cnb <CNB_TOKEN> -g
推送制品
1.粘贴以下内容到 composer.json, 避免打包认证信息和依赖
{
"archive": {
"exclude": ["auth.json", "composer.lock", "vendor"]
}
}
2.进入包目录, 打包 Composer 制品
composer archive -f zip --file package
3.发布到 CNB
注意:
- 如何获取
CNB_COMPOSER_URL
请参考获取制品库地址 <vendor>/<package>/<version>
需替换成当前包的对应值, 例如monolog/monolog/3.8.1
curl --netrc "<CNB_COMPOSER_URL>upload/<vendor>/<package>/<version>" -T package.zip
1.粘贴以下内容到 .cnb.yaml
注意:
CNB_COMPOSER_URL
需要被替换,如何获取请参考获取制品库地址<vendor>/<package>
需替换成当前包的对应值, 例如monolog/monolog
$:
tag_push:
- docker:
image: docker.cnb.cool/examples/language/php-8.4
stages:
- name: 配置认证凭据
script: echo -e "machine composer.cnb.cool\nlogin cnb\npassword ${CNB_TOKEN}" > ~/.netrc
- name: 打包 Composer 制品
script: composer archive -f zip --file package
- name: 发布到 CNB
script: curl --netrc -T package.zip "<CNB_COMPOSER_URL>upload/<vendor>/<package>/${CNB_BRANCH}"
2.粘贴以下内容到 composer.json, 避免打包认证信息和依赖
{
"archive": {
"exclude": ["auth.json", "composer.lock", "vendor"]
}
}
3.提交一个 Tag, 将会触发云原生构建, 注意: Tag 值将会作为制品版本号, 请使用语义版本号
1.粘贴以下内容到 composer.json, 避免打包认证信息和依赖
{
"archive": {
"exclude": ["auth.json", "composer.lock", "vendor"]
}
}
2.粘贴以下内容到 .cnb.yaml
, 提交到代码仓库后, 点击代码仓库页面右上角 「云原生开发」 按钮进入开发环境
$:
vscode:
- docker:
image: docker.cnb.cool/examples/language/php-8.4
services:
- vscode
- docker
3.进入开发环境后, 在命令行执行以下命令, 配置认证凭据
echo -e "machine composer.cnb.cool\nlogin cnb\npassword ${CNB_TOKEN}" > ~/.netrc
4.打包 Composer 制品
composer archive -f zip --file package
5.发布到 CNB
注意:
- 如何获取
CNB_COMPOSER_URL
请参考获取制品库地址 <vendor>/<package>/<version>
需替换成当前包的对应值, 例如monolog/monolog/3.8.1
curl --netrc -T package.zip "<CNB_COMPOSER_URL>upload/<vendor>/<package>/<version>"
使用制品
拉取制品
按照上文中拉取凭据配置 配置凭证后, 使用以下命令拉取制品
# 以 monolog/monolog 举例
composer require monolog/monolog
删除制品
composer 没有提供删除命令, 请参考删除制品
FQA
Q1: 上传制品抛错没有权限
示例:
curl --netrc <CNB_COMPOSER_URL>upload/monolog/monolog/3.8.0 -T monolog.zip
{"errcode":16,"errmsg":"not authorized"}
解决方案:
Q2: 上传制品抛错版本号格式不对
示例:
curl --netrc <CNB_COMPOSER_URL>upload/monolog/monolog/xxx3.8.0 -T monolog.zip
{"errcode":3,"errmsg":"validate [Version:xxx3.8.0] failed"}
解决方案:
请使用 语义版本号
Q3: 关于 composer 1.x
官方源在 2025 年 8 月 1 日, 已停止对 composer 1.x 的支持
cnb composer 制品库也推荐使用 composer 2.x 及以上版本的命令行
若您使用的是 composer 1.x 版本, 可通过 composer self-update
命令更新为 composer 2.x 的最新稳定版本.