Help us learn about your current experience with the documentation. Take the survey.

Conan v1 API

  • Tier: Free, Premium, Ultimate
  • Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated

关于 Conan v2 操作,请参阅 Conan v2 API

使用此 API 与 Conan v1 包管理器进行交互。这些端点适用于项目和实例。更多信息,请参阅包注册表中的 Conan 包

通常,这些端点由 Conan 1 包管理器客户端使用,不适用于手动调用。

  • 这些端点不遵循标准 API 身份验证方法。请参阅每个路由以了解如何传递凭据的详细信息。未记录的身份验证方法将来可能会被移除。

  • Conan 注册表不符合 FIPS 标准,在启用 FIPS 模式时会被禁用。这些端点都返回 404 Not Found

创建身份验证令牌

创建一个 JSON Web Token (JWT),用作 Conan 包管理器客户端其他请求中的 Bearer 头部。

"Authorization: Bearer <authenticate_token>"
GET /packages/conan/v1/users/authenticate
GET /projects/:id/packages/conan/v1/users/authenticate
属性 类型 必需 描述
id string 有条件 项目 ID 或完整项目路径。仅对项目端点必需。
curl --user <username>:<your_access_token> \
     --url "https://gitlab.example.com/api/v4/packages/conan/v1/users/authenticate"

示例响应:

eyJhbGciOiJIUzI1NiIiheR5cCI6IkpXVCJ9.eyJhY2Nlc3NfdG9rZW4iOjMyMTQyMzAsqaVzZXJfaWQiOjQwNTkyNTQsImp0aSI6IjdlNzBiZTNjLWFlNWQtNDEyOC1hMmIyLWZiOThhZWM0MWM2OSIsImlhd3r1MTYxNjYyMzQzNSwibmJmIjoxNjE2NjIzNDMwLCJleHAiOjE2MTY2MjcwMzV9.QF0Q3ZIB2GW5zNKyMSIe0HIFOITjEsZEioR-27Rtu7E

验证 Conan 存储库的可用性

验证 GitLab Conan 存储库的可用性。

GET /packages/conan/v1/ping
GET /projects/:id/packages/conan/v1/ping
属性 类型 必需 描述
id string 有条件 项目 ID 或完整项目路径。仅对项目端点必需。
curl --url "https://gitlab.example.com/api/v4/packages/conan/v1/ping"

示例响应:

""

搜索 Conan 包

在实例中搜索具有指定名称的 Conan 包。

GET /packages/conan/v1/conans/search
GET /projects/:id/packages/conan/v1/conans/search
属性 类型 必需 描述
id string 有条件 项目 ID 或完整项目路径。仅对项目端点必需。
q string 搜索查询。您可以使用 * 作为通配符。
curl --user <username>:<your_access_token> \
     --url "https://gitlab.example.com/api/v4/packages/conan/v1/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"
  ]
}

验证身份验证凭据

验证 Basic Auth 凭据或从 /authenticate 端点生成的 Conan JWT 的有效性。

GET /packages/conan/v1/users/check_credentials
GET /projects/:id/packages/conan/v1/users/check_credentials
属性 类型 必需 描述
id string 有条件 项目 ID 或完整项目路径。仅对项目端点必需。
curl --header "Authorization: Bearer <authenticate_token>" \
     --url "https://gitlab.example.com/api/v4/packages/conan/v1/users/check_credentials"

示例响应:

ok

获取配方快照

获取指定 Conan 配方的文件快照。快照是文件名及其关联 MD5 哈希的列表。

GET /packages/conan/v1/conans/:package_name/:package_version/:package_username/:package_channel
GET /projects/:id/packages/conan/v1/conans/:package_version/:package_username/:package_channel
属性 类型 必需 描述
id string 有条件 项目 ID 或完整项目路径。仅对项目端点必需。
package_name string 包的名称。
package_version string 包的版本。
package_username string 包的 Conan 用户名。此属性是项目的 + 分隔的完整路径。
package_channel string 包的通道。
curl --header "Authorization: Bearer <authenticate_token>" \
     --url "https://gitlab.example.com/api/v4/packages/conan/v1/conans/my-package/1.0/my-group+my-project/stable"

