Filter by context can provide a boolean result based on the conditions in which a project is being built combined with user-provided filters. This is used by Jervis to improve overall flexibility in how builds should be filtered.
Map context = [
trigger: '',
context: '',
metadata: [:]
]
Valid values for trigger include: manually, cron, pr_comment, push.
Valid values for context include: pr, branch, tag.
The following HashMap is the supported keys. You can see an example of this
in the
getBuildContextMap()
Jenkins pipeline step.
Map context = [
trigger: 'push',
context: 'pr',
metadata: [
pr: false,
branch: ''
tag: '',
push: false,
cron: false,
manually: '',
pr_comment: ''
]
]
The metadata values are defined as:
To run this example, clone Jervis and execute ./gradlew console to bring up a Groovy Console with the classpath set up.
import net.gleske.jervis.tools.FilterByContext
Map context = [
trigger: 'push',
context: 'pr',
metadata: [
push: true,
pr: true,
branch: '',
tag: ''
]
]
def filters = 'pr'
FilterByContext filterShould = new FilterByContext(context, filters)
// returns true because it is a pull request build
filterShould.allowBuild
Type | Name and description |
---|---|
Map |
context A build environment context necessary for implementing filters around whether or not a build should occur. |
List |
filters A list of user-provided filters where a filter can be a single string or a filter map. |
int |
maxRecursionDepth The maximum depth recursion should be allowed when evaluating user-provided filters. |
Constructor and description |
---|
FilterByContext
() It is an error to instantiate this class without a build environment context and a user-provided filter. |
FilterByContext
(Map context) Instantiate a default FilterByContext instance which will always allow the build to proceed. |
FilterByContext
(Map context, List filters) Instantiate a context and provide filters for potentially skipping builds depending on context. |
FilterByContext
(Map context, String filter) |
FilterByContext
(Map context, Map filter) |
Type Params | Return Type | Name and description |
---|---|---|
|
Boolean |
getAllowBuild() Evaluate the full list of complex filters provided by the user and provide a single result based on context of how a build was triggered and at what point in the Git workflow the job is building (pr, branch, or tag). |
|
static List |
getAlwaysBuildExpression() Get an expression which will always result in allowBuild returning true. |
|
void |
setFilters(def filters) Sets a filter to be evaluated against a context. |
A build environment context necessary for implementing filters around whether or not a build should occur.
A list of user-provided filters where a filter can be a single string or a filter map.
The maximum depth recursion should be allowed when evaluating user-provided filters. This is for protection against infinite loops.
It is an error to instantiate this class without a build environment context and a user-provided filter.
Instantiate a default FilterByContext instance which will always allow the build to proceed.
context
- A context map defining the current state of the build
environment and how it was triggered.Instantiate a context and provide filters for potentially skipping builds depending on context.
context
- A context map defining the current state of the build
environment and how it was triggered.filters
- A list of filters. A filter might be a String, Map, List,
or a mix of the three.Evaluate the full list of complex filters provided by the user and provide a single result based on context of how a build was triggered and at what point in the Git workflow the job is building (pr, branch, or tag).
Get an expression which will always result in allowBuild returning true. This can return any valid object which could be found in a parsed YAML object. Example types could be Map, List, String, Boolean.
Sets a filter to be evaluated against a context. Provides filter validation and throws an exception if validation fails.
Jervis API documentation.