add skip_parameters
This commit is contained in:
parent
94d71a1e12
commit
b14c215990
3 changed files with 21 additions and 8 deletions
|
@ -24,6 +24,7 @@ type Jenkins struct {
|
||||||
Number string `mapstructure:"number" validate:"required"`
|
Number string `mapstructure:"number" validate:"required"`
|
||||||
DefaultParameters []map[string]interface{} `mapstructure:"default_parameters"`
|
DefaultParameters []map[string]interface{} `mapstructure:"default_parameters"`
|
||||||
SpecialParameters []map[string]interface{} `mapstructure:"special_parameters"`
|
SpecialParameters []map[string]interface{} `mapstructure:"special_parameters"`
|
||||||
|
SkipParameters []map[string]interface{} `mapstructure:"skip_parameters"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Config represents the application configuration
|
// Config represents the application configuration
|
||||||
|
|
|
@ -11,6 +11,7 @@ jenkins:
|
||||||
default_parameters:
|
default_parameters:
|
||||||
- only_build: true
|
- only_build: true
|
||||||
special_parameters: []
|
special_parameters: []
|
||||||
|
skip_parameters: []
|
||||||
|
|
||||||
retries: 2
|
retries: 2
|
||||||
jobs:
|
jobs:
|
||||||
|
|
27
v3.1/main.go
27
v3.1/main.go
|
@ -185,13 +185,24 @@ func processJob(ctx context.Context, js JenkinsService, cfg *Config, job string)
|
||||||
|
|
||||||
// Extract and merge parameters
|
// Extract and merge parameters
|
||||||
latestParams := ExtractBuildParams(build)
|
latestParams := ExtractBuildParams(build)
|
||||||
merged := MergeParams(latestParams, cfg.Jenkins.DefaultParameters)
|
|
||||||
|
|
||||||
// Trigger build with default parameters
|
skipLatestBuild := false
|
||||||
log.Printf("[MAIN] Triggering build with default parameters for job: %s", job)
|
for _, skip := range cfg.Jenkins.SkipParameters {
|
||||||
if err := js.TriggerBuildWithRetry(ctx, build, StringMapToInterfaceMap(merged), cfg.Retries); err != nil {
|
if IsSubset(latestParams, skip) {
|
||||||
log.Printf("[MAIN] Failed to trigger build with default parameters for job %s: %v", job, err)
|
log.Printf("[MAIN] Skipping build (subset of latest) for job %s: %+v", job, skip)
|
||||||
// Continue with special parameters even if default build fails
|
skipLatestBuild = true
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if !skipLatestBuild {
|
||||||
|
merged := MergeParams(latestParams, cfg.Jenkins.DefaultParameters)
|
||||||
|
// Trigger build with default parameters
|
||||||
|
log.Printf("[MAIN] Triggering build with default parameters for job: %s", job)
|
||||||
|
if err := js.TriggerBuildWithRetry(ctx, build, StringMapToInterfaceMap(merged), cfg.Retries); err != nil {
|
||||||
|
log.Printf("[MAIN] Failed to trigger build with default parameters for job %s: %v", job, err)
|
||||||
|
// Continue with special parameters even if default build fails
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Process special parameters
|
// Process special parameters
|
||||||
|
@ -210,8 +221,8 @@ func processJob(ctx context.Context, js JenkinsService, cfg *Config, job string)
|
||||||
specialLatestParams[k] = fmt.Sprintf("%v", v)
|
specialLatestParams[k] = fmt.Sprintf("%v", v)
|
||||||
}
|
}
|
||||||
|
|
||||||
speciaMerged := MergeParams(specialLatestParams, cfg.Jenkins.DefaultParameters)
|
specialMerged := MergeParams(specialLatestParams, cfg.Jenkins.DefaultParameters)
|
||||||
if err := js.TriggerBuildWithRetry(ctx, build, StringMapToInterfaceMap(speciaMerged), cfg.Retries); err != nil {
|
if err := js.TriggerBuildWithRetry(ctx, build, StringMapToInterfaceMap(specialMerged), cfg.Retries); err != nil {
|
||||||
log.Printf("[MAIN] Failed to trigger build with special parameters for job %s: %v", job, err)
|
log.Printf("[MAIN] Failed to trigger build with special parameters for job %s: %v", job, err)
|
||||||
// Continue with other special parameters even if one fails
|
// Continue with other special parameters even if one fails
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue