来自Jenkins的NPM安装无法安装托管在BitBucket上的模块

5cg8jx4n  于 2022-09-20  发布在  Jenkins
关注(0)|答案(2)|浏览(429)

我正在使用Jenkins来管理持续集成。我的其中一个作业包含以下任务:

  • 通过Git插件从BitBucket克隆存储库,使用凭据“BitBucket Access”(带密码的私钥)=>工作得很好!
  • 在存储库中执行批处理命令:‘NPM安装’=>失败

在Package.json文件中,有一些常见的NodeJS模块,如Colors、fs.Extra等。如果它们是唯一的模块,则可以正确安装这些模块。

但BitBucket上也有一个私有模块:

"dependencies": {
    "module": "git+ssh://git@bitbucket.org/<team>/module.git"
}

在执行npm安装命令时,该模块安装失败(参见下面的Jenkins日志)。

该作业在Windows 7从属系统上运行。如果我试图在从服务器上的会话“mySession”上进行‘npm安装’,它会要求我提供与位于C:\USERS\mySession.ssh\id_rsa(它也具有BitBucket访问权限,但它特定于会话“mySession”,因此不同于“BitBucket访问”凭据)中的私钥对应的密码短语。然后,‘NPM安装’以安装模块的方式正常结束。

我尝试使用SSH代理插件,凭据为“BitBucket Access”:它启动正确,但后来似乎没有使用,因为权限被拒绝。

您有什么想法来解决这个问题,让‘NPM安装’正常工作吗?

谢谢你的爬虫!

Jenkins日志:

Construction à distance sur MySlave in workspace C:Jenkinsworkspace
[ssh-agent] Looking for ssh-agent implementation...
[ssh-agent]   Java/tomcat-native ssh-agent
[ssh-agent] Registered BouncyCastle on the remote agent
[ssh-agent] Started.
[ssh-agent] Using credentials bitbucket access

...

npm WARN package.json deployment@1.0.0 No description
npm WARN package.json deployment@1.0.0 No repository field.
npm WARN package.json deployment@1.0.0 No README data
npm WARN addRemoteGit Error: Command failed: git -c core.longpaths=true config --get remote.origin.url
npm WARN addRemoteGit 
npm WARN addRemoteGit     at ChildProcess.exithandler (child_process.js:203:12)
npm WARN addRemoteGit     at emitTwo (events.js:87:13)
npm WARN addRemoteGit     at ChildProcess.emit (events.js:172:7)
npm WARN addRemoteGit     at maybeClose (internal/child_process.js:818:16)
npm WARN addRemoteGit     at Socket.<anonymous> (internal/child_process.js:319:11)
npm WARN addRemoteGit     at emitOne (events.js:77:13)
npm WARN addRemoteGit     at Socket.emit (events.js:169:7)
npm WARN addRemoteGit     at Pipe._onclose (net.js:469:12)
npm WARN addRemoteGit  git+ssh://git@bitbucket.org/<team>/module.git resetting remote C:Windowssystem32configsystemprofileAppDataRoamingnpm-cache_git-remotesssh-git-bitbucket-org-<team>-module-git-2a4d53e0
because of error: { [Error: Command failed: git -c core.longpaths=true config --get remote.origin.url
npm WARN addRemoteGit ]
npm WARN addRemoteGit   killed: false,
npm WARN addRemoteGit   code: 1,
npm WARN addRemoteGit   signal: null,
npm WARN addRemoteGit   cmd: 'git -c core.longpaths=true config --get remote.origin.url' }
npm ERR! git clone --template=C:Windowssystem32configsystemprofileAppDataRoamingnpm-cache_git-remotes_templates --mirror ssh://git@bitbucket.org/<team>/module.git 
C:Windowssystem32configsystemprofileAppDataRoamingnpm-cache_git-remotesssh-git-bitbucket-org-<team>-module-git-2a4d53e0: Cloning into bare repository
'C:Windowssystem32configsystemprofileAppDataRoamingnpm-cache_git-remotesssh-git-bitbucket-org-<team>-module-git-2a4d53e0'...
npm ERR! git clone --template=C:Windowssystem32configsystemprofileAppDataRoamingnpm-cache_git-remotes_templates --mirror ssh://git@bitbucket.org/<team>/module.git 
C:Windowssystem32configsystemprofileAppDataRoamingnpm-cache_git-remotesssh-git-bitbucket-org-<team>-module-git-2a4d53e0: Permission denied (publickey).
npm ERR! git clone --template=C:Windowssystem32configsystemprofileAppDataRoamingnpm-cache_git-remotes_templates --mirror ssh://git@bitbucket.org/<team>/module.git 
C:Windowssystem32configsystemprofileAppDataRoamingnpm-cache_git-remotesssh-git-bitbucket-org-<team>-module-git-2a4d53e0: fatal: Could not read from remote repository.
npm ERR! git clone --template=C:Windowssystem32configsystemprofileAppDataRoamingnpm-cache_git-remotes_templates --mirror ssh://git@bitbucket.org/<team>/module.git 
C:Windowssystem32configsystemprofileAppDataRoamingnpm-cache_git-remotesssh-git-bitbucket-org-<team>-module-git-2a4d53e0: 
npm ERR! git clone --template=C:Windowssystem32configsystemprofileAppDataRoamingnpm-cache_git-remotes_templates --mirror ssh://git@bitbucket.org/<team>/module.git 
C:Windowssystem32configsystemprofileAppDataRoamingnpm-cache_git-remotesssh-git-bitbucket-org-<team>-module-git-2a4d53e0: Please make sure you have the correct access rights
npm ERR! git clone --template=C:Windowssystem32configsystemprofileAppDataRoamingnpm-cache_git-remotes_templates --mirror ssh://git@bitbucket.org/<team>/module.git 
C:Windowssystem32configsystemprofileAppDataRoamingnpm-cache_git-remotesssh-git-bitbucket-org-<team>-module-git-2a4d53e0: and the repository exists.
npm ERR! Windows_NT 6.1.7601
npm ERR! argv "C:\Program Files\nodejs\node.exe" "C:\Program Files\nodejs\node_modules\npm\bin\npm-cli.js" "install"
npm ERR! node v4.2.3
npm ERR! npm  v2.14.7
npm ERR! code 128

