71 lines
1.9 KiB
Go
71 lines
1.9 KiB
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"log"
|
|
)
|
|
|
|
func main() {
|
|
cfg, _ := LoadConfig("/app")
|
|
|
|
if len(cfg.Jobs) == 0 {
|
|
log.Printf("[main] No jobs configured")
|
|
return
|
|
}
|
|
if cfg.Jenkins.URL == "" {
|
|
log.Printf("[main] No Jenkins URL configured")
|
|
return
|
|
}
|
|
|
|
ctx := context.Background()
|
|
stats := &RemoveStats{}
|
|
|
|
for _, cache := range cfg.Gradle.Caches {
|
|
err := Remove(ctx, cache, RemoveOptions{
|
|
Workers: 4,
|
|
Retries: 3,
|
|
Stats: stats,
|
|
Logger: log.Printf,
|
|
Progress: func(current int64) { log.Printf("[main] Removed %d files", current) },
|
|
})
|
|
if err != nil {
|
|
log.Printf("[main] Error removing cache %s: %s", cache, err)
|
|
}
|
|
log.Printf("Summary: Total=%d Success=%d Failed=%d", stats.Total, stats.Success, stats.Failed)
|
|
}
|
|
|
|
var jenkinsSvc JenkinsService = NewJenkinsClient(&cfg.Jenkins)
|
|
triggerJobs(jenkinsSvc, cfg)
|
|
|
|
}
|
|
|
|
func triggerJobs(js JenkinsService, cfg *Config) {
|
|
for _, job := range cfg.Jobs {
|
|
log.Printf("[main] Triggering build for job %s", job)
|
|
build, err := js.FetchBuild(job)
|
|
if err != nil {
|
|
log.Printf("[main] Error fetching build for job %s: %s", job, err)
|
|
return
|
|
}
|
|
|
|
for i := 0; i < cfg.Retries; i++ {
|
|
latestParams := ExtractBuildParams(build)
|
|
merged := MergeParams(latestParams, cfg.Jenkins.DefaultParameters)
|
|
|
|
if err := js.TriggerBuild(build, StringMapToInterfaceMap(merged)); err != nil {
|
|
log.Printf("[main] Error triggering build for job %s: %s", job, err)
|
|
}
|
|
|
|
for _, special := range cfg.Jenkins.SpecialParameters {
|
|
if IsSubset(latestParams, special) {
|
|
log.Printf("[main] Skipping special parameters build (subset of latest) for %s: %+v", job, special)
|
|
continue
|
|
}
|
|
log.Printf("[main] Triggering special parameters build for %s: %+v", job, special)
|
|
if err := js.TriggerBuild(build, special); err != nil {
|
|
log.Printf("[main] Error triggering special parameters build for job %s: %s", job, err)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|