示例响应:

{
  "conan_sources.tgz": "eadf19b33f4c3c7e113faabf26e76277",
  "conanfile.py": "25e55b96a28f81a14ba8e8a8c99eeace",
  "conanmanifest.txt": "5b6fd77a2ba14303ce4cdb08c87e82ab"
}

获取包快照

获取指定 Conan 包和引用的文件快照。快照是文件名及其关联 MD5 哈希的列表。

GET /packages/conan/v1/conans/:package_name/:package_version/:package_username/:package_channel/packages/:conan_package_reference
GET /projects/:id/packages/conan/v1/conans/:package_name/:package_version/:package_username/:package_channel/packages/:conan_package_reference
属性 类型 必需 描述
id string 有条件 项目 ID 或完整项目路径。仅对项目端点必需。
package_name string 包的名称。
package_version string 包的版本。
package_username string 包的 Conan 用户名。此属性是项目的 + 分隔的完整路径。
package_channel string 包的通道。
conan_package_reference string Conan 包的引用哈希。Conan 生成此值。
curl --header "Authorization: Bearer <authenticate_token>" \
     --url "https://gitlab.example.com/api/v4/packages/conan/v1/conans/my-package/1.0/my-group+my-project/stable/packages/103f6067a947f366ef91fc1b7da351c588d1827f"

示例响应:

{
  "conan_package.tgz": "749b29bdf72587081ca03ec033ee59dc",
  "conaninfo.txt": "32859d737fe84e6a7ccfa4d64dc0d1f2",
  "conanmanifest.txt": "a86b398e813bd9aa111485a9054a2301"
}

获取配方清单

获取包含指定配方的文件列表和关联下载 URL 的清单。

GET /packages/conan/v1/conans/:package_name/:package_version/:package_username/:package_channel/digest
GET /projects/:id/packages/conan/v1/conans/:package_name/:package_version/:package_username/:package_channel/digest
属性 类型 必需 描述
id string 有条件 项目 ID 或完整项目路径。仅对项目端点必需。
package_name string 包的名称。
package_version string 包的版本。
package_username string 包的 Conan 用户名。此属性是项目的 + 分隔的完整路径。
package_channel string 包的通道。
curl --header "Authorization: Bearer <authenticate_token>" \
     --url "https://gitlab.example.com/api/v4/packages/conan/v1/conans/my-package/1.0/my-group+my-project/stable/digest"

示例响应:

{
  "conan_sources.tgz": "https://gitlab.example.com/api/v4/packages/conan/v1/files/my-package/1.0/my-group+my-project/stable/0/export/conan_sources.tgz",
  "conanfile.py": "https://gitlab.example.com/api/v4/packages/conan/v1/files/my-package/1.0/my-group+my-project/stable/0/export/conanfile.py",
  "conanmanifest.txt": "https://gitlab.example.com/api/v4/packages/conan/v1/files/my-package/1.0/my-group+my-project/stable/0/export/conanmanifest.txt"
}

获取包清单

获取包含指定包的文件列表和关联下载 URL 的清单。

GET /packages/conan/v1/conans/:package_name/:package_version/:package_username/:package_channel/packages/:conan_package_reference/digest
GET /projects/:id/packages/conan/v1/conans/:package_name/:package_version/:package_username/:package_channel/packages/:conan_package_reference/digest
属性 类型 必需 描述
id string 有条件 项目 ID 或完整项目路径。仅对项目端点必需。
package_name string 包的名称。
package_version string 包的版本。
package_username string 包的 Conan 用户名。此属性是项目的 + 分隔的完整路径。
package_channel string 包的通道。
conan_package_reference string Conan 包的引用哈希。Conan 生成此值。
curl --header "Authorization: Bearer <authenticate_token>" \
     --url "https://gitlab.example.com/api/v4/packages/conan/v1/conans/my-package/1.0/my-group+my-project/stable/packages/103f6067a947f366ef91fc1b7da351c588d1827f/digest"

