包注册表¶
Node 和 Python 数据源会安装自己的代码及其依赖。Admin → 包注册表决定它们从哪里安装:组织的 npm 注册表、PyPI 索引和 Git 主机。组织管理员只需填写一次,组织内的每次 Node 和 Python 安装都会使用它们。公共 npm 注册表和公共 PyPI 无需填写。
每个字段保存所输入的内容:一个值,或 ${secret:npm_token}、${env:NPM_TOKEN} 这样的引用,每次安装时在组织自己的保管库中解析。解析不出任何内容的引用会中止安装,并指出注册表和字段。Provisa 从不写入保管库,也从不自拟密钥名称。参见密钥。
npm 注册表¶
| 字段 | 内容 |
|---|---|
| 注册表 URL | 注册表的地址,例如 https://artifactory.example.com/artifactory/api/npm/npm/ |
| 作用域 | 例如 @acme,该作用域的包从此注册表获取。没有则留空 |
| 令牌或 user:password | 访问令牌,或 user:password |
| 作为每次安装的镜像 | 没有自身作用域的包都通过此注册表安装。每个组织一个 |
| 证书颁发机构 (PEM) | 参见私有证书颁发机构 |
令牌以 _authToken 写入安装的 .npmrc,并作为 bearer 令牌发送。user:password(例如 Artifactory 用户及其 API 密钥)以 _auth(base64)写入,并以 Basic 方式发送。两者都只发送到注册表自己的主机。
PyPI 索引¶
| 字段 | 内容 |
|---|---|
| 索引 URL | 索引的 simple-index 地址,例如 https://artifactory.example.com/artifactory/api/pypi/pypi/simple/ |
| 令牌或 user:password | 访问令牌(以用户 __token__ 发送),或 user:password |
| 作为每次安装的默认索引 | 所有 Python 包都从此索引安装,而不是公共 PyPI。每个组织一个 |
| 证书颁发机构 (PEM) | 参见私有证书颁发机构 |
索引及其凭据只通过安装自己的环境传给 uv,从不写入文件。
Git 主机¶
Git 主机条目涵盖获取数据源代码或其 Git 依赖的仓库。
| 字段 | 内容 |
|---|---|
| 主机 | 主机,服务器有端口和路径前缀时一并填写:github.com、gitlab.example.com、bitbucket.example.com:7990/bitbucket |
| 令牌或 user:token | 令牌,或 user:token |
| 证书颁发机构 (PEM) | 参见私有证书颁发机构 |
仓库 URL 会匹配以其主机、端口和路径前缀开头的条目。多个条目匹配时,最长的胜出:bitbucket.example.com:7990/bitbucket/scm/data 的条目涵盖该项目,bitbucket.example.com:7990/bitbucket 的条目涵盖其余部分。
单独的令牌以用户 x-access-token 发送。其他提供商需要用户名,请输入 user:token:
| 提供商 | 用户 |
|---|---|
| GitHub | x-access-token,即默认值:只输入令牌 |
| GitLab | 任意非空用户名 |
| Bitbucket Cloud | 仓库或工作区访问令牌用 x-token-auth;API 令牌用您的用户名或电子邮件 |
| Bitbucket Data Center | 您的用户名;项目或仓库令牌用 x-token-auth |
私有证书颁发机构¶
位于您自己的证书颁发机构之后的注册表、索引或 Git 服务器(例如您网络内的 Artifactory 代理)需要信任该机构。将其 PEM 证书粘贴到条目的证书颁发机构 (PEM)字段中,或填写指向包含它的密钥的引用。证书受公共信任的服务器请留空。不含 PEM 证书的值在保存条目时会被拒绝;解析不出证书的引用在安装运行时会被拒绝。
该机构与公共信任的机构一起被信任,绝不取代它们:
- Provisa 通过该条目进行的获取(包的元数据和 tarball、wheel、Git 仓库)都会用它验证服务器。
- 安装期间,uv 通过
SSL_CERT_FILE读取它,npm 和 Bun 通过安装自己的.npmrc中的cafile读取,Deno 通过DENO_CERT,Git 通过GIT_SSL_CAINFO。
这些设置指向同一个文件,其中包含公共信任的机构和每个条目自己的机构。该文件写入安装的临时目录,并随之删除,因此安装之外的任何程序都不会读取它。