Reconcile removed analysis artifacts
This commit is contained in:
@@ -71,25 +71,19 @@ func (analyzeStage) Run(ctx context.Context, env *Env, m *manifest.Manifest) (*S
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("analyze: resolve run-stage layout: %w", err)
|
||||
}
|
||||
if env.Config.Pipeline.Scriptorium == nil {
|
||||
return &StageResult{Metadata: map[string]any{
|
||||
"stage": "analyze",
|
||||
"skipped": true,
|
||||
"reason": "pipeline.scriptorium is not configured",
|
||||
}}, nil
|
||||
}
|
||||
if len(env.Config.Pipeline.Scriptorium.Artifacts) == 0 {
|
||||
return &StageResult{Metadata: map[string]any{
|
||||
"stage": "analyze",
|
||||
"skipped": true,
|
||||
"reason": "no scriptorium artifacts configured",
|
||||
}}, nil
|
||||
scriptoriumCfg := env.Config.Pipeline.Scriptorium
|
||||
noWorkReason := ""
|
||||
if scriptoriumCfg == nil {
|
||||
noWorkReason = "pipeline.scriptorium is not configured"
|
||||
scriptoriumCfg = &config.ScriptoriumConfig{}
|
||||
} else if len(scriptoriumCfg.Artifacts) == 0 {
|
||||
noWorkReason = "no scriptorium artifacts configured"
|
||||
}
|
||||
|
||||
effective := env.EffectiveArtifacts
|
||||
if !effective.Resolved() {
|
||||
effective, err = artifacts.ResolveEffectiveArtifactSet(
|
||||
artifacts.ConfiguredArtifactDefinitions(env.Config.Pipeline.Scriptorium.Artifacts),
|
||||
artifacts.ConfiguredArtifactDefinitions(scriptoriumCfg.Artifacts),
|
||||
env.SelectedArtifactKeys,
|
||||
)
|
||||
if err != nil {
|
||||
@@ -100,7 +94,7 @@ func (analyzeStage) Run(ctx context.Context, env *Env, m *manifest.Manifest) (*S
|
||||
runtimeCatalog, err := buildAnalyzeRuntimeArtifactCatalog(
|
||||
paths,
|
||||
m,
|
||||
env.Config.Pipeline.Scriptorium,
|
||||
scriptoriumCfg,
|
||||
env.Config.Pipeline.Notarius,
|
||||
effective,
|
||||
)
|
||||
@@ -108,12 +102,8 @@ func (analyzeStage) Run(ctx context.Context, env *Env, m *manifest.Manifest) (*S
|
||||
return nil, fmt.Errorf("analyze: build runtime artifact catalog: %w", err)
|
||||
}
|
||||
|
||||
if len(effective.Keys()) == 0 {
|
||||
return &StageResult{Metadata: map[string]any{
|
||||
"stage": "analyze",
|
||||
"skipped": true,
|
||||
"reason": "no selected scriptorium artifacts to execute",
|
||||
}}, nil
|
||||
if len(effective.Keys()) == 0 && noWorkReason == "" {
|
||||
noWorkReason = "no selected scriptorium artifacts to execute"
|
||||
}
|
||||
|
||||
execution := analyzeExecutionContext{
|
||||
@@ -125,12 +115,12 @@ func (analyzeStage) Run(ctx context.Context, env *Env, m *manifest.Manifest) (*S
|
||||
TranscriptRefs: discoverAnalyzeTranscriptRefs(m, paths),
|
||||
Catalog: runtimeCatalog,
|
||||
}
|
||||
reconciliation, err := reconcileAnalyzeArtifacts(env.Config.Pipeline.Scriptorium, execution)
|
||||
reconciliation, err := reconcileAnalyzeArtifacts(scriptoriumCfg, execution)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("analyze: reconcile configured artifacts: %w", err)
|
||||
}
|
||||
workPlan, err := planAnalyzeWork(
|
||||
env.Config.Pipeline.Scriptorium,
|
||||
scriptoriumCfg,
|
||||
env.SelectedArtifactKeys,
|
||||
env.Force,
|
||||
reconciliation,
|
||||
@@ -148,10 +138,10 @@ func (analyzeStage) Run(ctx context.Context, env *Env, m *manifest.Manifest) (*S
|
||||
}
|
||||
|
||||
for _, item := range workPlan.ExecutionOrder {
|
||||
artifactCfg := env.Config.Pipeline.Scriptorium.Artifacts[item.Key]
|
||||
artifactCfg := scriptoriumCfg.Artifacts[item.Key]
|
||||
fingerprint, _, _, err := computeAnalyzeArtifactFingerprint(
|
||||
item.Key,
|
||||
env.Config.Pipeline.Scriptorium,
|
||||
scriptoriumCfg,
|
||||
execution,
|
||||
)
|
||||
if err != nil {
|
||||
@@ -167,7 +157,12 @@ func (analyzeStage) Run(ctx context.Context, env *Env, m *manifest.Manifest) (*S
|
||||
return state.failedResult(item, artifactCfg, fingerprint, err), err
|
||||
}
|
||||
}
|
||||
return state.successResult(), nil
|
||||
result := state.successResult()
|
||||
if noWorkReason != "" {
|
||||
result.Metadata["skipped"] = true
|
||||
result.Metadata["reason"] = noWorkReason
|
||||
}
|
||||
return result, nil
|
||||
}
|
||||
|
||||
func analyzeArtifactOrigin(execution analyzeExecutionContext, key string) (config.ArtifactFamilyMemberOrigin, bool) {
|
||||
|
||||
Reference in New Issue
Block a user