credentials.json¶
警告
此功能是实验性的,可能会发生重大更改。有关更多信息,请参阅 Conan 稳定性 部分。
Conan 可以使用以下方式向其 Conan 远程服务器进行身份验证
交互式命令行,当某个服务器发起未授权错误时,Conan 客户端将交互式地请求用户名/密码并重试。
使用
conan remote login命令,身份验证可以通过传递参数或交互式方式完成。使用环境变量
CONAN_LOGIN_USERNAME用于所有远程仓库(CONAN_LOGIN_USERNAME_{REMOTE}用于单个远程仓库)和CONAN_PASSWORD(CONAN_PASSWORD_{REMOTE}用于单个远程仓库),Conan 在必要时不会在命令行中请求交互式输入,而是将值从环境变量中获取,就像用户提供的一样。使用放置在 Conan 缓存中的
credentials.json文件。使用自定义 auth 插件。
本节描述了 credentials.json 文件的使用方法。
该文件具有以下格式,其中每个 credentials 条目都应具有一个 remote 名称,该名称与在 conan remote list 中定义的名称匹配。然后,是 user 和 password 字段。
{
"credentials": [
{
"remote": "default",
"user": "admin",
"password": "password"
}
]
}
当服务器需要并请求时,Conan 将能够从此文件自动提取凭据。
注意
Conan 不会主动使用凭据来强制登录每个 Conan 命令中定义的每个远程仓库。默认情况下,Conan 使用先前存储的令牌或匿名使用,直到执行明确的 conan remote login 命令,或者直到远程服务器发起身份验证错误。发生这种情况时,将使用 credentials.json 文件、环境变量或用户交互式输入对该服务器进行身份验证。
凭据来源的优先级如下
如果
credentials.json文件存在,则优先级更高,如果存在该远程仓库的条目,则将使用它。如果不起作用,则会出错。如果
credentials.json中没有该远程仓库的条目,它将查找定义的环境变量如果环境变量不存在,它将交互式地请求凭据。如果
core:non_interactive=True,则会出错。
credentials.json 文件使用注入的 platform 和 os 导入进行 jinja 渲染,因此它允许使用 jinja 语法。例如,它可以执行以下操作以从环境变量获取凭据
{% set myuser = os.getenv('myuser') %}
{% set mytk = os.getenv('mytoken') %}
{
"credentials": [
{
"remote": "myremote",
"user": "{{myuser}}"
"password": "{{mytk}}"
}
]
}
另请参阅