2016-06-26 7 views
0

Ich habe einen Server, wo ich meinen Quellcode über capistrano bereitstellen möchte. Ich kann einen Deployment-Benutzer über SSH auf diesem Server zugreifen, aber das Repo, von dem ich ziehe, ist eigentlich nur über HTTPS erreichbar. Ich bin mit Capistrano 3.5 undcapistrano 3.5 benutze git https repo

Kappe Staging Arzt

die folgenden Variablen zeigt. Es mag mehr als eine Standard-Kappe geben, aber ich denke, was sie tun, ist offensichtlich.

Variablen

: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://[email protected]/git/capistrano_deployment.git" 
:scm       :git 
:stage      :staging 
:target_directory   "capistrano_deployment" 
:tmp_dir      "/tmp" 

das Problem, das ich habe ist, dass die Bereitstellung fehlschlägt, weil Capistrano mich nicht nach einem Passwort fragen, dieses Repository für git, die durch https zugegriffen wird und nicht als Capistrano scheint gehe von ssh aus.

INFO [ce69c094] Running /usr/bin/env git ls-remote --heads https://[email protected]/git/capistrano_deployment.git as [email protected]… 
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://[email protected]/git/capistrano_deployment.git/' 

Was für die HTTPS-URL für ein Kennwort tun muß ich darum bitten, dass Capistrano ändern - und hoffentlich nur einmal und nicht für jede git Abfrage, die von Capistrano ausgeführt wird? Auch scheint es eine Lösung zu geben, den Benutzernamen und das Passwort in .netrc in Klartext zu implementieren (keine Option!). Wollen um jeden Preis eine solche Lösung vermeiden

Antwort

1

Sie ein Passwort über Capistrano wie diese zur Verfügung stellen kann:

set :git_http_password, "secret" 

Oder veranlassen, den Capistrano Benutzer es wie folgt aus:

ask :git_http_password 

Leider sind alle, Dies ist wirklich das Passwort im Klartext in der Repository-URL. Das heißt, es wird in den Protokollen und vielleicht an anderen Stellen wiederholt.

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

Wahrscheinlich nicht, was Sie wollen, aber ich glaube, dass dies die einzige Option für Sie verfügbar ist, wenn Sie HTTPS verwenden möchten.

0

Ich konnte Matts Antwort nicht funktionieren, obwohl der Code immer noch in Capistrano ist. Aber anstatt zu versuchen, herauszufinden, ging ich dazu über, Capistrano selbst nach dem Benutzernamen und dem Passwort zu fragen. Fügen Sie dies config/deploy.rb hinzu:

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"