mirror of
https://gitea.com/gitea/act_runner.git
synced 2025-12-16 19:14:46 +00:00
Allow configuration of default platform if no runs-on labels match
This commit is contained in:
@@ -206,7 +206,7 @@ func (r *Runner) run(ctx context.Context, task *runnerv1.Task, reporter *report.
|
||||
ContainerDaemonSocket: r.cfg.Container.DockerHost,
|
||||
Privileged: r.cfg.Container.Privileged,
|
||||
DefaultActionInstance: taskContext["gitea_default_actions_url"].GetStringValue(),
|
||||
PlatformPicker: r.labels.PickPlatform,
|
||||
PlatformPicker: r.pickPlatform,
|
||||
Vars: task.Vars,
|
||||
ValidVolumes: r.cfg.Container.ValidVolumes,
|
||||
InsecureSkipTLS: r.cfg.Runner.Insecure,
|
||||
@@ -238,3 +238,11 @@ func (r *Runner) Declare(ctx context.Context, labels []string) (*connect.Respons
|
||||
Labels: labels,
|
||||
}))
|
||||
}
|
||||
|
||||
func (r *Runner) pickPlatform(labels []string) string {
|
||||
platform := r.labels.PickPlatform(labels)
|
||||
if platform == "" {
|
||||
platform = r.cfg.Runner.DefaultPlatform
|
||||
}
|
||||
return platform
|
||||
}
|
||||
|
||||
@@ -41,6 +41,8 @@ runner:
|
||||
- "ubuntu-latest:docker://gitea/runner-images:ubuntu-latest"
|
||||
- "ubuntu-22.04:docker://gitea/runner-images:ubuntu-22.04"
|
||||
- "ubuntu-20.04:docker://gitea/runner-images:ubuntu-20.04"
|
||||
# If no labels match the job's runs-on, this will be used
|
||||
default_platform: "gitea/runner-images:ubuntu-latest"
|
||||
|
||||
cache:
|
||||
# Enable cache server to use actions/cache.
|
||||
@@ -70,7 +72,7 @@ container:
|
||||
# And other options to be used when the container is started (eg, --add-host=my.gitea.url:host-gateway).
|
||||
options:
|
||||
# The parent directory of a job's working directory.
|
||||
# NOTE: There is no need to add the first '/' of the path as act_runner will add it automatically.
|
||||
# NOTE: There is no need to add the first '/' of the path as act_runner will add it automatically.
|
||||
# If the path starts with '/', the '/' will be trimmed.
|
||||
# For example, if the parent directory is /path/to/my/dir, workdir_parent should be path/to/my/dir
|
||||
# If it's empty, /workspace will be used.
|
||||
|
||||
@@ -31,6 +31,7 @@ type Runner struct {
|
||||
FetchTimeout time.Duration `yaml:"fetch_timeout"` // FetchTimeout specifies the timeout duration for fetching resources.
|
||||
FetchInterval time.Duration `yaml:"fetch_interval"` // FetchInterval specifies the interval duration for fetching resources.
|
||||
Labels []string `yaml:"labels"` // Labels specify the labels of the runner. Labels are declared on each startup
|
||||
DefaultPlatform string `yaml:"default_platform"` // DefaultPlatform specify the image to be used if no runs-on matches our labels
|
||||
}
|
||||
|
||||
// Cache represents the configuration for caching.
|
||||
|
||||
@@ -79,7 +79,7 @@ func (l Labels) PickPlatform(runsOn []string) string {
|
||||
// So the runner receives a task with a label that the runner doesn't have,
|
||||
// it happens when the user have edited the label of the runner in the web UI.
|
||||
// TODO: it may be not correct, what if the runner is used as host mode only?
|
||||
return "gitea/runner-images:ubuntu-latest"
|
||||
return ""
|
||||
}
|
||||
|
||||
func (l Labels) Names() []string {
|
||||
|
||||
Reference in New Issue
Block a user