From cafd5aea61184fc2b1ee29e26cb314fd435575af Mon Sep 17 00:00:00 2001 From: Sean Clemmer Date: Wed, 31 Jul 2019 13:51:04 -0700 Subject: [PATCH] Support polling GCR --- cmd/keel/main.go | 1 + extension/credentialshelper/gcr/gcr.go | 56 ++++++++++++++++++++++++++ 2 files changed, 57 insertions(+) create mode 100644 extension/credentialshelper/gcr/gcr.go diff --git a/cmd/keel/main.go b/cmd/keel/main.go index 1f71054c..14d5d415 100644 --- a/cmd/keel/main.go +++ b/cmd/keel/main.go @@ -48,6 +48,7 @@ import ( // credentials helpers _ "github.com/keel-hq/keel/extension/credentialshelper/aws" + _ "github.com/keel-hq/keel/extension/credentialshelper/gcr" secretsCredentialsHelper "github.com/keel-hq/keel/extension/credentialshelper/secrets" // bots diff --git a/extension/credentialshelper/gcr/gcr.go b/extension/credentialshelper/gcr/gcr.go new file mode 100644 index 00000000..2e3d7850 --- /dev/null +++ b/extension/credentialshelper/gcr/gcr.go @@ -0,0 +1,56 @@ +package gcr + +import ( + "fmt" + "io/ioutil" + "os" + + "github.com/keel-hq/keel/extension/credentialshelper" + "github.com/keel-hq/keel/types" +) + +func init() { + credentialshelper.RegisterCredentialsHelper("gcr", New()) +} + +type CredentialsHelper struct { + enabled bool + credentials string +} + +func New() *CredentialsHelper { + ch := &CredentialsHelper{} + + credentialsFile, ok := os.LookupEnv("GOOGLE_APPLICATION_CREDENTIALS") + if !ok { + return ch + } + + credentials, err := ioutil.ReadFile(credentialsFile) + if err != nil { + return ch + } + + ch.enabled = true + ch.credentials = string(credentials) + return ch +} + +func (h *CredentialsHelper) IsEnabled() bool { + return h.enabled +} + +func (h *CredentialsHelper) GetCredentials(image *types.TrackedImage) (*types.Credentials, error) { + if !h.enabled { + return nil, fmt.Errorf("not initialised") + } + + if image.Image.Registry() != "gcr.io" { + return nil, nil + } + + return &types.Credentials{ + Username: "_json_key", + Password: h.credentials, + }, nil +}