harness-drone/trigger/skip.go

104 lines
2.8 KiB
Go

// Copyright 2019 Drone IO, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package trigger
import (
"strings"
"github.com/drone/drone-yaml/yaml"
"github.com/drone/drone/core"
)
func skipBranch(document *yaml.Pipeline, branch string) bool {
return !document.Trigger.Branch.Match(branch)
}
func skipRef(document *yaml.Pipeline, ref string) bool {
return !document.Trigger.Ref.Match(ref)
}
func skipEvent(document *yaml.Pipeline, event string) bool {
return !document.Trigger.Event.Match(event)
}
func skipAction(document *yaml.Pipeline, action string) bool {
return !document.Trigger.Action.Match(action)
}
func skipInstance(document *yaml.Pipeline, instance string) bool {
return !document.Trigger.Instance.Match(instance)
}
func skipTarget(document *yaml.Pipeline, env string) bool {
return !document.Trigger.Target.Match(env)
}
func skipRepo(document *yaml.Pipeline, repo string) bool {
return !document.Trigger.Repo.Match(repo)
}
func skipCron(document *yaml.Pipeline, cron string) bool {
return !document.Trigger.Cron.Match(cron)
}
func skipMessage(hook *core.Hook) bool {
switch {
case hook.Event == core.EventTag:
return false
case hook.Event == core.EventCron:
return false
case hook.Event == core.EventCustom:
return false
case hook.Event == core.EventPromote:
return false
case hook.Event == core.EventRollback:
return false
case skipMessageEval(hook.Message):
return true
case skipMessageEval(hook.Title):
return true
default:
return false
}
}
func skipMessageEval(str string) bool {
lower := strings.ToLower(str)
switch {
case strings.Contains(lower, "[ci skip]"),
strings.Contains(lower, "[skip ci]"),
strings.Contains(lower, "***no_ci***"):
return true
default:
return false
}
}
// func skipPaths(document *config.Config, paths []string) bool {
// switch {
// // changed files are only returned for push and pull request
// // events. If the list of changed files is empty the system will
// // force-run all pipelines and pipeline steps
// case len(paths) == 0:
// return false
// // github returns a maximum of 300 changed files from the
// // api response. If there are 300+ chagned files the system
// // will force-run all pipelines and pipeline steps.
// case len(paths) >= 300:
// return false
// default:
// return !document.Trigger.Paths.MatchAny(paths)
// }
// }