示例响应:

{
  "conan_package.tgz": "https://gitlab.example.com/api/v4/packages/conan/v1/files/my-package/1.0/my-group+my-project/stable/packages/103f6067a947f366ef91fc1b7da351c588d1827f/0/conan_package.tgz",
  "conaninfo.txt": "https://gitlab.example.com/api/v4/packages/conan/v1/files/my-package/1.0/my-group+my-project/stable/packages/103f6067a947f366ef91fc1b7da351c588d1827f/0/conaninfo.txt",
  "conanmanifest.txt": "https://gitlab.example.com/api/v4/packages/conan/v1/files/my-package/1.0/my-group+my-project/stable/packages/103f6067a947f366ef91fc1b7da351c588d1827f/0/conanmanifest.txt"
}

列出所有配方下载 URL

列出指定配方的所有文件和关联下载 URL。 返回与配方清单端点相同的有效负载。

GET /packages/conan/v1/conans/:package_name/:package_version/:package_username/:package_channel/download_urls
GET /projects/:id/packages/conan/v1/conans/:package_name/:package_version/:package_username/:package_channel/download_urls
属性 类型 必需 描述
id string 有条件 项目 ID 或完整项目路径。仅对项目端点必需。
package_name string 包的名称。
package_version string 包的版本。
package_username string 包的 Conan 用户名。此属性是项目的 + 分隔的完整路径。
package_channel string 包的通道。
curl --header "Authorization: Bearer <authenticate_token>" \
     --url "https://gitlab.example.com/api/v4/packages/conan/v1/conans/my-package/1.0/my-group+my-project/stable/digest"

示例响应:

{
  "conan_sources.tgz": "https://gitlab.example.com/api/v4/packages/conan/v1/files/my-package/1.0/my-group+my-project/stable/0/export/conan_sources.tgz",
  "conanfile.py": "https://gitlab.example.com/api/v4/packages/conan/v1/files/my-package/1.0/my-group+my-project/stable/0/export/conanfile.py",
  "conanmanifest.txt": "https://gitlab.example.com/api/v4/packages/conan/v1/files/my-package/1.0/my-group+my-project/stable/0/export/conanmanifest.txt"
}

列出所有包下载 URL

列出指定包的所有文件和关联下载 URL。 返回与包清单端点相同的有效负载。

GET /packages/conan/v1/conans/:package_name/:package_version/:package_username/:package_channel/packages/:conan_package_reference/download_urls
GET /projects/:id/packages/conan/v1/conans/:package_name/:package_version/:package_username/:package_channel/packages/:conan_package_reference/download_urls
属性 类型 必需 描述
id string 有条件 项目 ID 或完整项目路径。仅对项目端点必需。
package_name string 包的名称。
package_version string 包的版本。
package_username string 包的 Conan 用户名。此属性是项目的 + 分隔的完整路径。
package_channel string 包的通道。
conan_package_reference string Conan 包的引用哈希。Conan 生成此值。
curl --header "Authorization: Bearer <authenticate_token>" \
     --url "https://gitlab.example.com/api/v4/packages/conan/v1/conans/my-package/1.0/my-group+my-project/stable/packages/103f6067a947f366ef91fc1b7da351c588d1827f/download_urls"

示例响应:

{
  "conan_package.tgz": "https://gitlab.example.com/api/v4/packages/conan/v1/files/my-package/1.0/my-group+my-project/stable/packages/103f6067a947f366ef91fc1b7da351c588d1827f/0/conan_package.tgz",
  "conaninfo.txt": "https://gitlab.example.com/api/v4/packages/conan/v1/files/my-package/1.0/my-group+my-project/stable/packages/103f6067a947f366ef91fc1b7da351c588d1827f/0/conaninfo.txt",
  "conanmanifest.txt": "https://gitlab.example.com/api/v4/packages/conan/v1/files/my-package/1.0/my-group+my-project/stable/packages/103f6067a947f366ef91fc1b7da351c588d1827f/0/conanmanifest.txt"
}

列出所有配方上传 URL

列出指定配方文件集合的上传 URL。请求必须包含一个 JSON 对象,其中包含各个文件的名称和大小。

POST /packages/conan/v1/conans/:package_name/:package_version/:package_username/:package_channel/upload_urls
POST /projects/:id/packages/conan/v1/conans/:package_name/:package_version/:package_username/:package_channel/upload_urls
属性 类型 必需 描述
id string 有条件 项目 ID 或完整项目路径。仅对项目端点必需。
package_name string 包的名称。
package_version string 包的版本。
package_username string 包的 Conan 用户名。此属性是项目的 + 分隔的完整路径。
package_channel string 包的通道。

示例请求 JSON 有效负载:

有效负载必须包含文件的名称和大小。

{
  "conanfile.py": 410,
  "conanmanifest.txt": 130
}
curl --request POST \
     --header "Authorization: Bearer <authenticate_token>" \
     --header "Content-Type: application/json" \
     --data '{"conanfile.py":410,"conanmanifest.txt":130}' \
     --url "https://gitlab.example.com/api/v4/packages/conan/v1/conans/my-package/1.0/my-group+my-project/stable/upload_urls"

示例响应:

{
  "conanfile.py": "https://gitlab.example.com/api/v4/packages/conan/v1/files/my-package/1.0/my-group+my-project/stable/0/export/conanfile.py",
  "conanmanifest.txt": "https://gitlab.example.com/api/v4/packages/conan/v1/files/my-package/1.0/my-group+my-project/stable/0/export/conanmanifest.txt"
}

列出所有包上传 URL

列出指定包文件集合的上传 URL。请求必须包含一个 JSON 对象,其中包含各个文件的名称和大小。

POST /packages/conan/v1/conans/:package_name/:package_version/:package_username/:package_channel/packages/:conan_package_reference/upload_urls
POST /projects/:id/packages/conan/v1/conans/:package_name/:package_version/:package_username/:package_channel/packages/:conan_package_reference/upload_urls
属性 类型 必需 描述
id string 有条件 项目 ID 或完整项目路径。仅对项目端点必需。
package_name string 包的名称。
package_version string 包的版本。
package_username string 包的 Conan 用户名。此属性是项目的 + 分隔的完整路径。
package_channel string 包的通道。
conan_package_reference string Conan 包的引用哈希。Conan 生成此值。

示例请求 JSON 有效负载:

有效负载必须包含文件的名称和大小。

{
  "conan_package.tgz": 5412,
  "conanmanifest.txt": 130,
  "conaninfo.txt": 210
}
curl --request POST \
     --header "Authorization: Bearer <authenticate_token>" \
     --header "Content-Type: application/json" \
     --data '{"conan_package.tgz":5412,"conanmanifest.txt":130,"conaninfo.txt":210}' \
     --url "https://gitlab.example.com/api/v4/packages/conan/v1/conans/my-package/1.0/my-group+my-project/stable/packages/103f6067a947f366ef91fc1b7da351c588d1827f/upload_urls"

示例响应:

{
  "conan_package.tgz": "https://gitlab.example.com/api/v4/packages/conan/v1/files/my-package/1.0/my-group+my-project/stable/0/package/103f6067a947f366ef91fc1b7da351c588d1827f/0/conan_package.tgz",
  "conanmanifest.txt": "https://gitlab.example.com/api/v4/packages/conan/v1/files/my-package/1.0/my-group+my-project/stable/0/package/103f6067a947f366ef91fc1b7da351c588d1827f/0/conanmanifest.txt",
  "conaninfo.txt": "https://gitlab.example.com/api/v4/packages/conan/v1/files/my-package/1.0/my-group+my-project/stable/0/package/103f6067a947f366ef91fc1b7da351c588d1827f/0/conaninfo.txt"
}

获取配方文件

从包注册表获取配方文件。您必须使用从配方下载 URL端点返回的下载 URL。

