Make manually invoked runners possible
All checks were successful
Alpine 3.20 Success

This is intended for runners that are only available on request.
This commit is contained in:
Přemysl Eric Janouch 2024-12-21 14:38:11 +01:00
parent 92fd2db1c1
commit bd13053773
Signed by: p
GPG Key ID: A0420B94F92B9493

33
acid.go
View File

@ -66,10 +66,11 @@ type Config struct {
} }
type ConfigRunner struct { type ConfigRunner struct {
Name string `yaml:"name"` // descriptive name Name string `yaml:"name"` // descriptive name
Run string `yaml:"run"` // runner executable Manual bool `yaml:"manual"` // only run on request
Setup string `yaml:"setup"` // runner setup script (SSH) Run string `yaml:"run"` // runner executable
SSH struct { Setup string `yaml:"setup"` // runner setup script (SSH)
SSH struct {
User string `yaml:"user"` // remote username User string `yaml:"user"` // remote username
Address string `yaml:"address"` // TCP host:port Address string `yaml:"address"` // TCP host:port
Identity string `yaml:"identity"` // private key path Identity string `yaml:"identity"` // private key path
@ -80,6 +81,18 @@ type ConfigProject struct {
Runners map[string]ConfigProjectRunner `yaml:"runners"` Runners map[string]ConfigProjectRunner `yaml:"runners"`
} }
func (cf *ConfigProject) AutomaticRunners() (runners []string) {
// We pass through unknown runner names,
// so that they can cause reference errors later.
for runner := range cf.Runners {
if r, _ := gConfig.Runners[runner]; !r.Manual {
runners = append(runners, runner)
}
}
sort.Strings(runners)
return
}
type ConfigProjectRunner struct { type ConfigProjectRunner struct {
Setup string `yaml:"setup"` // project setup script (SSH) Setup string `yaml:"setup"` // project setup script (SSH)
Build string `yaml:"build"` // project build script (SSH) Build string `yaml:"build"` // project build script (SSH)
@ -379,12 +392,7 @@ func handlePush(w http.ResponseWriter, r *http.Request) {
return return
} }
runners := []string{} runners := project.AutomaticRunners()
for name := range project.Runners {
runners = append(runners, name)
}
sort.Strings(runners)
if err := createTasks(r.Context(), if err := createTasks(r.Context(),
event.Repository.Owner.Username, event.Repository.Name, event.Repository.Owner.Username, event.Repository.Name,
event.HeadCommit.ID, runners); err != nil { event.HeadCommit.ID, runners); err != nil {
@ -493,11 +501,8 @@ func rpcEnqueue(ctx context.Context,
runners := fs.Args()[3:] runners := fs.Args()[3:]
if len(runners) == 0 { if len(runners) == 0 {
for runner := range project.Runners { runners = project.AutomaticRunners()
runners = append(runners, runner)
}
} }
sort.Strings(runners)
for _, runner := range runners { for _, runner := range runners {
if _, ok := project.Runners[runner]; !ok { if _, ok := project.Runners[runner]; !ok {