github samrocketman/jervis jervis-1.7

4 years ago

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() - use isBuilding('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 supports manually triggered builds via
    isBuilding('manually'). manually takes several options
    • isBuilding(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 user samrocketman.
  • isBuilding now supports a combined boolean status of all filters for
    easing use in pipelines logic. Example of filtering for manually triggered
    tags is isBuilding(manually: true, tag: '/.*/', combined: true) which
    instead of returning a HashMap of the results for each filter it will return a
    single boolean. Returns true 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.

Don't miss a new jervis release

NewReleases is sending notifications on new releases.