GET /packages/conan/v1/files/:package_name/:package_version/:package_username/:package_channel/:recipe_revision/export/:file_name
GET /projects/:id/packages/conan/v1/files/:package_name/:package_version/:package_username/:package_channel/:recipe_revision/export/:file_name
属性 类型 必需 描述
id string 有条件 项目 ID 或完整项目路径。仅对项目端点必需。
package_name string 包的名称。
package_version string 包的版本。
package_username string 包的 Conan 用户名。此属性是项目的 + 分隔的完整路径。
package_channel string 包的通道。
recipe_revision string 配方的修订版本。GitLab 尚不支持 Conan 修订版本,因此始终使用默认值 0
file_name string 所请求文件的名称和文件扩展名。
curl --header "Authorization: Bearer <authenticate_token>" \
     --url "https://gitlab.example.com/api/v4/packages/conan/v1/files/my-package/1.0/my-group+my-project/stable/0/export/conanfile.py"

您也可以使用以下命令将输出写入文件:

curl --header "Authorization: Bearer <authenticate_token>" \
     --url "https://gitlab.example.com/api/v4/packages/conan/v1/files/my-package/1.0/my-group+my-project/stable/0/export/conanfile.py" \
     >> conanfile.py

此示例将输出写入当前目录中的 conanfile.py

上传配方文件

在包注册表中上传指定的配方文件。您必须使用从配方上传 URL端点返回的上传 URL。

PUT /packages/conan/v1/files/:package_name/:package_version/:package_username/:package_channel/:recipe_revision/export/:file_name
PUT /projects/:id/packages/conan/v1/files/:package_name/:package_version/:package_username/:package_channel/:recipe_revision/export/:file_name
属性 类型 必需 描述
id string 有条件 项目 ID 或完整项目路径。仅对项目端点必需。
package_name string 包的名称。
package_version string 包的版本。
package_username string 包的 Conan 用户名。此属性是项目的 + 分隔的完整路径。
package_channel string 包的通道。
recipe_revision string 配方的修订版本。GitLab 尚不支持 Conan 修订版本,因此始终使用默认值 0
file_name string 所请求文件的名称和文件扩展名。

在请求正文中提供文件上下文:

curl --request PUT \
     --user <username>:<personal_access_token> \
     --upload-file path/to/conanfile.py \
     --url "https://gitlab.example.com/api/v4/packages/conan/v1/files/my-package/1.0/my-group+my-project/stable/0/export/conanfile.py"

获取包文件

从包注册表获取包文件。您必须使用从包下载 URL端点返回的下载 URL。

GET /packages/conan/v1/files/:package_name/:package_version/:package_username/:package_channel/:recipe_revision/package/:conan_package_reference/:package_revision/:file_name
GET /projects/:id/packages/conan/v1/files/:package_name/:package_version/:package_username/:package_channel/:recipe_revision/package/:conan_package_reference/:package_revision/:file_name
属性 类型 必需 描述
id string 有条件 项目 ID 或完整项目路径。仅对项目端点必需。
package_name string 包的名称。
package_version string 包的版本。
package_username string 包的 Conan 用户名。此属性是项目的 + 分隔的完整路径。
package_channel string 包的通道。
recipe_revision string 配方的修订版本。GitLab 尚不支持 Conan 修订版本,因此始终使用默认值 0
conan_package_reference string Conan 包的引用哈希。Conan 生成此值。
package_revision string 包的修订版本。GitLab 尚不支持 Conan 修订版本,因此始终使用默认值 0
file_name string 所请求文件的名称和文件扩展名。
curl --header "Authorization: Bearer <authenticate_token>" \
     --url "https://gitlab.example.com/api/v4/packages/conan/v1/files/my-package/1.0/my-group+my-project/stable/packages/103f6067a947f366ef91fc1b7da351c588d1827f/0/conaninfo.txt"

您也可以使用以下命令将输出写入文件:

curl --header "Authorization: Bearer <authenticate_token>" \
     --url "https://gitlab.example.com/api/v4/packages/conan/v1/files/my-package/1.0/my-group+my-project/stable/packages/103f6067a947f366ef91fc1b7da351c588d1827f/0/conaninfo.txt" \
     >> conaninfo.txt

此示例将输出写入当前目录中的 conaninfo.txt

