104 lines
2.8 KiB
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)
|
|
// }
|
|
// }
|