jervis 1.7 - Apr 14th, 2020
Bug fixes
- Bugfix: Additional toolchains loaded into a matrix build did not properly
matrix. This bug has been fixed and tests added to avoid it. - Bump snakeyaml to 1.26 to protect against billion laughs style attacks.
- Use SafeConstructor when parsing YAML to prevent remote code execution. See
Documentation and Java Doc.
Breaking Job DSL changes
Jobs generated now use the SCM Filter Jervis YAML plugin
instead of the SCM Filter Branch PR plugin. If your Jenkins
instance does not have the SCM Filter Jervis YAML plugin installed, then you'll
get errors attempting to generate new jobs. This should not affect jobs that
already exist but it also means existing jobs can't be regenerated without the
plugin.
As a recommended migration path to convert all jobs to use the SCM Filter for
Jervis YAML, you can run a script console script to regenerate all
jbos
Deprecated pipeline steps
The following Jenkins pipeline steps provided by Jervis are deprecated and will
go away in a future release.
isPRBuild()
- useisBuilding('pr')
instead.isTagBuild()
- use `isBuilding('tag') instead.
As an admin, if you still want to support these steps then create your own steps
within your own shared pipeline library. Here are some examples:
Contents of vars/isPRBuild()
:
Boolean call() {
isBuilding('pr')
}
Contents of vars/isTagBuild.groovy
:
Boolean call() {
isBuilding('tag')
}
Pipeline DSL scripts changes in the vars/
folder:
- New pipeline steps:
getMatrixAxes()
- Spawned from a Jenkins blog post.
It is not used directly by Jervis but is available to users of Jervis.getUserBinding('somevar')
- Users can set bindings in their pipeline
runtime. This step allows pipeline shared libraries to retrieve bindings as
opposed to having them passed as arguments to a step.
isBuilding
now supportsmanually
triggered builds via
isBuilding('manually')
.manually
takes several optionsisBuilding(manually: false, combined: true)
- a boolean where if true returns the
username of the user who triggered the build and is boolean truthy. If
false it will return true if the build was triggered by anything except a
user, manually.isBuilding(manually: 'samrocketman', combined: true)
- returns true only
if the build was manually triggered by usersamrocketman
.
isBuilding
now supports acombined
boolean status of all filters for
easing use in pipelines logic. Example of filtering for manually triggered
tags isisBuilding(manually: true, tag: '/.*/', combined: true)
which
instead of returning a HashMap of the results for each filter it will return a
single boolean. Returnstrue
if all examples were true and false if any
filter was not true.isBuilding
now supports a List. See also documentation in the Jervis
wiki.
See the full CHANGELOG...
Build environment
$ head -n1 /etc/issue
Ubuntu 18.04.4 LTS
$ lsb_release -d
Description: Pop!_OS 18.04 LTS
$ uname -rms
Linux 5.3.0-7642-generic x86_64
$ java -version
openjdk version "1.8.0_242"
OpenJDK Runtime Environment (build 1.8.0_242-8u242-b08-0ubuntu3~18.04-b08)
OpenJDK 64-Bit Server VM (build 25.242-b08, mixed mode)
$ ./gradlew -version
------------------------------------------------------------
Gradle 5.6.3
------------------------------------------------------------
Build time: 2019-10-18 00:28:36 UTC
Revision: bd168bbf5d152c479186a897f2cea494b7875d13
Kotlin: 1.3.41
Groovy: 2.5.4
Ant: Apache Ant(TM) version 1.9.14 compiled on March 12 2019
JVM: 1.8.0_242 (Private Build 25.242-b08)
OS: Linux 5.3.0-7642-generic amd64
Releases signed with 8D8BF0E242D8A068572EBF3CE8F732347257E65F
.