我正试图通过jenkins工作中的capistrano 3部署到服务器.
"cap environment deploy"完全可以从我的mac中获得我的信誉,但在jenkins下,使用部署信誉,我遇到了一个问题.
最奇怪的是前几个git命令成功,但是当capistrano进入"git remote update"时,服务器挂起时出现"未授权"错误.我通过ssh'ing到服务器并从/ var/www/repo运行'git remote update'来验证这一点.
我有密钥转发设置 - 下面是我的詹金斯工作:
eval $(ssh-agent)
ssh-add ~/.ssh/keyname.pem
cap staging deploy
Run Code Online (Sandbox Code Playgroud)
我不知道capistrano中发生了什么会导致第一个git命令成功('git ls-remote'),但"git remote update"失败.是的,密钥已在github上作为部署密钥添加到repo中,并且在deploy.rb和〜/ .ssh/config中启用了密钥转发.
下面是来自'cap staging deploy'的失败日志示例,在Jenkins框上以Jenkins用户身份运行:
INFO [d3e19149] Running /usr/bin/env mkdir -p /tmp/project/ on server.xxxxxyyyy.com
DEBUG [d3e19149] Command: /usr/bin/env mkdir -p /tmp/project/
INFO [d3e19149] Finished in 0.943 seconds with exit status 0 (successful).
DEBUG Uploading /tmp/project/git-ssh.sh 0.0%
INFO Uploading /tmp/project/git-ssh.sh 100.0%
INFO [43533553] Running /usr/bin/env chmod +x /tmp/project/git-ssh.sh on server.xxxxxyyyy.com
DEBUG [43533553] Command: /usr/bin/env chmod +x /tmp/project/git-ssh.sh …Run Code Online (Sandbox Code Playgroud)