上传包文件

在包注册表中上传指定的包文件。您必须使用从包上传 URL端点返回的上传 URL。

PUT /packages/conan/v1/files/:package_name/:package_version/:package_username/:package_channel/:recipe_revision/package/:conan_package_reference/:package_revision/:file_name
PUT /projects/:id/packages/conan/v1/files/:package_name/:package_version/:package_username/:package_channel/:recipe_revision/package/:conan_package_reference/:package_revision/:file_name
属性 类型 必需 描述
id string 有条件 项目 ID 或完整项目路径。仅对项目端点必需。
package_name string 包的名称。
package_version string 包的版本。
package_username string 包的 Conan 用户名。此属性是项目的 + 分隔的完整路径。
package_channel string 包的通道。
recipe_revision string 配方的修订版本。GitLab 尚不支持 Conan 修订版本,因此始终使用默认值 0
conan_package_reference string Conan 包的引用哈希。Conan 生成此值。
package_revision string 包的修订版本。GitLab 尚不支持 Conan 修订版本,因此始终使用默认值 0
file_name string 所请求文件的名称和文件扩展名。

在请求正文中提供文件上下文:

curl --request PUT \
     --user <username>:<your_access_token> \
     --upload-file path/to/conaninfo.txt \
     --url "https://gitlab.example.com/api/v4/packages/conan/v1/files/my-package/1.0/my-group+my-project/stable/0/package/103f6067a947f366ef91fc1b7da351c588d1827f/0/conaninfo.txt"

删除配方和包

从包注册表中删除指定的 Conan 配方和关联的包文件。

DELETE /packages/conan/v1/conans/:package_name/:package_version/:package_username/:package_channel
DELETE /projects/:id/packages/conan/v1/conans/:package_name/:package_version/:package_username/:package_channel
属性 类型 必需 描述
id string 有条件 项目 ID 或完整项目路径。仅对项目端点必需。
package_name string 包的名称。
package_version string 包的版本。
package_username string 包的 Conan 用户名。此属性是项目的 + 分隔的完整路径。
package_channel string 包的通道。
curl --request DELETE \
     --header "Authorization: Bearer <authenticate_token>" \
     --url "https://gitlab.example.com/api/v4/packages/conan/v1/conans/my-package/1.0/my-group+my-project/stable"

示例响应:

{
  "id": 1,
  "project_id": 123,
  "created_at": "2020-08-19T13:17:28.655Z",
  "updated_at": "2020-08-19T13:17:28.655Z",
  "name": "my-package",
  "version": "1.0",
  "package_type": "conan",
  "creator_id": null,
  "status": "default"
}

获取包引用元数据

获取包的所有包引用的元数据。

GET /packages/conan/v1/conans/:package_name/:package_version/:package_username/:package_channel/search
GET /projects/:id/packages/conan/v1/conans/:package_name/:package_version/:package_username/:package_channel/search
属性 类型 必需 描述
id string 有条件 项目 ID 或完整项目路径。仅对项目端点必需。
package_name string 包的名称。
package_version string 包的版本。
package_username string 包的 Conan 用户名。此属性是项目的 + 分隔的完整路径。
package_channel string 包的通道。
curl --header "Authorization: Bearer <authenticate_token>" \
     --url "https://gitlab.example.com/api/v4/packages/conan/v1/conans/my-package/1.0/my-group+my-project/stable/search"

示例响应:

{
  "103f6067a947f366ef91fc1b7da351c588d1827f": {
    "settings": {
      "arch": "x86_64",
      "build_type": "Release",
      "compiler": "gcc",
      "compiler.libcxx": "libstdc++",
      "compiler.version": "9",
      "os": "Linux"
    },
    "options": {
      "shared": "False"
    },
    "requires": {
      "zlib/1.2.11": null
    },
    "recipe_hash": "75151329520e7685dcf5da49ded2fec0"
  }
}

响应包括每个包引用的以下元数据:

  • settings:用于包的构建设置。
  • options:包选项。
  • requires:包所需的依赖项。
  • recipe_hash:配方的哈希值。