capistrano 3.5使用git https repo

时间:2016-06-26 11:08:39

标签: git http authentication https capistrano

我有一个服务器,我想通过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!)。希望不惜一切代价避免这种解决方案

2 个答案:

答案 0 :(得分:1)

您可以通过Capistrano提供密码,如下所示:

set :git_http_password, "secret"

或者像这样提示Capistrano用户:

ask :git_http_password

不幸的是,所有这一切确实是将密码以明文形式放入存储库URL中。这意味着它将在日志和其他地方得到回应。

来源:https://github.com/capistrano/capistrano/blob/4406674cd324a714c14a52554300aa721fb2b2b7/lib/capistrano/dsl/paths.rb#L38-L53

可能不是您想要的,但我相信如果您想使用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"