From c38925991b3b78dfadf3ca11b837abc5bcf15ecd Mon Sep 17 00:00:00 2001 From: Timofey Kirillov Date: Fri, 11 Mar 2022 16:01:58 +0300 Subject: [PATCH] fix: broken --ssh-key option Fixes https://github.com/werf/werf/issues/1948. Signed-off-by: Timofey Kirillov --- pkg/git_repo/remote.go | 2 +- pkg/ssh_agent/ssh_agent.go | 18 +++++++++++++----- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/pkg/git_repo/remote.go b/pkg/git_repo/remote.go index 7a8db6cb4e..98a606b505 100644 --- a/pkg/git_repo/remote.go +++ b/pkg/git_repo/remote.go @@ -191,7 +191,7 @@ func (repo *Remote) Clone(ctx context.Context) (bool, error) { RecurseSubmodules: git.DefaultSubmoduleRecursionDepth, }) if err != nil { - return err + return fmt.Errorf("unable to clone repo: %s", err) } if err := repo.updateLastAccessAt(ctx, tmpPath); err != nil { diff --git a/pkg/ssh_agent/ssh_agent.go b/pkg/ssh_agent/ssh_agent.go index 885e080513..05ccb138e2 100644 --- a/pkg/ssh_agent/ssh_agent.go +++ b/pkg/ssh_agent/ssh_agent.go @@ -23,6 +23,11 @@ var ( tmpSockPath string ) +func setupProcessSSHAgent(sshAuthSock string) error { + SSHAuthSock = sshAuthSock + return os.Setenv("SSH_AUTH_SOCK", SSHAuthSock) +} + func Init(ctx context.Context, keys []string) error { for _, key := range keys { if keyExists, err := util.FileExists(key); !keyExists { @@ -35,10 +40,11 @@ func Init(ctx context.Context, keys []string) error { if len(keys) > 0 { agentSock, err := runSSHAgentWithKeys(ctx, keys) if err != nil { - return err + return fmt.Errorf("unable to run ssh agent with specified keys: %s", err) + } + if err := setupProcessSSHAgent(agentSock); err != nil { + return fmt.Errorf("unable to init ssh auth socket to %q: %s", agentSock, err) } - SSHAuthSock = agentSock - return nil } @@ -80,9 +86,11 @@ func Init(ctx context.Context, keys []string) error { if len(validKeys) > 0 { agentSock, err := runSSHAgentWithKeys(ctx, validKeys) if err != nil { - return err + return fmt.Errorf("unable to run ssh agent with specified keys: %s", err) + } + if err := setupProcessSSHAgent(agentSock); err != nil { + return fmt.Errorf("unable to init ssh auth socket to %q: %s", agentSock, err) } - SSHAuthSock = agentSock } }