2016-11-24 2 views
0

에 $ USER를 통과하지 않고, 하나는 같은 로그인 사용자 이름을 포함하는 환매 특약 URL을 설정할 수 있습니다 :카피 스트라 노 (3) 카피 스트라 노 2에서 원격 ssh를

set :repo_url, "git+ssh://#{ENV['LOGNAME']}@myrepo.example.com/path/name" 

이 일의 목적은 $ LOGNAME은 REPO에 액세스하는 것입니다 계정을 사용하여 정상적인 권한을 얻습니다. 배포 서버의 로그인은 $ {LOGNAME}이 아니므로 좋습니다.

capistrano 3에서는이 작업을 수행 할 수 있지만 원래 사용자 X는 ../repo/.git/config를 채 웁니다. 사용자 Y는 로그인 할 수 없으므로 다음 사용자에게는 실패합니다. myrepo.example.com as X Capitrano 2에서는 신선한 git repo가 ​​매번 체크 아웃 되었기 때문에이 작업을 수행했습니다. cap3 방식은 훨씬 더 효율적이지만, 나는 무엇을 해야할지에 대해 망설이다. /tmp/git-ssh-deploy-staging-user.sh 스크립트가 -l 사용자 인 을 ssh 명령 줄에 추가하면 모두 정상이지만 아무 것도 표시되지 않습니다.

나는 repo 서버에 "배포"사용자를 생성하고 repo에 읽기 전용 권한을 부여했지만, 확장 성 솔루션으로는별로 대수롭지 않습니다. $가 필요합니다. ADMIN은 repo를 사용하여 사람들이 자신의 일을하도록 내버려 두지 않습니다.

내가 제안을 찾고 있습니까? 코드에있는 것일 수도 있고 아직 옵션을 찾지 못했을 수도 있습니다.

답변

0

내 deploy.rb에 대한이 패치를 사용하면 올바르게 설정된 -l 옵션이있는 /tmp/ssh-blah-git.sh가 표시됩니다.

아직로드되지 않았기 때문에 기존의 작업을 덮어 쓸 수 없었기 때문에 공식적인 작업 후에 작업을 실행하려고 시도했지만 공식 작업은 내 작업 (두 번째 작업 세 번이나 ...) 그래서 나는 그것을 밖으로 지 웁니다.

namespace :git do 
    desc "Upload the git wrapper script, this script guarantees that we can script git without getting an interactive prompt" 
    task :better_wrapper do 
    #puts "BETTER" 
    on release_roles :all do 
     execute :mkdir, "-p", File.dirname(fetch(:git_wrapper_path)) 
     upload! StringIO.new("#!/bin/sh -e\nexec /usr/bin/ssh -l #{ENV['LOGNAME']} -o PasswordAuthentication=no -o StrictHostKeyChecking=no \"[email protected]\"\n"), fetch(:git_wrapper_path) 
     execute :chmod, "700", fetch(:git_wrapper_path) 
    end 
    #puts "BETTER2" 
    Rake::Task['git:wrapper'].clear_actions 
    end 

    after :wrapper, "git:better_wrapper" 
end