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
中定义的名称匹配),以及 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
,则会报错。
以 jinja 渲染 credentials.json
文件时会注入 platform
和 os
导入,因此它允许使用 jinja 语法。例如,它可以执行以下操作以从环境变量中获取凭据:
{% set myuser = os.getenv('myuser') %}
{% set mytk = os.getenv('mytoken') %}
{
"credentials": [
{
"remote": "myremote",
"user": "{{myuser}}"
"password": "{{mytk}}"
}
]
}