/
git.go
44 lines (37 loc) · 1.05 KB
/
git.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package git
import (
gitjobv1 "github.com/rancher/gitjob/pkg/apis/gitjob.cattle.io/v1"
v1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/errors"
)
const (
DefaultSecretName = "gitcredential" //nolint:gosec // this is a resource name
)
type SecretGetter interface {
Get(string, string) (*v1.Secret, error)
}
func LatestCommit(gitjob *gitjobv1.GitJob, secretGetter SecretGetter) (string, error) {
secretName := DefaultSecretName
if gitjob.Spec.Git.ClientSecretName != "" {
secretName = gitjob.Spec.Git.ClientSecretName
}
secret, err := secretGetter.Get(gitjob.Namespace, secretName)
if errors.IsNotFound(err) {
secret = nil
} else if err != nil {
return "", err
}
branch := gitjob.Spec.Git.Branch
if branch == "" {
branch = "master"
}
git, err := newGit("", gitjob.Spec.Git.Repo, &options{
CABundle: gitjob.Spec.Git.Credential.CABundle,
Credential: secret,
InsecureTLSVerify: gitjob.Spec.Git.Credential.InsecureSkipTLSverify,
})
if err != nil {
return "", err
}
return git.lsRemote(branch, gitjob.Status.Commit)
}