npm ERR! Command failed: git -c core.longpaths=true clone --template=C:Windowssystem32configsystemprofileAppDataRoamingnpm-cache_git-remotes_templates --mirror ssh://git@bitbucket.org/<team>/module.git 
C:Windowssystem32configsystemprofileAppDataRoamingnpm-cache_git-remotesssh-git-bitbucket-org-<team>-module-git-2a4d53e0
npm ERR! Cloning into bare repository 'C:Windowssystem32configsystemprofileAppDataRoamingnpm-cache_git-remotesssh-git-bitbucket-org-<team>-module-git-2a4d53e0'...
npm ERR! Permission denied (publickey).
npm ERR! fatal: Could not read from remote repository.
npm ERR! 
npm ERR! Please make sure you have the correct access rights
npm ERR! and the repository exists.
npm ERR! 
npm ERR! 
npm ERR! If you need help, you may report this error at:
npm ERR!     <https://github.com/npm/npm/issues>

...

[ssh-agent] Stopped.

可能很有用:

  • Jenkins版本:1.628
  • 凭证插件:2.1.3
  • Git插件:2.3.5
  • Git客户端插件:1.19.6
  • 比特桶插件:1.1.2
  • SSH凭据插件:1.12
  • SSH代理插件:1.13
svgewumm

svgewumm1#

我在Jenkinsfile中遇到了类似的问题,在Jenkinsfile中,npm不能访问私有的git repo,即使我可以从命令行以相同的用户身份访问它。.ssh/config似乎被忽略了。我在Jenkinsfile中使用以下代码片段解决了这个问题:

sh "eval $(ssh-agent); ssh-add /home/tomcat/.ssh/mysshkey; npm install"
zpf6vheq

zpf6vheq2#

您需要在BitBucket中执行generate an OAuth token,请查看创建消费者部分。然后,您可以将其与HTTPS一起使用,如下所示:

"dependencies": {
    "module": "git+https://x-token-auth:{access_token}@bitbucket.org/user/module.git"
}

相关问题