This commit is contained in:
“xHuPo” 2025-05-22 11:43:23 +08:00
parent 16c053bacb
commit 55f3e2b3c6
9 changed files with 580 additions and 0 deletions

71
v3/main.go Normal file
View file

@ -0,0 +1,71 @@
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)
}
}
}
}
}