diff --git a/pkg/runner/run_context.go b/pkg/runner/run_context.go index e6f5dfc749b..acffb76dc95 100644 --- a/pkg/runner/run_context.go +++ b/pkg/runner/run_context.go @@ -420,8 +420,9 @@ func (rc *RunContext) startContainer() common.Executor { } func (rc *RunContext) IsHostEnv(ctx context.Context) bool { - image := rc.platformImage(ctx) - return strings.EqualFold(image, "-self-hosted") + platform := rc.runsOnImage(ctx) + image := rc.containerImage(ctx) + return image == "" && strings.EqualFold(platform, "-self-hosted") } func (rc *RunContext) stopContainer() common.Executor { @@ -474,7 +475,7 @@ func (rc *RunContext) Executor() common.Executor { } } -func (rc *RunContext) platformImage(ctx context.Context) string { +func (rc *RunContext) containerImage(ctx context.Context) string { job := rc.Run.Job() c := job.Container() @@ -482,6 +483,12 @@ func (rc *RunContext) platformImage(ctx context.Context) string { return rc.ExprEval.Interpolate(ctx, c.Image) } + return "" +} + +func (rc *RunContext) runsOnImage(ctx context.Context) string { + job := rc.Run.Job() + if job.RunsOn() == nil { common.Logger(ctx).Errorf("'runs-on' key not defined in %s", rc.String()) } @@ -497,6 +504,14 @@ func (rc *RunContext) platformImage(ctx context.Context) string { return "" } +func (rc *RunContext) platformImage(ctx context.Context) string { + if containerImage := rc.containerImage(ctx); containerImage != "" { + return containerImage + } + + return rc.runsOnImage(ctx) +} + func (rc *RunContext) options(ctx context.Context) string { job := rc.Run.Job() c := job.Container()