From 2da1728c7046c227a9442dcf36df630ab64cd054 Mon Sep 17 00:00:00 2001 From: Brad Rydzewski Date: Wed, 11 May 2016 21:28:49 -0700 Subject: [PATCH] enabled "change" status --- agent/agent.go | 3 +++ yaml/transform/filter.go | 17 +++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/agent/agent.go b/agent/agent.go index c76eca72a..88106d5ca 100644 --- a/agent/agent.go +++ b/agent/agent.go @@ -133,6 +133,9 @@ func (a *Agent) prep(w *queue.Work) (*yaml.Config, error) { transform.Clone(conf, w.Repo.Kind) transform.Environ(conf, envs) transform.DefaultFilter(conf) + if w.BuildLast != nil { + transform.ChangeFilter(conf, w.BuildLast.Status) + } transform.ImageSecrets(conf, secrets, w.Build.Event) transform.Identifier(conf) diff --git a/yaml/transform/filter.go b/yaml/transform/filter.go index 9a36245e9..1d1ecb478 100644 --- a/yaml/transform/filter.go +++ b/yaml/transform/filter.go @@ -5,6 +5,23 @@ import ( "github.com/drone/drone/yaml" ) +// ChangeFilter is a transform function that alters status constraints set to +// change and replaces with the opposite of the prior status. +func ChangeFilter(conf *yaml.Config, prev string) { + for _, step := range conf.Pipeline { + for i, status := range step.Constraints.Status.Include { + if status != "change" && status != "changed" { + continue + } + if prev == model.StatusFailure { + step.Constraints.Status.Include[i] = model.StatusSuccess + } else { + step.Constraints.Status.Include[i] = model.StatusFailure + } + } + } +} + // DefaultFilter is a transform function that applies default Filters to each // step in the Yaml specification file. func DefaultFilter(conf *yaml.Config) {