问题描述
您好,我在我们的项目中添加了一个 javascript 组件。该组件位于一个通用的 ui 存储库中。当我将此组件添加到 package.json 时,它在本地构建得很好,因为我有权通过 SSH 将其拉下来。但在 azure dev ops 中,我们拥有管道,但由于管道无法访问,因此无法构建。
例如:
主应用程序:位于https://visualstudio.com/app/_git/app/ 组件库位于 https://visualstudio.com/library/_git/Common-Library#tag-v1.0.3-gitpkg
因此,当我将库添加到我的 package.json 并将其推送到存储库时,在 npm install 上的 Dev Ops 中,MVN 构建失败
otf
package.json 示例
[INFO] npm ERR!
[INFO] npm ERR! Host key verification Failed.
[INFO] npm ERR! fatal: Could not read from remote repository.
[INFO] npm ERR!
我的理解是,我可以向 azure 添加一个 SSH 密钥以允许它拉下存储库,但我们的开发运营人员不希望那样做,因为那样 SSH 密钥就与那个人绑定了。
是否有其他方法可以使 MVN 构建可以访问存储库?
解决方法
另一种解决方法是直接在 url 中添加凭据(https 和 oauth),例如像这样:
"dependencies": {
"another-dependency": "git+https://<username>:<password>@bitbucket.org/xxx/repo.git"
}
它有一个缺点,因为我们将凭证直接以纯文本形式存储在 package.json
文件中,如果其他人可以访问您的 package.json
文件,则缺乏安全性。因此,是否使用此解决方法取决于您。
如果您不想使用纯文本,您可以在 npm 安装步骤之前添加一个 File Transform 任务,用新的认证网址替换旧网址。
定义一个值为 dependencies.another-dependency
的 git+https://<username>:<password>@xxx.org/...
变量,并将其设置为机密。
使用 File Transform
任务替换 package.json
文件中的 url。