Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Groovy Libraries allow custom Groovy functions and helpers to be shared and reused across all Groovy scripts in FlexDeploy

Table of Contents
maxLevel6
minLevel1
include
outlinefalse
indent
exclude^Groovy Libraries allow
stylenone
typelist
printabletrue
class

...

This class is compiled once at server startup and then on each change of the library script it is recompiled.

Finally, when running a Groovy script, an instance of this library class is instantiated and made available to the script.

Importing Other Custom Libraries

Info

Importing other custom libraries is only supported in version 9.0.0.2+

Custom libraries are not made available in other custom libraries by default, however they can be imported as needed. The below code snippet shows how the custom LIB_PIPELINE_UTILS imports and uses another custom library LIB_LOGGER.

Code Block
languagegroovy
// imports omitted for brevity

// create a new instance of our custom library
// the LOG variable should be passed in the constructor for any imported custom library instance
def logger = new com.flexagon.groovy.custom.LIB_LOGGER(LOG)

void myPipelineFunction()
{
  logger.logMessage("Logger library import")
  // code omitted for brevity
}

Circular Imports

Circular imports of custom libraries are not allowed and if found an error will be thrown [Circular imports detected. Please check if libraries are creating instances of each other outside of a function scope..] when attempting to test or save the library.

The below example demonstrates a circular library import and why its a problem:

  • LIB_ONE

Code Block
def libTwo = new com.flexagon.groovy.custom.LIB_TWO(LOG)

def myFunction() {
  // do some logic
}
  • LIB_TWO

Code Block
def libOne = new com.flexagon.groovy.custom.LIB_ONE(LOG)

def myFunction() {
  // do some logic
}

Lets look at what happens when FlexDeploy compiles and creates instances of your custom libraries that will be added to other Groovy scripts.

  1. FlexDeploy will iterate through all your Groovy Libraries and create instances of each

  2. A new instance of LIB_ONE is created.

  3. During initialization of LIB_ONE it will create a new instance of LIB_TWO as declared on line 1 of LIB_ONE

  4. An instance of LIB_TWO is created during step 3. This in turn creates an instance of LIB_ONE as declared on line 1 of LIB_TWO.

    1. We are now stuck in a loop between steps 3 and 4, infinitely creating new instances. This is what is known as a circular dependency and will result in an error being thrown.