support dockerhub credentials when pulling with kaniko-ecr (#27)

This commit is contained in:
Colin Hoglund
2021-09-16 00:42:03 -04:00
committed by GitHub
parent e86d4583a7
commit 609d203bed
5 changed files with 153 additions and 24 deletions
+34
View File
@@ -0,0 +1,34 @@
package docker
import (
"encoding/base64"
"fmt"
)
type (
Auth struct {
Auth string `json:"auth"`
}
Config struct {
Auths map[string]Auth `json:"auths"`
CredHelpers map[string]string `json:"credHelpers"`
}
)
func NewConfig() *Config {
return &Config{
Auths: map[string]Auth{},
CredHelpers: map[string]string{},
}
}
func (c *Config) SetAuth(registry, username, password string) {
authBytes := []byte(fmt.Sprintf("%s:%s", username, password))
encodedString := base64.StdEncoding.EncodeToString(authBytes)
c.Auths[registry] = Auth{Auth: encodedString}
}
func (c *Config) SetCredHelper(registry, helper string) {
c.CredHelpers[registry] = helper
}
+25
View File
@@ -0,0 +1,25 @@
package docker
import (
"encoding/json"
"testing"
)
func TestConfig(t *testing.T) {
c := NewConfig()
c.SetAuth(RegistryV1, "test", "password")
c.SetCredHelper(RegistryECRPublic, "ecr-login")
bytes, err := json.Marshal(c)
if err != nil {
t.Error("json marshal failed")
}
want := `{"auths":{"https://index.docker.io/v1/":{"auth":"dGVzdDpwYXNzd29yZA=="}},"credHelpers":{"public.ecr.aws":"ecr-login"}}`
got := string(bytes)
if want != got {
t.Errorf("unexpected json output:\n want: %s\n got: %s", want, got)
}
}
+7
View File
@@ -0,0 +1,7 @@
package docker
const (
RegistryV1 string = "https://index.docker.io/v1/"
RegistryV2 string = "https://index.docker.io/v2/"
RegistryECRPublic string = "public.ecr.aws"
)