我有一个服务器,我想通过capistrano部署我的源代码。 我可以通过此服务器上的ssh访问部署用户,但我从中提取的repo实际上只能通过https访问。 我正在使用capistrano 3.5和
上尉分期医生在变量中显示以下内容。可能有超过标准上限,但我认为他们做的很明显。
变量
INFO [ce69c094] Running /usr/bin/env git ls-remote --heads https://myuser@git.internal.net/git/capistrano_deployment.git as deploy@…
DEBUG [ce69c094] Command: ( export GIT_ASKPASS="/bin/echo" GIT_SSH="/tmp/capistrano_deployment/git-ssh.sh" ; /usr/bin/env git ls-remo…
DEBUG [ce69c094] fatal: Authentication failed for 'https://myuser@git.internal.net/git/capistrano_deployment.git/'
我遇到的问题是部署失败了,因为capistrano没有要求我输入git这个存储库的密码,这个密码由https和而不是访问,因为capistrano似乎假设通过SSH。
for (tot=lat.length; z < tot; z++) {
var locations = [
[places[z], lat[z], lng[z]]
];
}
我需要更改capistrano要求输入https网址的密码 - 希望只有一次,而不是每个git查询,由capistrano执行? 似乎也有解决方案在.nettrc中以明文形式部署用户名和密码(NOT AN OPTION!)。希望不惜一切代价避免这种解决方案
答案 0 :(得分:1)
您可以通过Capistrano提供密码,如下所示:
set :git_http_password, "secret"
或者像这样提示Capistrano用户:
ask :git_http_password
不幸的是,所有这一切确实是将密码以明文形式放入存储库URL中。这意味着它将在日志和其他地方得到回应。
可能不是您想要的,但我相信如果您想使用HTTPS,这是唯一可用的选项。
答案 1 :(得分:0)
我无法得到马特的工作答案,即使代码仍然在卡皮斯特拉诺内部。但是,我没有试图弄清楚是不是要让Capistrano自己要求输入用户名和密码。将其添加到config / deploy.rb:
ask(:github_user_name, nil)
ask(:github_password, nil)
set :repo_url, "https://#{fetch(:github_user_name)}:#{fetch(:github_password)}@github.com/github-account-name/my-repo.git"