aboutsummaryrefslogtreecommitdiff
path: root/acid.go
diff options
context:
space:
mode:
authorPřemysl Eric Janouch <p@janouch.name>2024-12-21 14:38:11 +0100
committerPřemysl Eric Janouch <p@janouch.name>2024-12-21 14:38:21 +0100
commit5fd64b3420c9f90463e7c93e20cd9dca599321d5 (patch)
tree5548bc24e6ac6eda925746dde2d59f35585f4680 /acid.go
parent92fd2db1c17a2ec3f7bd19f0e8543ad1ef7cf92b (diff)
downloadacid-5fd64b3420c9f90463e7c93e20cd9dca599321d5.tar.gz
acid-5fd64b3420c9f90463e7c93e20cd9dca599321d5.tar.xz
acid-5fd64b3420c9f90463e7c93e20cd9dca599321d5.zip
Make manually invoked runners possible
This is intended for runners that are only available on request.
Diffstat (limited to 'acid.go')
-rw-r--r--acid.go32
1 files changed, 19 insertions, 13 deletions
diff --git a/acid.go b/acid.go
index b206057..f7b59cf 100644
--- a/acid.go
+++ b/acid.go
@@ -66,10 +66,11 @@ type Config struct {
}
type ConfigRunner struct {
- Name string `yaml:"name"` // descriptive name
- Run string `yaml:"run"` // runner executable
- Setup string `yaml:"setup"` // runner setup script (SSH)
- SSH struct {
+ Name string `yaml:"name"` // descriptive name
+ Manual bool `yaml:"manual"` // only run on request
+ Run string `yaml:"run"` // runner executable
+ Setup string `yaml:"setup"` // runner setup script (SSH)
+ SSH struct {
User string `yaml:"user"` // remote username
Address string `yaml:"address"` // TCP host:port
Identity string `yaml:"identity"` // private key path
@@ -80,6 +81,18 @@ type ConfigProject struct {
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 {
Setup string `yaml:"setup"` // project setup script (SSH)
Build string `yaml:"build"` // project build script (SSH)
@@ -379,12 +392,7 @@ func handlePush(w http.ResponseWriter, r *http.Request) {
return
}
- runners := []string{}
- for name := range project.Runners {
- runners = append(runners, name)
- }
- sort.Strings(runners)
-
+ runners := project.AutomaticRunners()
if err := createTasks(r.Context(),
event.Repository.Owner.Username, event.Repository.Name,
event.HeadCommit.ID, runners); err != nil {
@@ -493,9 +501,7 @@ func rpcEnqueue(ctx context.Context,
runners := fs.Args()[3:]
if len(runners) == 0 {
- for runner := range project.Runners {
- runners = append(runners, runner)
- }
+ runners = project.AutomaticRunners()
}
sort.Strings(runners)