capistrano 3.5 usa git https repo

Tengo un server donde quiero implementar mi código fuente a través de capistrano. Puedo acceder a un usuario de implementación a través de ssh en este server, pero el repository desde el que estoy llegando solo es accesible a través de https. Estoy usando capistrano 3.5 y

médico de puesta en escena

muestra lo siguiente en variables. Puede haber más de un límite estándar, pero creo que lo que hacen es obvio.

Variables

:application "capistrano_deployment" :branch "master" :default_env {} :deploy_prefix "" :deploy_root "/var/www" :deploy_to "/var/www/capistrano_deployment" :format :airbrussh :git_environmental_variables {:git_askpass=>"/bin/echo", :git_ssh=>"/tmp/capistrano_deployment/git-ssh.sh"} :keep_releases 5 :local_user "myuser" :log_level :debug :pty true :repo_url "https://myuser@git.internal.net/git/capistrano_deployment.git" :scm :git :stage :staging :target_directory "capistrano_deployment" :tmp_dir "/tmp" 

el problema que tengo es que la implementación falla, porque capistrano no me pide una contraseña para git este repository, al cual se accede mediante https y no como capistrano parece asumirlo a través de ssh.

  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/' 

¿Qué necesito cambiar para que Capistrano solicite una contraseña para la url https y, con suerte, solo una vez y no para cada consulta de git, que es ejecutada por capistrano? También parece haber una solución para implementar el nombre de usuario y la contraseña en .netrc en text claro (¡NO ES UNA OPCIÓN!). Desea evitar tal solución a toda costa

Puede proporcionar una contraseña a través de Capistrano de esta manera:

 set :git_http_password, "secret" 

O solicite al usuario de Capistrano que lo haga así:

 ask :git_http_password 

Desafortunadamente, todo esto realmente es poner la contraseña en text plano en la URL del repository. Eso significa que se repetirá en los loggings y tal vez en otros lugares.

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

Probablemente no sea lo que quiere, pero creo que esta es la única opción disponible para usted si desea usar HTTPS.

No pude hacer que la respuesta de Matt funcionara, aunque el código todavía está dentro de Capistrano. Pero en lugar de intentar averiguarlo, solicité a Capistrano que me pidiera el nombre de usuario y la contraseña. Agregue esto a 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"