credentials.json

警告

此功能是实验性的,可能会发生重大更改。有关更多信息,请参阅Conan 的稳定性部分。

Conan 可以通过以下方式对其 Conan 远程服务器进行身份验证:

  • 交互式命令行:当某个服务器返回未经授权的错误时,Conan 客户端会交互式地询问用户/密码并重试。

  • 使用 conan remote login 命令:可以通过传递参数或交互式地进行身份验证。

  • 使用环境变量:通过设置适用于所有远程的 CONAN_LOGIN_USERNAME(或适用于单个远程的 CONAN_LOGIN_USERNAME_{REMOTE})和 CONAN_PASSWORD(或适用于单个远程的 CONAN_PASSWORD_{REMOTE}),Conan 在需要时将不会在命令行中交互式请求,而是直接从环境变量中获取值,如同用户提供的一样。

  • 通过将 credentials.json 文件放在 Conan 缓存中。

  • 使用自定义的认证插件

本节描述了 credentials.json 文件的用法。

该文件具有以下格式:每个 credentials 条目应包含一个 remote 名称,该名称应与 conan remote list 中定义的名称匹配。然后,包含 userpassword 字段。

{
    "credentials": [
        {
            "remote": "default",
            "user": "admin",
            "password": "password"
        }
    ]
}

当需要且服务器请求时,Conan 将能够自动从此文件中提取凭据。

注意

Conan 不会在每次 Conan 命令时主动使用凭据强制对每个定义的远程执行自动登录。默认情况下,Conan 使用先前存储的令牌或匿名访问,直到执行明确的 conan remote login 命令,或者远程服务器返回认证错误。发生这种情况时,将使用 credentials.json 文件、环境变量或用户交互式输入对该服务器进行认证。

凭据来源的优先级如下:

  • 如果 credentials.json 文件存在,其优先级最高,如果存在该远程的条目,将使用该条目。如果不起作用,将报告错误。

  • 如果 credentials.json 中不存在该远程的条目,Conan 将查找已定义的环境变量。

  • 如果环境变量不存在,它将交互式请求凭据。如果 core:non_interactive=True,则将报告错误。

credentials.json 文件通过注入 platformos 导入进行 jinja 渲染,因此允许使用 jinja 语法。例如,它可以执行以下操作从环境变量中获取凭据:

{% set myuser = os.getenv('myuser') %}
{% set mytk = os.getenv('mytoken') %}
{
    "credentials": [
        {
            "remote": "myremote",
            "user": "{{myuser}}"
            "password": "{{mytk}}"
        }
    ]
}