mirror of
https://github.com/woodpecker-ci/woodpecker.git
synced 2024-12-23 00:46:30 +00:00
parent
a3b9cae759
commit
f2c33a0d89
5 changed files with 15 additions and 13 deletions
|
@ -7,6 +7,7 @@ import (
|
|||
backend_types "github.com/woodpecker-ci/woodpecker/pipeline/backend/types"
|
||||
"github.com/woodpecker-ci/woodpecker/pipeline/frontend/metadata"
|
||||
yaml_types "github.com/woodpecker-ci/woodpecker/pipeline/frontend/yaml/types"
|
||||
"github.com/woodpecker-ci/woodpecker/pipeline/frontend/yaml/utils"
|
||||
"github.com/woodpecker-ci/woodpecker/shared/constant"
|
||||
)
|
||||
|
||||
|
@ -34,7 +35,7 @@ type Secret struct {
|
|||
}
|
||||
|
||||
func (s *Secret) Available(container *yaml_types.Container) bool {
|
||||
return (len(s.Match) == 0 || matchImage(container.Image, s.Match...)) && (!s.PluginOnly || container.IsPlugin())
|
||||
return (len(s.Match) == 0 || utils.MatchImage(container.Image, s.Match...)) && (!s.PluginOnly || container.IsPlugin())
|
||||
}
|
||||
|
||||
type secretMap map[string]Secret
|
||||
|
|
|
@ -14,6 +14,7 @@ import (
|
|||
"github.com/woodpecker-ci/woodpecker/pipeline/frontend/metadata"
|
||||
"github.com/woodpecker-ci/woodpecker/pipeline/frontend/yaml/compiler/settings"
|
||||
yaml_types "github.com/woodpecker-ci/woodpecker/pipeline/frontend/yaml/types"
|
||||
"github.com/woodpecker-ci/woodpecker/pipeline/frontend/yaml/utils"
|
||||
)
|
||||
|
||||
func (c *Compiler) createProcess(name string, container *yaml_types.Container, section string) *backend_types.Step {
|
||||
|
@ -80,13 +81,13 @@ func (c *Compiler) createProcess(name string, container *yaml_types.Container, s
|
|||
}
|
||||
}
|
||||
|
||||
if matchImage(container.Image, c.escalated...) && container.IsPlugin() {
|
||||
if utils.MatchImage(container.Image, c.escalated...) && container.IsPlugin() {
|
||||
privileged = true
|
||||
}
|
||||
|
||||
authConfig := backend_types.Auth{}
|
||||
for _, registry := range c.registries {
|
||||
if matchHostname(container.Image, registry.Hostname) {
|
||||
if utils.MatchHostname(container.Image, registry.Hostname) {
|
||||
authConfig.Username = registry.Username
|
||||
authConfig.Password = registry.Password
|
||||
authConfig.Email = registry.Email
|
||||
|
|
|
@ -3,11 +3,11 @@ package types
|
|||
import (
|
||||
"fmt"
|
||||
|
||||
"golang.org/x/exp/slices"
|
||||
"gopkg.in/yaml.v3"
|
||||
|
||||
"github.com/woodpecker-ci/woodpecker/pipeline/frontend/yaml/constraint"
|
||||
"github.com/woodpecker-ci/woodpecker/pipeline/frontend/yaml/types/base"
|
||||
"github.com/woodpecker-ci/woodpecker/pipeline/frontend/yaml/utils"
|
||||
"github.com/woodpecker-ci/woodpecker/shared/constant"
|
||||
)
|
||||
|
||||
|
@ -109,5 +109,5 @@ func (c *Container) IsPlugin() bool {
|
|||
}
|
||||
|
||||
func (c *Container) IsTrustedCloneImage() bool {
|
||||
return c.IsPlugin() && slices.Contains(constant.TrustedCloneImages, c.Image)
|
||||
return c.IsPlugin() && utils.MatchImage(c.Image, constant.TrustedCloneImages...)
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
package compiler
|
||||
package utils
|
||||
|
||||
import "github.com/docker/distribution/reference"
|
||||
|
||||
|
@ -30,10 +30,10 @@ func expandImage(name string) string {
|
|||
return named.String()
|
||||
}
|
||||
|
||||
// matchImage returns true if the image name matches
|
||||
// MatchImage returns true if the image name matches
|
||||
// an image in the list. Note the image tag is not used
|
||||
// in the matching logic.
|
||||
func matchImage(from string, to ...string) bool {
|
||||
func MatchImage(from string, to ...string) bool {
|
||||
from = trimImage(from)
|
||||
for _, match := range to {
|
||||
if from == trimImage(match) {
|
||||
|
@ -43,9 +43,9 @@ func matchImage(from string, to ...string) bool {
|
|||
return false
|
||||
}
|
||||
|
||||
// matchHostname returns true if the image hostname
|
||||
// MatchHostname returns true if the image hostname
|
||||
// matches the specified hostname.
|
||||
func matchHostname(image, hostname string) bool {
|
||||
func MatchHostname(image, hostname string) bool {
|
||||
ref, err := reference.ParseAnyReference(image)
|
||||
if err != nil {
|
||||
return false
|
|
@ -1,4 +1,4 @@
|
|||
package compiler
|
||||
package utils
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
@ -191,7 +191,7 @@ func Test_matchImage(t *testing.T) {
|
|||
},
|
||||
}
|
||||
for _, test := range testdata {
|
||||
got, want := matchImage(test.from, test.to), test.want
|
||||
got, want := MatchImage(test.from, test.to), test.want
|
||||
if got != want {
|
||||
t.Errorf("Want image %q matching %q is %v", test.from, test.to, want)
|
||||
}
|
||||
|
@ -250,7 +250,7 @@ func Test_matchHostname(t *testing.T) {
|
|||
},
|
||||
}
|
||||
for _, test := range testdata {
|
||||
got, want := matchHostname(test.image, test.hostname), test.want
|
||||
got, want := MatchHostname(test.image, test.hostname), test.want
|
||||
if got != want {
|
||||
t.Errorf("Want image %q matching hostname %q is %v", test.image, test.hostname, want)
|
||||
}
|
Loading…
Reference in a new issue