You can write plugins for XL Deploy that customize deployment plans and behavior. Plugins are usually created by copying the built-in Generic, PowerShell, or Python plugin. This table provides information about what each plugin does and how it works.

  Python PowerShell Generic
What does the plugin work with? Valid Python files Valid PowerShell files FreeMarker templates
How does the plugin use them?
  1. Prefixes a generated header
  2. Copies to target (possibly along with artifacts)
  3. Invokes the file
  1. Prefixes a generated header
  2. Copies to target (possibly along with artifacts)
  3. Invokes the file
  1. Resolves the template on the XL Deploy server using FreeMarker
  2. Copies to target (possibly along with artifacts)
  3. If necessary, makes the file executable
  4. Invokes the file
Special variables
  • Deployed
  • (Optionally) deployedApplication
  • deployed
  • (Optionally) previousDeployed
  • (Optionally) deployedApplication
Which properties can be accessed on these variables?
  • Any that are defined on the type of deployed/deployedApplication
  • A deployed.file property if the deployed has an artifact
  • Any that are defined on the type of deployed/previousDeployed/deployedApplication
  • Plus a deployed.file/previousDeployed.file property if the deployed/previousDeployed has an artifact
  • Any that are defined on the type of deployed
  • Plus a deployed.file property if the deployed has an artifact
  • Plus deployed.deployedApplication (of type udm.DeployedApplication)
Expression language to work with variables Python - variables are regular Python vars PowerShell - variables are regular PowerShell vars FreeMarker - supports the usual . syntax for property access (as in ${deployed.name}) as well as other expressions such as [n] to access the n-th element of a list or set property and ["foo"] to access the value for key "foo" of a map property. More here.