{{< details >}}
- Tier: 基础版, 专业版, 旗舰版
- Offering: JihuLab.com, 私有化部署
{{< /details >}}
{{< history >}}
- 引入于极狐GitLab 17.11,使用名为
conan_package_revisions_support
的功能标志。默认禁用。
{{< /history >}}
{{< alert type=”flag” >}}
此功能的可用性受控于功能标志。更多详情,可查看历史。
{{< /alert >}}
{{< alert type=”note” >}}
For Conan v1 operations, see Conan v1 API.
{{< /alert >}}
使用此 API 与 Conan v2 软件包管理器进行交互。有关更多信息,请参阅软件包注册表中的 Conan 软件包或Conan 2 软件包管理器客户端。
通常,这些端点由 Conan 2 软件包管理器客户端使用,并不用于手动消费。
{{< alert type=”note” >}}
-
这些端点不遵循标准的 API 身份验证方法。请查看每个路径以了解如何传递凭据。未来可能会删除未记录的身份验证方法。
-
Conan 注册表不符合 FIPS 规定,并在启用FIPS 模式时禁用。这些端点全部返回
404 Not Found
。
{{< /alert >}}
创建身份验证令牌
创建一个 JSON Web 令牌 (JWT),以在其他请求中用作 Bearer 头,使用 Conan v1 /authenticate
端点。
验证身份验证凭据
验证 Basic Auth 凭据或从 Conan v1 /authenticate
端点生成的 Conan JWT 的有效性。
GET /projects/:id/packages/conan/v2/users/check_credentials
属性 | 类型 | 必需 | 描述 |
---|---|---|---|
id |
string | 是 | 项目 ID 或完整项目路径。 |
curl --request GET \
--header "Authorization: Bearer <authenticate_token>" \
--url "https://gitlab.example.com/api/v4/projects/<project_id>/packages/conan/v2/users/check_credentials"
示例响应:
ok
搜索 Conan 软件包
在项目中搜索指定名称的 Conan 软件包。
GET /projects/:id/packages/conan/v2/conans/search?q=:query
属性 | 类型 | 必需 | 描述 |
---|---|---|---|
id |
string | 是 | 项目 ID 或完整项目路径。 |
query |
string | 是 | 搜索查询。您可以使用 * 作为通配符。 |
curl --request GET \
--header "Authorization: Bearer <authenticate_token>" \
--url "https://gitlab.example.com/api/v4/projects/9/packages/conan/v2/conans/search?q=Hello*"
示例响应:
{
"results": [
"Hello/0.1@foo+conan_test_prod/beta",
"Hello/0.1@foo+conan_test_prod/stable",
"Hello/0.2@foo+conan_test_prod/beta",
"Hello/0.3@foo+conan_test_prod/beta",
"Hello/0.1@foo+conan-reference-test/stable",
"HelloWorld/0.1@baz+conan-reference-test/beta"
"hello-world/0.4@buz+conan-test/alpha"
]
}
获取最新配方修订
获取最新软件包配方的修订哈希和创建日期。
GET /projects/:id/packages/conan/v2/conans/:package_name/:package_version/:package_username/:package_channel/latest
属性 | 类型 | 必需 | 描述 |
---|---|---|---|
id |
string | 是 | 项目 ID 或完整项目路径。 |
package_name |
string | 是 | 软件包名称。 |
package_version |
string | 是 | 软件包版本。 |
package_username |
string | 是 | 软件包的 Conan 用户名。此属性是项目的 + 分隔完整路径。 |
package_channel |
string | 是 | 软件包的渠道。 |
curl --request GET \
--header "Authorization: Bearer <authenticate_token>" \
--url "https://gitlab.example.com/api/v4/projects/9/packages/conan/v2/conans/my-package/1.0/my-group+my-project/stable/latest"
示例响应:
{
"revision" : "75151329520e7685dcf5da49ded2fec0",
"time" : "2024-12-17T09:16:40.334+0000"
}
列出所有配方修订
列出软件包配方的所有修订。
GET /projects/:id/packages/conan/v2/conans/:package_name/:package_version/:package_username/:package_channel/revisions
属性 | 类型 | 必需 | 描述 |
---|---|---|---|
id |
string | 是 | 项目 ID 或完整项目路径。 |
package_name |
string | 是 | 软件包名称。 |
package_version |
string | 是 | 软件包版本。 |
package_username |
string | 是 | 软件包的 Conan 用户名。此属性是项目的 + 分隔完整路径。 |
package_channel |
string | 是 | 软件包的渠道。 |
curl --request GET \
--header "Authorization: Bearer <authenticate_token>" \
--url "https://gitlab.example.com/api/v4/projects/9/packages/conan/v2/conans/my-package/1.0/my-group+my-project/stable/revisions"
示例响应:
{
"reference": "my-package/1.0@my-group+my-project/stable",
"revisions": [
{
"revision": "75151329520e7685dcf5da49ded2fec0",
"time": "2024-12-17T09:16:40.334+0000"
},
{
"revision": "df28fd816be3a119de5ce4d374436b25",
"time": "2024-12-17T09:15:30.123+0000"
}
]
}
列出所有配方文件
从软件包注册表中列出所有配方文件。
GET /projects/:id/packages/conan/v2/conans/:package_name/:package_version/:package_username/:package_channel/revisions/:recipe_revision/files
属性 | 类型 | 必需 | 描述 |
---|---|---|---|
id |
string | 是 | 项目 ID 或完整项目路径。 |
package_name |
string | 是 | 软件包名称。 |
package_version |
string | 是 | 软件包版本。 |
package_username |
string | 是 | 软件包的 Conan 用户名。此属性是项目的 + 分隔完整路径。 |
package_channel |
string | 是 | 软件包的渠道。 |
recipe_revision |
string | 是 | 配方的修订版。不接受 0 的值。 |
curl --request GET \
--header "Authorization: Bearer <authenticate_token>" \
--url "https://gitlab.example.com/api/v4/projects/9/packages/conan/v2/conans/my-package/1.0/my-username/stable/revisions/df28fd816be3a119de5ce4d374436b25/files"
示例响应:
{
"files": {
"conan_sources.tgz": {},
"conanfile.py": {},
"conanmanifest.txt": {}
}
}
获取配方文件
从软件包注册表中获取配方文件。
GET /projects/:id/packages/conan/v2/conans/:package_name/:package_version/:package_username/:package_channel/revisions/:recipe_revision/files/:file_name
属性 | 类型 | 必需 | 描述 |
---|---|---|---|
id |
string | 是 | 项目 ID 或完整项目路径。 |
package_name |
string | 是 | 软件包名称。 |
package_version |
string | 是 | 软件包版本。 |
package_username |
string | 是 | 软件包的 Conan 用户名。此属性是项目的 + 分隔完整路径。 |
package_channel |
string | 是 | 软件包的渠道。 |
recipe_revision |
string | 是 | 配方的修订版。不接受 0 的值。 |
file_name |
string | 是 | 请求文件的名称和文件扩展名。 |
curl --request GET \
--header "Authorization: Bearer <authenticate_token>" \
--url "https://gitlab.example.com/api/v4/projects/9/packages/conan/v2/conans/my-package/1.0/my-username/stable/revisions/df28fd816be3a119de5ce4d374436b25/files/conanfile.py"
您还可以使用以下命令将输出写入文件:
curl --request GET \
--header "Authorization: Bearer <authenticate_token>" \
--url "https://gitlab.example.com/api/v4/projects/9/packages/conan/v2/conans/my-package/1.0/my-username/stable/revisions/df28fd816be3a119de5ce4d374436b25/files/conanfile.py" \
>> conanfile.py
此示例将写入当前目录中的 conanfile.py
。
上传配方文件
将配方文件上传到软件包注册表。
PUT /projects/:id/packages/conan/v2/conans/:package_name/:package_version/:package_username/:package_channel/revisions/:recipe_revision/files/:file_name
属性 | 类型 | 必需 | 描述 |
---|---|---|---|
id |
string | 是 | 项目 ID 或完整项目路径。 |
package_name |
string | 是 | 软件包名称。 |
package_version |
string | 是 | 软件包版本。 |
package_username |
string | 是 | 软件包的 Conan 用户名。此属性是项目的 + 分隔完整路径。 |
package_channel |
string | 是 | 软件包的渠道。 |
recipe_revision |
string | 是 | 配方的修订版。不接受 0 的值。 |
file_name |
string | 是 | 请求文件的名称和文件扩展名。 |
curl --request PUT \
--header "Authorization: Bearer <authenticate_token>" \
--upload-file path/to/conanfile.py \
--url "https://gitlab.example.com/api/v4/projects/9/packages/conan/v2/conans/upload-v2-package/1.0.0/user/stable/revisions/123456789012345678901234567890ab/files/conanfile.py"
示例响应:
{
"id": 38,
"package_id": 28,
"created_at": "2025-04-07T12:35:40.841Z",
"updated_at": "2025-04-07T12:35:40.841Z",
"size": 24,
"file_store": 1,
"file_md5": "131f806af123b497209a516f46d12ffd",
"file_sha1": "01b992b2b1976a3f4c1e5294d0cab549cd438502",
"file_name": "conanfile.py",
"file": {
"url": "/94/00/9400f1b21cb527d7fa3d3eabba93557a18ebe7a2ca4e471cfe5e4c5b4ca7f767/packages/28/files/38/conanfile.py"
},
"file_sha256": null,
"verification_retry_at": null,
"verified_at": null,
"verification_failure": null,
"verification_retry_count": null,
"verification_checksum": null,
"verification_state": 0,
"verification_started_at": null,
"status": "default",
"file_final_path": null,
"project_id": 9,
"new_file_path": null
}
上传软件包文件
将软件包文件上传到软件包注册表。
PUT /projects/:id/packages/conan/v2/conans/:package_name/:package_version/:package_username/:package_channel/revisions/:recipe_revision/packages/:conan_package_reference/revisions/:package_revision/files/:file_name
属性 | 类型 | 必需 | 描述 |
---|---|---|---|
id |
string | 是 | 项目 ID 或完整项目路径。 |
package_name |
string | 是 | 软件包名称。 |
package_version |
string | 是 | 软件包版本。 |
package_username |
string | 是 | 软件包的 Conan 用户名。此属性是项目的 + 分隔完整路径。 |
package_channel |
string | 是 | 软件包的渠道。 |
recipe_revision |
string | 是 | 配方的修订版。不接受 0 的值。 |
conan_package_reference |
string | 是 | Conan 软件包的引用哈希。Conan 生成此值。 |
package_revision |
string | 是 | 软件包的修订版。不接受 0 的值。 |
file_name |
string | 是 | 请求文件的名称和文件扩展名。 |
在请求体中提供文件内容:
curl --request PUT \
--header "Authorization: Bearer <authenticate_token>" \
--upload-file path/to/conaninfo.txt \
--url "https://gitlab.example.com/api/v4/projects/9/packages/conan/v2/conans/my-package/1.0/my-group+my-project/stable/revisions/75151329520e7685dcf5da49ded2fec0/packages/103f6067a947f366ef91fc1b7da351c588d1827f/revisions/3bdd2d8c8e76c876ebd1ac0469a4e72c/files/conaninfo.txt"
示例响应:
{
"id": 202,
"package_id": 48,
"created_at": "2025-03-19T10:06:53.626Z",
"updated_at": "2025-03-19T10:06:53.626Z",
"size": 208,
"file_store": 1,
"file_md5": "bf996313bbdd75944b58f8c673661d99",
"file_sha1": "02c8adf14c94135fb95d472f96525063efe09ee8",
"file_name": "conaninfo.txt",
"file": {
"url": "/94/00/9400f1b21cb527d7fa3d3eabba93557a18ebe7a2ca4e471cfe5e4c5b4ca7f767/packages/48/files/202/conaninfo.txt"
},
"file_sha256": null,
"verification_retry_at": null,
"verified_at": null,
"verification_failure": null,
"verification_retry_count": null,
"verification_checksum": null,
"verification_state": 0,
"verification_started_at": null,
"status": "default",
"file_final_path": null,
"project_id": 9,
"new_file_path": null
}