From 65384015fa814f133b5db65837e6d58d055815a8 Mon Sep 17 00:00:00 2001 From: VaibhavPage Date: Wed, 27 Mar 2019 07:57:32 -0400 Subject: [PATCH] fix(): git auth --- sensors/cmd/Dockerfile | 1 + store/git.go | 34 +++++++++++++++++++++++++++------- 2 files changed, 28 insertions(+), 7 deletions(-) diff --git a/sensors/cmd/Dockerfile b/sensors/cmd/Dockerfile index bf2f29a563..bf2fd379a6 100644 --- a/sensors/cmd/Dockerfile +++ b/sensors/cmd/Dockerfile @@ -1,3 +1,4 @@ FROM centos:7 +RUN yum -y install openssh openssh-server openssh-clients openssl-libs COPY dist/sensor /bin/ ENTRYPOINT [ "/bin/sensor" ] \ No newline at end of file diff --git a/store/git.go b/store/git.go index c2d9dbbaca..a83c2f2f66 100644 --- a/store/git.go +++ b/store/git.go @@ -18,16 +18,15 @@ package store import ( "fmt" - "gopkg.in/src-d/go-git.v4/config" - "io/ioutil" - "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1" "golang.org/x/crypto/ssh" "gopkg.in/src-d/go-git.v4" + "gopkg.in/src-d/go-git.v4/config" "gopkg.in/src-d/go-git.v4/plumbing" "gopkg.in/src-d/go-git.v4/plumbing/transport" "gopkg.in/src-d/go-git.v4/plumbing/transport/http" go_git_ssh "gopkg.in/src-d/go-git.v4/plumbing/transport/ssh" + "io/ioutil" "k8s.io/client-go/kubernetes" ) @@ -63,12 +62,28 @@ func (g *GitArtifactReader) getRemote() string { return DefaultRemote } -func getSSHKeyAuth(privateSshKeyFile string) (transport.AuthMethod, error) { +func getSSHKeyAuth(sshKeyFile string) (transport.AuthMethod, error) { var auth transport.AuthMethod - sshKey, err := ioutil.ReadFile(privateSshKeyFile) + sshKey, err := ioutil.ReadFile(sshKeyFile) if err != nil { return nil, fmt.Errorf("failed to read ssh key file. err: %+v", err) } + // + //cmd := exec.Command("bash", "-c", `eval "$(ssh-agent)"`) + //cmd.Stdout = os.Stdout + //cmd.Stderr = os.Stdout + //err = cmd.Run() + //if err != nil { + // return nil, fmt.Errorf("failed to eval ssh-agent. err: %+v", err) + //} + //cmd = exec.Command("bash", "-c", "ssh-add", sshKeyFile) + //cmd.Stdout = os.Stdout + //cmd.Stderr = os.Stdout + //err = cmd.Run() + //if err != nil { + // return nil, fmt.Errorf("failed to add ssh key to ssh-agent. err: %+v", err) + //} + signer, err := ssh.ParsePrivateKey([]byte(sshKey)) if err != nil { return nil, fmt.Errorf("failed to parse ssh key. err: %+v", err) @@ -131,10 +146,15 @@ func (g *GitArtifactReader) readFromRepository(r *git.Repository) ([]byte, error return nil, fmt.Errorf("failed to get working tree. err: %+v", err) } - if err := r.Fetch(&git.FetchOptions{ + fetchOptions := &git.FetchOptions{ RemoteName: g.getRemote(), RefSpecs: fetchRefSpec, - }); err != nil && err != git.NoErrAlreadyUpToDate { + } + if auth != nil { + fetchOptions.Auth = auth + } + + if err := r.Fetch(fetchOptions); err != nil && err != git.NoErrAlreadyUpToDate { return nil, fmt.Errorf("failed to fetch. err: %v", err) }