{{< 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
  }