runconfig: set task default shell
Currently, if no shell is defined in the task and in the step, the executor will use an hardcoded default shell. This will cause changed run behavior if we add an option to globally set the agola default shell. To avoid this set the task shell to the default shell inside the runconfig if it's empty so future executions will always use this value.
This commit is contained in:
parent
512fdb361a
commit
51e9a32db7
|
@ -26,6 +26,10 @@ import (
|
||||||
errors "golang.org/x/xerrors"
|
errors "golang.org/x/xerrors"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
defaultShell = "/bin/sh -e"
|
||||||
|
)
|
||||||
|
|
||||||
func genRuntime(c *config.Config, ce *config.Runtime, variables map[string]string) *rstypes.Runtime {
|
func genRuntime(c *config.Config, ce *config.Runtime, variables map[string]string) *rstypes.Runtime {
|
||||||
containers := []*rstypes.Container{}
|
containers := []*rstypes.Container{}
|
||||||
for _, cc := range ce.Containers {
|
for _, cc := range ce.Containers {
|
||||||
|
@ -206,6 +210,10 @@ func GenRunConfigTasks(uuid util.UUIDGenerator, c *config.Config, runName string
|
||||||
DockerRegistriesAuth: make(map[string]rstypes.DockerRegistryAuth),
|
DockerRegistriesAuth: make(map[string]rstypes.DockerRegistryAuth),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if t.Shell == "" {
|
||||||
|
t.Shell = defaultShell
|
||||||
|
}
|
||||||
|
|
||||||
if c.DockerRegistriesAuth != nil {
|
if c.DockerRegistriesAuth != nil {
|
||||||
for regname, auth := range c.DockerRegistriesAuth {
|
for regname, auth := range c.DockerRegistriesAuth {
|
||||||
t.DockerRegistriesAuth[regname] = rstypes.DockerRegistryAuth{
|
t.DockerRegistriesAuth[regname] = rstypes.DockerRegistryAuth{
|
||||||
|
|
|
@ -801,6 +801,7 @@ func TestGenRunConfig(t *testing.T) {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
Shell: "/bin/sh -e",
|
||||||
Environment: map[string]string{
|
Environment: map[string]string{
|
||||||
"ENV01": "ENV01",
|
"ENV01": "ENV01",
|
||||||
"ENVFROMVARIABLE01": "VARVALUE01",
|
"ENVFROMVARIABLE01": "VARVALUE01",
|
||||||
|
@ -876,6 +877,7 @@ func TestGenRunConfig(t *testing.T) {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
Shell: "/bin/sh -e",
|
||||||
Environment: map[string]string{},
|
Environment: map[string]string{},
|
||||||
Steps: rstypes.Steps{
|
Steps: rstypes.Steps{
|
||||||
&rstypes.RunStep{BaseStep: rstypes.BaseStep{Type: "run", Name: "command01"}, Command: "command01", Environment: map[string]string{}},
|
&rstypes.RunStep{BaseStep: rstypes.BaseStep{Type: "run", Name: "command01"}, Command: "command01", Environment: map[string]string{}},
|
||||||
|
@ -973,6 +975,7 @@ func TestGenRunConfig(t *testing.T) {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
Shell: "/bin/sh -e",
|
||||||
Environment: map[string]string{},
|
Environment: map[string]string{},
|
||||||
Steps: rstypes.Steps{
|
Steps: rstypes.Steps{
|
||||||
&rstypes.RunStep{BaseStep: rstypes.BaseStep{Type: "run", Name: "command01"}, Command: "command01", Environment: map[string]string{}},
|
&rstypes.RunStep{BaseStep: rstypes.BaseStep{Type: "run", Name: "command01"}, Command: "command01", Environment: map[string]string{}},
|
||||||
|
|
|
@ -109,6 +109,8 @@ func (e *Executor) doRunStep(ctx context.Context, s *types.RunStep, t *types.Exe
|
||||||
}
|
}
|
||||||
defer outf.Close()
|
defer outf.Close()
|
||||||
|
|
||||||
|
// TODO(sgotti) this line is used only for old runconfig versions that don't
|
||||||
|
// set a task default shell in the runconfig
|
||||||
shell := defaultShell
|
shell := defaultShell
|
||||||
if t.Shell != "" {
|
if t.Shell != "" {
|
||||||
shell = t.Shell
|
shell = t.Shell
|
||||||
|
|
Loading…
Reference in New Issue