Add option to configure workspace on host (#238)
Adds a new section to the configuration which is used to control options when running in host mode. The first option added is to allow configuration of the location workspaces get created in. Depends on ~~gitea/act#65~~ Will resolve #235 Reviewed-on: https://gitea.com/gitea/act_runner/pulls/238 Reviewed-by: Jason Song <i@wolfogre.com> Co-authored-by: Marius Zwicker <marius.zwicker@mlba-team.de> Co-committed-by: Marius Zwicker <marius.zwicker@mlba-team.de>
This commit is contained in:
parent
32d29f0813
commit
34d15f21c2
3 changed files with 18 additions and 2 deletions
|
@ -175,8 +175,9 @@ func (r *Runner) run(ctx context.Context, task *runnerv1.Task, reporter *report.
|
||||||
runnerConfig := &runner.Config{
|
runnerConfig := &runner.Config{
|
||||||
// On Linux, Workdir will be like "/<parent_directory>/<owner>/<repo>"
|
// On Linux, Workdir will be like "/<parent_directory>/<owner>/<repo>"
|
||||||
// On Windows, Workdir will be like "\<parent_directory>\<owner>\<repo>"
|
// On Windows, Workdir will be like "\<parent_directory>\<owner>\<repo>"
|
||||||
Workdir: filepath.FromSlash(fmt.Sprintf("/%s/%s", r.cfg.Container.WorkdirParent, preset.Repository)),
|
Workdir: filepath.FromSlash(fmt.Sprintf("/%s/%s", r.cfg.Container.WorkdirParent, preset.Repository)),
|
||||||
BindWorkdir: false,
|
BindWorkdir: false,
|
||||||
|
ActionCacheDir: filepath.FromSlash(r.cfg.Host.WorkdirParent),
|
||||||
|
|
||||||
ReuseContainers: false,
|
ReuseContainers: false,
|
||||||
ForcePull: false,
|
ForcePull: false,
|
||||||
|
|
|
@ -72,3 +72,8 @@ container:
|
||||||
# default value is the value of DOCKER_HOST environment variable.
|
# default value is the value of DOCKER_HOST environment variable.
|
||||||
# if DOCKER_HOST is not set, the default value is unix:///var/run/docker.sock
|
# if DOCKER_HOST is not set, the default value is unix:///var/run/docker.sock
|
||||||
docker_host: ""
|
docker_host: ""
|
||||||
|
|
||||||
|
host:
|
||||||
|
# The parent directory of a job's working directory.
|
||||||
|
# If it's empty, $HOME/.cache/act/ will be used.
|
||||||
|
workdir_parent:
|
||||||
|
|
|
@ -51,12 +51,18 @@ type Container struct {
|
||||||
DockerHost string `yaml:"docker_host"` // DockerHost specifies the Docker host. It overrides the value specified in environment variable DOCKER_HOST.
|
DockerHost string `yaml:"docker_host"` // DockerHost specifies the Docker host. It overrides the value specified in environment variable DOCKER_HOST.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Host represents the configuration for the host.
|
||||||
|
type Host struct {
|
||||||
|
WorkdirParent string `yaml:"workdir_parent"` // WorkdirParent specifies the parent directory for the host's working directory.
|
||||||
|
}
|
||||||
|
|
||||||
// Config represents the overall configuration.
|
// Config represents the overall configuration.
|
||||||
type Config struct {
|
type Config struct {
|
||||||
Log Log `yaml:"log"` // Log represents the configuration for logging.
|
Log Log `yaml:"log"` // Log represents the configuration for logging.
|
||||||
Runner Runner `yaml:"runner"` // Runner represents the configuration for the runner.
|
Runner Runner `yaml:"runner"` // Runner represents the configuration for the runner.
|
||||||
Cache Cache `yaml:"cache"` // Cache represents the configuration for caching.
|
Cache Cache `yaml:"cache"` // Cache represents the configuration for caching.
|
||||||
Container Container `yaml:"container"` // Container represents the configuration for the container.
|
Container Container `yaml:"container"` // Container represents the configuration for the container.
|
||||||
|
Host Host `yaml:"host"` // Host represents the configuration for the host.
|
||||||
}
|
}
|
||||||
|
|
||||||
// LoadDefault returns the default configuration.
|
// LoadDefault returns the default configuration.
|
||||||
|
@ -111,6 +117,10 @@ func LoadDefault(file string) (*Config, error) {
|
||||||
if cfg.Container.WorkdirParent == "" {
|
if cfg.Container.WorkdirParent == "" {
|
||||||
cfg.Container.WorkdirParent = "workspace"
|
cfg.Container.WorkdirParent = "workspace"
|
||||||
}
|
}
|
||||||
|
if cfg.Host.WorkdirParent == "" {
|
||||||
|
home, _ := os.UserHomeDir()
|
||||||
|
cfg.Container.WorkdirParent = filepath.Join(home, ".cache", "act")
|
||||||
|
}
|
||||||
if cfg.Runner.FetchTimeout <= 0 {
|
if cfg.Runner.FetchTimeout <= 0 {
|
||||||
cfg.Runner.FetchTimeout = 5 * time.Second
|
cfg.Runner.FetchTimeout = 5 * time.Second
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue