mirror of
https://github.com/woodpecker-ci/woodpecker.git
synced 2024-11-22 18:01:02 +00:00
parent
063d0bb32a
commit
f2b6a5c9c5
3 changed files with 21 additions and 22 deletions
|
@ -42,6 +42,7 @@ type Compiler struct {
|
||||||
volumes []string
|
volumes []string
|
||||||
networks []string
|
networks []string
|
||||||
env map[string]string
|
env map[string]string
|
||||||
|
cloneEnv map[string]string
|
||||||
base string
|
base string
|
||||||
path string
|
path string
|
||||||
metadata frontend.Metadata
|
metadata frontend.Metadata
|
||||||
|
@ -54,8 +55,9 @@ type Compiler struct {
|
||||||
// New creates a new Compiler with options.
|
// New creates a new Compiler with options.
|
||||||
func New(opts ...Option) *Compiler {
|
func New(opts ...Option) *Compiler {
|
||||||
compiler := &Compiler{
|
compiler := &Compiler{
|
||||||
env: map[string]string{},
|
env: map[string]string{},
|
||||||
secrets: map[string]Secret{},
|
cloneEnv: map[string]string{},
|
||||||
|
secrets: map[string]Secret{},
|
||||||
}
|
}
|
||||||
for _, opt := range opts {
|
for _, opt := range opts {
|
||||||
opt(compiler)
|
opt(compiler)
|
||||||
|
@ -108,16 +110,12 @@ func (c *Compiler) Compile(conf *yaml.Config) *backend.Config {
|
||||||
// add default clone step
|
// add default clone step
|
||||||
if !c.local && len(conf.Clone.Containers) == 0 && !conf.SkipClone {
|
if !c.local && len(conf.Clone.Containers) == 0 && !conf.SkipClone {
|
||||||
container := &yaml.Container{
|
container := &yaml.Container{
|
||||||
Name: "clone",
|
Name: "clone",
|
||||||
Image: "woodpeckerci/plugin-git:latest",
|
// TODO: switch to `:latest` once v1.1.0 got released
|
||||||
Vargs: map[string]interface{}{"depth": "0"},
|
// https://github.com/woodpecker-ci/plugin-git/issues/3
|
||||||
}
|
Image: "woodpeckerci/plugin-git:next",
|
||||||
// TODO: migrate to woodpeckerci/plugin-git:latest (multi arch)
|
Vargs: map[string]interface{}{"depth": "0"},
|
||||||
switch c.metadata.Sys.Arch {
|
Environment: c.cloneEnv,
|
||||||
case "linux/arm":
|
|
||||||
container.Image = "plugins/git:linux-arm"
|
|
||||||
case "linux/arm64":
|
|
||||||
container.Image = "plugins/git:linux-arm64"
|
|
||||||
}
|
}
|
||||||
name := fmt.Sprintf("%s_clone", c.prefix)
|
name := fmt.Sprintf("%s_clone", c.prefix)
|
||||||
step := c.createProcess(name, container, "clone")
|
step := c.createProcess(name, container, "clone")
|
||||||
|
@ -139,6 +137,9 @@ func (c *Compiler) Compile(conf *yaml.Config) *backend.Config {
|
||||||
|
|
||||||
name := fmt.Sprintf("%s_clone_%d", c.prefix, i)
|
name := fmt.Sprintf("%s_clone_%d", c.prefix, i)
|
||||||
step := c.createProcess(name, container, "clone")
|
step := c.createProcess(name, container, "clone")
|
||||||
|
for k, v := range c.cloneEnv {
|
||||||
|
step.Environment[k] = v
|
||||||
|
}
|
||||||
stage.Steps = append(stage.Steps, step)
|
stage.Steps = append(stage.Steps, step)
|
||||||
|
|
||||||
config.Stages = append(config.Stages, stage)
|
config.Stages = append(config.Stages, stage)
|
||||||
|
|
|
@ -66,13 +66,11 @@ func WithMetadata(metadata frontend.Metadata) Option {
|
||||||
// WithNetrc configures the compiler with netrc authentication
|
// WithNetrc configures the compiler with netrc authentication
|
||||||
// credentials added by default to every container in the pipeline.
|
// credentials added by default to every container in the pipeline.
|
||||||
func WithNetrc(username, password, machine string) Option {
|
func WithNetrc(username, password, machine string) Option {
|
||||||
return WithEnviron(
|
return func(compiler *Compiler) {
|
||||||
map[string]string{
|
compiler.cloneEnv["CI_NETRC_USERNAME"] = username
|
||||||
"CI_NETRC_USERNAME": username,
|
compiler.cloneEnv["CI_NETRC_PASSWORD"] = password
|
||||||
"CI_NETRC_PASSWORD": password,
|
compiler.cloneEnv["CI_NETRC_MACHINE"] = machine
|
||||||
"CI_NETRC_MACHINE": machine,
|
}
|
||||||
},
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// WithWorkspace configures the compiler with the workspace base
|
// WithWorkspace configures the compiler with the workspace base
|
||||||
|
|
|
@ -141,13 +141,13 @@ func TestWithNetrc(t *testing.T) {
|
||||||
"github.com",
|
"github.com",
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
if compiler.env["CI_NETRC_USERNAME"] != "octocat" {
|
if compiler.cloneEnv["CI_NETRC_USERNAME"] != "octocat" {
|
||||||
t.Errorf("WithNetrc should set CI_NETRC_USERNAME")
|
t.Errorf("WithNetrc should set CI_NETRC_USERNAME")
|
||||||
}
|
}
|
||||||
if compiler.env["CI_NETRC_PASSWORD"] != "password" {
|
if compiler.cloneEnv["CI_NETRC_PASSWORD"] != "password" {
|
||||||
t.Errorf("WithNetrc should set CI_NETRC_PASSWORD")
|
t.Errorf("WithNetrc should set CI_NETRC_PASSWORD")
|
||||||
}
|
}
|
||||||
if compiler.env["CI_NETRC_MACHINE"] != "github.com" {
|
if compiler.cloneEnv["CI_NETRC_MACHINE"] != "github.com" {
|
||||||
t.Errorf("WithNetrc should set CI_NETRC_MACHINE")
|
t.Errorf("WithNetrc should set CI_NETRC_MACHINE")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue