mirror of
https://gitea.com/Lydanne/buildx.git
synced 2025-05-18 00:47:48 +08:00
Merge pull request #3032 from crazy-max/bake-secrets-dupes
correctly remove duplicated secrets and ssh keys
This commit is contained in:
commit
48a591b1e1
@ -27,7 +27,7 @@ func (s Secrets) Normalize() Secrets {
|
||||
if len(s) == 0 {
|
||||
return nil
|
||||
}
|
||||
return removeDupes(s)
|
||||
return removeSecretDupes(s)
|
||||
}
|
||||
|
||||
func (s Secrets) ToPB() []*controllerapi.Secret {
|
||||
@ -155,3 +155,17 @@ func parseSecret(value string) (*controllerapi.Secret, error) {
|
||||
}
|
||||
return s.ToPB(), nil
|
||||
}
|
||||
|
||||
func removeSecretDupes(s []*Secret) []*Secret {
|
||||
var res []*Secret
|
||||
m := map[string]int{}
|
||||
for _, sec := range s {
|
||||
if i, ok := m[sec.ID]; ok {
|
||||
res[i] = sec
|
||||
} else {
|
||||
m[sec.ID] = len(res)
|
||||
res = append(res, sec)
|
||||
}
|
||||
}
|
||||
return res
|
||||
}
|
||||
|
@ -81,4 +81,17 @@ func TestSecrets(t *testing.T) {
|
||||
result := actual.Equals(expected)
|
||||
require.True(t, result.True())
|
||||
})
|
||||
|
||||
t.Run("RemoveDupes", func(t *testing.T) {
|
||||
secrets := Secrets{
|
||||
{ID: "mysecret", Env: "FOO"},
|
||||
{ID: "mysecret", Env: "BAR"},
|
||||
{ID: "mysecret2", Env: "BAZ"},
|
||||
}.Normalize()
|
||||
|
||||
expected := `[{"id":"mysecret","env":"BAR"},{"id":"mysecret2","env":"BAZ"}]`
|
||||
actual, err := json.Marshal(secrets)
|
||||
require.NoError(t, err)
|
||||
require.JSONEq(t, expected, string(actual))
|
||||
})
|
||||
}
|
||||
|
@ -28,7 +28,7 @@ func (s SSHKeys) Normalize() SSHKeys {
|
||||
if len(s) == 0 {
|
||||
return nil
|
||||
}
|
||||
return removeDupes(s)
|
||||
return removeSSHDupes(s)
|
||||
}
|
||||
|
||||
func (s SSHKeys) ToPB() []*controllerapi.SSH {
|
||||
@ -131,3 +131,17 @@ func IsGitSSH(repo string) bool {
|
||||
}
|
||||
return url.Scheme == gitutil.SSHProtocol
|
||||
}
|
||||
|
||||
func removeSSHDupes(s []*SSH) []*SSH {
|
||||
var res []*SSH
|
||||
m := map[string]int{}
|
||||
for _, ssh := range s {
|
||||
if i, ok := m[ssh.ID]; ok {
|
||||
res[i] = ssh
|
||||
} else {
|
||||
m[ssh.ID] = len(res)
|
||||
res = append(res, ssh)
|
||||
}
|
||||
}
|
||||
return res
|
||||
}
|
||||
|
@ -82,4 +82,17 @@ func TestSSHKeys(t *testing.T) {
|
||||
result := actual.Equals(expected)
|
||||
require.True(t, result.True())
|
||||
})
|
||||
|
||||
t.Run("RemoveDupes", func(t *testing.T) {
|
||||
sshkeys := SSHKeys{
|
||||
{ID: "default"},
|
||||
{ID: "key", Paths: []string{"path/to/foo"}},
|
||||
{ID: "key", Paths: []string{"path/to/bar"}},
|
||||
}.Normalize()
|
||||
|
||||
expected := `[{"id":"default"},{"id":"key","paths":["path/to/bar"]}]`
|
||||
actual, err := json.Marshal(sshkeys)
|
||||
require.NoError(t, err)
|
||||
require.JSONEq(t, expected, string(actual))
|
||||
})
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user