Revert "Do not run clone step if no pipeline step will run (#877)"

This reverts commit f05f918b8d.
This commit is contained in:
6543 2022-05-20 05:20:17 +02:00
parent 328eb98109
commit e2e094cfda
No known key found for this signature in database
GPG key ID: C99B82E40B027BAE
3 changed files with 20 additions and 39 deletions

View file

@ -183,7 +183,6 @@ func (c *Compiler) Compile(conf *yaml.Config) *backend.Config {
config.Stages = append(config.Stages, stage) config.Stages = append(config.Stages, stage)
} }
var stages []*backend.Stage
// add pipeline steps. 1 pipeline step per stage, at the moment // add pipeline steps. 1 pipeline step per stage, at the moment
var stage *backend.Stage var stage *backend.Stage
var group string var group string
@ -203,7 +202,7 @@ func (c *Compiler) Compile(conf *yaml.Config) *backend.Config {
stage = new(backend.Stage) stage = new(backend.Stage)
stage.Name = fmt.Sprintf("%s_stage_%v", c.prefix, i) stage.Name = fmt.Sprintf("%s_stage_%v", c.prefix, i)
stage.Alias = container.Name stage.Alias = container.Name
stages = append(stages, stage) config.Stages = append(config.Stages, stage)
} }
name := fmt.Sprintf("%s_step_%d", c.prefix, i) name := fmt.Sprintf("%s_step_%d", c.prefix, i)
@ -211,13 +210,6 @@ func (c *Compiler) Compile(conf *yaml.Config) *backend.Config {
stage.Steps = append(stage.Steps, step) stage.Steps = append(stage.Steps, step)
} }
if len(stages) == 0 {
// nothing will run, remove services and clone step
config.Stages = []*backend.Stage{}
} else {
config.Stages = append(config.Stages, stages...)
}
c.setupCacheRebuild(conf, config) c.setupCacheRebuild(conf, config)
return config return config

View file

@ -200,20 +200,10 @@ func PostHook(c *gin.Context) {
return return
} }
// TODO: move global pipeline filters into own check functions ... if zeroSteps(build, remoteYamlConfigs) {
if z, steps := zeroSteps(build, remoteYamlConfigs); z {
msg := "ignoring hook: step conditions yield zero runnable steps" msg := "ignoring hook: step conditions yield zero runnable steps"
log.Debug().Str("repo", repo.FullName).Msg(msg) log.Debug().Str("repo", repo.FullName).Msg(msg)
c.String(http.StatusOK, msg) c.String(http.StatusOK, msg)
build.Status = model.StatusSuccess
for _, step := range steps {
step.Proc.State = model.StatusSuccess
build.Procs = append(build.Procs, step.Proc)
}
// TODO: this wont create any builds the status can link to ...
if err := updateBuildStatus(c, build, repo, repoUser); err != nil {
log.Error().Err(err).Msg("updateBuildStatus")
}
return return
} }
@ -302,7 +292,7 @@ func branchFiltered(build *model.Build, remoteYamlConfigs []*remote.FileMeta) (b
return true, nil return true, nil
} }
func zeroSteps(build *model.Build, remoteYamlConfigs []*remote.FileMeta) (bool, []*shared.BuildItem) { func zeroSteps(build *model.Build, remoteYamlConfigs []*remote.FileMeta) bool {
b := shared.ProcBuilder{ b := shared.ProcBuilder{
Repo: &model.Repo{}, Repo: &model.Repo{},
Curr: build, Curr: build,
@ -314,16 +304,15 @@ func zeroSteps(build *model.Build, remoteYamlConfigs []*remote.FileMeta) (bool,
Yamls: remoteYamlConfigs, Yamls: remoteYamlConfigs,
} }
buildItemsNoEmpty, err := b.Build()
if err != nil {
return false, []*shared.BuildItem{}
}
b.IncludeEmpty = true
buildItems, err := b.Build() buildItems, err := b.Build()
if err != nil { if err != nil {
return false, []*shared.BuildItem{} return false
} }
return len(buildItemsNoEmpty) == 0, buildItems if len(buildItems) == 0 {
return true
}
return false
} }
func findOrPersistPipelineConfig(store store.Store, build *model.Build, remoteYamlConfig *remote.FileMeta) (*model.Config, error) { func findOrPersistPipelineConfig(store store.Store, build *model.Build, remoteYamlConfig *remote.FileMeta) (*model.Config, error) {

View file

@ -37,16 +37,15 @@ import (
// ProcBuilder Takes the hook data and the yaml and returns in internal data model // ProcBuilder Takes the hook data and the yaml and returns in internal data model
type ProcBuilder struct { type ProcBuilder struct {
Repo *model.Repo Repo *model.Repo
Curr *model.Build Curr *model.Build
Last *model.Build Last *model.Build
Netrc *model.Netrc Netrc *model.Netrc
Secs []*model.Secret Secs []*model.Secret
Regs []*model.Registry Regs []*model.Registry
Link string Link string
Yamls []*remote.FileMeta Yamls []*remote.FileMeta
Envs map[string]string Envs map[string]string
IncludeEmpty bool
} }
type BuildItem struct { type BuildItem struct {
@ -115,7 +114,7 @@ func (b *ProcBuilder) Build() ([]*BuildItem, error) {
ir := b.toInternalRepresentation(parsed, environ, metadata, proc.ID) ir := b.toInternalRepresentation(parsed, environ, metadata, proc.ID)
if len(ir.Stages) == 0 && !b.IncludeEmpty { if len(ir.Stages) == 0 {
continue continue
} }
@ -139,6 +138,7 @@ func (b *ProcBuilder) Build() ([]*BuildItem, error) {
items = filterItemsWithMissingDependencies(items) items = filterItemsWithMissingDependencies(items)
// check if at least one proc can start, if list is not empty // check if at least one proc can start, if list is not empty
procListContainsItemsToRun(items)
if len(items) > 0 && !procListContainsItemsToRun(items) { if len(items) > 0 && !procListContainsItemsToRun(items) {
return nil, fmt.Errorf("build has no startpoint") return nil, fmt.Errorf("build has no startpoint")
} }