我在VS Team Services中设置了一些NodeJS项目的CI版本。我目前有四个项目是从私有Github存储库克隆的,运行npm install
并运行单元测试。因为我正在为VS Team Services构建一个用于克隆的存储库的访问令牌,所以这些构建都会通过。
第五个项目依赖于其他四个项目之一作为package.json
中的依赖项。尝试克隆私有存储库时,此项目的构建在npm install
上失败,因为构建没有克隆存储库的权限。如何在npm install
期间提供此构建访问权限以克隆我们的私有存储库?
我为五个项目中的每一个都有一个构建定义,每个项目都是Github上my-org
的单独存储库。在每个构建定义中,与Github的连接由个人访问令牌管理,存储库指向my-org/project-name
。第五个失败的构建中的项目的package.json
文件具有dependencies
配置,如下所示:
"dependencies": {
"project-name": "git+ssh://git@github.com/my-org/project-name.git#master",
"jquery": "^2.2.4",
"react": "^15.0.1",
"react-dom": "^15.0.1"
}
答案 0 :(得分:0)
问题是构建代理程序无法进行身份验证,因为构建代理程序上缺少SSH密钥,并且主机验证无论如何都会失败。
相反,您应该在GitHub上使用' repo'创建Personal Access Token。 仅范围,然后您应该在packages.json文件中使用它(请注意ssh
已替换为https
协议):
"project-name": "git+https://<user>:<token>@github.com/my-org/project-name.git#master",
答案 1 :(得分:0)
最近,我需要在基于Windows的代理上的Azure Devops中执行此操作,而不是更改依赖关系以将用户和令牌包含在package.json中,创建创建步骤以添加起来更加容易从环境变量到Windows凭据存储的身份验证信息,并指示git使用它。
git config --global credential.helper wincred
cmdkey /generic:LegacyGeneric:target=git:https://our-private-domain.com /user:git-readonly-use@our-private-domain.com /pass:"Personal Access Token With Read Permissions"
添加这些配置后,我们使用源代码中的脚本进行的Npm安装顺利完成
"dependencies": {
"example-1": "git+https://our-private-domain.com/proj/example-1.git#v0.1.9",
"example-2": "git+https://our-private-domain.com/proj/example-2.git#master"
}