Welcome!

XebiaLabs | Continuous Delivery and Agile DevOps Tools

XebiaLabs Blog

Subscribe to XebiaLabs Blog: eMailAlertsEmail Alerts
Get XebiaLabs Blog via: homepageHomepage mobileMobile rssRSS facebookFacebook twitterTwitter linkedinLinkedIn


Related Topics: JBoss Enterprise Middleware

Blog Feed Post

Building a XL Deploy DAR Package from properties files/dictionaries/command line arguments

This post describes a script which builds a DAR package in XL Deploy from properties which can be specified in and combination of 3 different locations:

  • Properties file
  • XL Deploy dictionary
  • Command arguments

The script is stored as a Gist on GitHub, https://gist.github.com/xlcommunity/92900d63b34528ee14a3

This script will create a package with an arbitrary number of artifacts and is useful in situations where a application build process does not feature a tool where there is an existing XL Deploy integration, such as with Jenkins. Optionally, this script can also deploy the package into an environment.

Before looking at the script execution, first lets take a look at the properties format. The following example will build a package with 2 artifacts, a WAR artifact and a JBoss datasource.

artifact.type=jee.War
artifact.fileLocation=/Users/tom/qb_repo/builds/17/artifacts/dist/Cars_Sample_App.war
artifact.name=Cars_Sample_App
artifact.tags=['WAR']
datasource.type=jbossas.NonTransactionalDatasourceSpec
datasource.name=Tom_Datasource
datasource.jndiName=jndi/tomsds
datasource.userName={{DB_USERNAME}} datasource.password={{DB_PASSWORD}}
datasource.connectionUrl={{DB_CONNECTION_URL}}

There are a number of items of note the the above example:

  • Keys are always in the format artifactID.property. Where artifactID is a identifier used by the script for each artifact and property is the property to set on that artifact.
  • All artifacts must have a name and type property.
  • When a fileLocation property is set, this must refer to the path of a file on the file system where the script is being executed.
  • When specifing something which is list type in XL Deploy, such as tags, then these must be specified using Python list literal format.
  • Placeholders can be used just as when creating artifacts in the XL Deploy UI.

The above format can be used to specify the properties in a XL Deploy dictionary. The dictionary must be stored in ‘Environments/AppDictionaries/<AppName>’ by convention.

Properties can also be set as a command line argument to the script. When using this approach these properties must be set using Python dict literal format. For example:

"{'webContent.type' : 'www.WebContent', 'webContent.name' : 'myWebContent', 'webContent.fileLocation' : '/Users/tom/scratch/PetPortal_pages.zip'}"

To use the script:

cli.sh -host <XLDeployHost> -username <username> -password <password> -f $ScriptPath/createDar.py -- -n <appName> -b <buildID> -p <propertiesFile> -a <autoDeploy true|false> -e <deployEnv> -x <extraProperties>

For example:

cli.sh -username admin -password deploy -source /Users/tom/Documents/CreateDARCLI/createDAR.py -- -n TestApp -b 1.0-6 -p /Users/tom/builds/propertiesSample.properties -x "{'webContent.type' : 'www.WebContent', 'webContent.name' : 'myWebContent', 'webContent.fileLocation' : '/Users/tom/scratch/PetPortal\_pages.zip'}" -a true -e "MyEnvironment"

This will create a package called “1.0-6″, from the build argument, for application “TestApp”. It will also deploy this to “MyEnvironment”

The post Building a XL Deploy DAR Package from properties files/dictionaries/command line arguments appeared first on XebiaLabs.

Read the original blog entry...

More Stories By XebiaLabs Blog

XebiaLabs is the technology leader for automation software for DevOps and Continuous Delivery. It focuses on helping companies accelerate the delivery of new software in the most efficient manner. Its products are simple to use, quick to implement, and provide robust enterprise technology.