This plugin integrates Hudson with Dimensions, the Serena SCM solution.The plugin allows a Hudson job to be associated with a Dimensions Project or Stream, automatically updating the Hudson workspace with content from the Dimensions repository.
Please note - the maintainer for this plugin is no longer myself (TPayne), but is being changed. Until it has been updated, please forward any issues to Paul Caruana (firstname.lastname@example.org).
The plugin currently supports
This plugin primarily supports Dimensions CM 2009R1.x, 2009R2.x, 12.1.x, 12.2.x, and Serena will continue to support major versions of Dimensions CM going forward. The plugin uses the Dimensions Java client API to interface against a specified Dimensions server installation and so requires that the Hudson installation be updated with a number of JAR files from the Dimensions installation as documented below.
To run this plugin against a Hudson installation, the following steps need to be taken:-
Failure to follow the above steps will mean the plugin will not operate correctly.
The plugin can be configured to work with Dimensions at both the System level and at the individual job definition level.
Configuring the plugin at the system level allows you to define a default Dimensions installation which can be used as the default for every job. This default installation can be configured by opening the Manage Hudson->Configure system configuration page and looking for the Dimensions configuration pane shown below.
The standard Dimensions login details need to be provided in the above fields. This is the Dimensions login that will be used by Hudson to connect to the Dimensions repository and retrieve any updated files. A Check Connection... button is provided for your convenience to ensure the connection details you have specified are correct and can be used by Hudson.
Checking the Use update toggle will get the plugin to automatically populate your Hudson workspace with content from Dimensions. If the checkbox is not selected, then the plugin will not automatically populate your workspace.
The Advanced... tag shown below allows you to specify if the Dimensions server installation is running in a different time zone than the current Hudson installation. This is useful if you are running in a geographically distributed environment.
The Advanced... tag also allows you to specify an optional Dimensions Web client installation that can be used to directly access files in Dimensions to perform Dimensions operations on them via the Web client.
When you create a new Hudson job, you need to configure the Dimensions stream or project that this job will be monitoring. This can be done using the standard job Configure. page.
Using the Source Code Management pane, select the Dimensions option and fill in the details shown below with the Dimensions project that this job will use.
The Project Name must refer to the Dimensions project or stream that this job will monitor. This is a mandatory field.
The Folder Name refers to a specific folder name in the Dimensions project or stream that the job can monitor. This should be specified in UNIX format and represent the high-level folder from which files will be monitored. If you leave this field blank or specify '/', then all the contents of the project/stream will be monitored. You can specify multiple folders to monitor or just leave it blank to monitor everything.
The Workspace Location specifies a particular workspace location to which Dimensions will put any updated files. If this field is left blank, then the default Hudson-provided workspace will be used. (Note: As of release 0.7.7, this option has been removed from the GUI and is now ignored. You can configure a custom workspace location using the Hudson Advanced Project Options).
A number of options are provided that can be used to control the behavior of the plugin. These are:
An Advanced... tag allows you to override any of the default Dimensions installation details specified in the system configuration. The options provided are the same as document in the System Configuration section above. Options are also provided to control the permissions on files that are checked out into the Hudson workspace and specify if item header substitution is to be used.
In version 0.6 onwards of the plugin, enhanced support has been added for release builds that provide tighter control over the content that goes into a Hudson build. Options have been added that allow you to:
These options are described in the following sections below.
It is now possible to lock a Dimensions project or stream while a build is being run, such that no changes maybe made to that project (or stream) until the build has finished. This option is provided so that long running builds can be assured that the state of the Dimensions project that they are building does not change while the build is in progress. This option should be set if the build process interacts with Dimensions once the initial checkout is complete and the state of the project needs to be consistent with the assets being built.
An example of this might be if the build process does a deployment or release step from Dimensions as part of the build.
This option can be enabled or disabled via the Lock Dimensions project while the build is in progress flag under the Build Environment options.
(Note - This option must be set if you intend to tag a successful build. Failure to do so will automatically fail that build).
It is now possible to tag a successful build in Dimensions, such that a baseline is automatically created to represent the state of the project or stream that was just built. This option is provided so that release or checkpoint builds can automatically be tagged in Dimensions to have an asset that represents that build.
This option can be enabled or disabled via the Tag successful builds in Dimensions as a baseline flag under the Post-build Actions options.
An Advanced... tag is present that allows you to change the type of baseline that is created by the tagging process. By default, the tagging process will create a project baseline, but support is also present for creating template driven baselines as well. The options that are currently supported are:
It is now possible to use a Hudson build project to build both baselines and requests using parameters that are provided to each build when it is being run. This functionality has been added to allow a common build configuration to be used for repeated release and patch type builds if necessary, rather than using a named project which may also contain other unwanted changes. This functionality can be enabled by adding the following parameters to a Hudson project using the This build is parameterized option:
This section lists other build options that are available in this plugin.
It is now possible to automatically deploy a tagged baseline from the plugin as the last stage of the Hudson build process. This will initiate a deployment of the contents of the baseline to all the deployment nodes associated with a deployment stage and the running of any deployment pre/post scripts. The plugin does this by running the Deploy Baseline command (DPB) and returning any results that this command generates.
This option can be enabled or disabled via the Automatically deploy the baseline flag under the Post-build Actions options. This option will only be presented if the Tag successful builds in Dimensions as a baseline flag is checked. You will also be able to specify the stage you want the baseline to be deployed to. If you do not specify a stage, then the next one will be used automatically.
(Note - For the deployment to succeed the project being used as a source for the build must be configured to allow baseline deployment).
It is now possible to automatically action a tagged baseline from the plugin as the last stage of the Hudson build process. This will action the tagged baseline to a given lifecycle state in Dimensions. The plugin does this by running the Action Baseline command (ABL) and returning any results that this command generates.
This option can be enabled or disabled via the Automatically action the baseline flag under the Post-build Actions options. This option will only be presented if the Tag successful builds in Dimensions as a baseline flag is checked. You will also be able to specify the lifecycle state you want the baseline to be actioned to. If you do not specify a state, then the next one will be used automatically.
It is now possible to automatically launch a build in Dimensions Builder using the tagged baseline as part of the last stage of the Hudson build process. This will initiate a baseline build in Dimensions Builder using build parameters setup in the Hudson job configuration. The plugin does this by running the Build Baseline command (BLDB) and returning any results that this command generates.
This option can be enabled or disabled via the Automatically build the baseline flag under the Post-build Actions options. This option will only be presented if the Tag successful builds in Dimensions as a baseline flag is checked. You are also able to specify -
This option should be selected if you want to use Dimensions Builder within your build process. For example, to perform multi-platform release builds for the tagged baseline under strict Dimensions control.
It is now possible to save assets that have been created as a result of a build process into Dimensions. This option can be enabled or disabled via the Load any build artifacts into the Dimensions repository flag under the Post-build Actions options.
Activating this checkbox will give you the opportunity to enter a series of Java style regular expression patterns that will be used to determine which files in your workspace you want to consider for saving into Dimensions. For example, patterns like
All file and sub-directory patterns specified should be made relative to the workspace root. For example, if your workspace root is /usr/hudson/project/build/ and you want to save files from /usr/hudson/project/build/src/include, then specify a pattern like src/include/.*.h.
All directory and sub-directory references must use native OS directory separators.
Artifacts which have been identified for loading into Dimensions will then be put into the project that the plugin is monitoring using DELIVER or UPLOAD command as appropriate. If you specify files that are already under control and have not changed, then these files will be ignored. If you wish to specify a request to save these changes against, then you should set a project default request using SCWS or use DM_TARGET_REQUEST as commented on above.
(Note - For specifying rules on a Windows system, please refer to the plugin help for how to use '\'. It needs to be protected by doubling the '\' up).
For more information on the capabilities of regular expression pattern matching, please refer to the appropriate help documentation.
In version 0.6.8 of the plugin onwards, you can specify the following advanced options when checking in a file
This setting can be configured in the Advanced tab of the job configuration.
If you are loading build artifacts into Dimensions using the Load any build artifacts into the Dimensions repository or Automatically build the baseline options and want to specify Dimensions requests against which to capture these changes, you can now do so by defining a Hudson build parameter called DM_TARGET_REQUEST. When you then start a build, populate this parameter with the comma separated list of requests that you wish to use and these will be passed on to the appropriate Dimensions commands.
In version 0.6.8 of the plugin onwards, it is possible to specify the permissions of the files which are being checked out as part of the job configuration. This includes
This setting can be configured in the Advanced tab of the job configuration.
In version 0.6.7 onwards of the plugin, support has been added for using the distributed build facilities within Hudson. There are two main capabilities that the plugin provides which can potentially be run on a remote node. These are
To use these distributed capabilities, each remote Hudson node must have a Dimensions client installation available and in the path. The remote Hudson support is provided through dmcli, so that remote node must be a platform against which Dimensions is natively supported. If you wish to run Hudson on an unsupported platform - such as Mac OS - then you can only use that platform as a master node. The master node support is Java based, so as long as that platform supports Java (and Hudson), it should work. However, running the plugin on an unsupported platform in this way is purely at your own risk. No responsibility is taken or implied about how the plugin will behave in these conditions.
If you run in a secure environment, then you need to be aware of one current limitation which is present in the plugin for distributed support. As the plugin is using dmcli on the slave to run Dimensions commands, the login details of the Dimensions user configured in the build job are temporarily written to a parameter file on the slave which is then used to run Dimensions commands. This parameter file is persisted until the job finishes. The location of this parameter file is displayed as the build progresses, so a knowledgeable individual with access to the slave could access this file whilst the job is in progress and obtain these login credentials. If this is a security concern, then it is advised that either:-
This limitation is resolved in version 0.7.1 of the plugin.
The following are a list of the current known issues and limitations with this plugin
Given the fork in Hudson to become Hudson and Jenkins, a number of questions have been asked about which fork this plugin will continue to support. While the situation is still a little unclear about how Hudson and Jenkins will interact with each other and what their associated infrastructures will be, the intention is to continue to support both forks as long as it is practically feasible.
Going by what is currently being said by both camps, the plugin architecture will remain pretty much unchanged, so as long as it is practical - and the code bases do not fork significantly - both will be supported going forward. Of course, this intention will be reviewed on an ongoing basis as the situation between Hudson and Jenkins continues to evolve.
The following are a list of possible fixes and enhancement(s) to be added to the next version of the plugin
0.8.1/2 – Apr, 2010
0.7.8/9 – Dec, 2010
0.7.7 – May, 2010
0.7.6 – April, 2010
0.7.5 – April, 2010
0.7.4 – April, 2010
0.7.3 – April, 2010
0.7.2 – April, 2010
0.7.1 – February, 2010
0.7.0 – February, 2010
0.6.9 – February, 2010
0.6.8 – February, 2010
0.6.7 – February, 2010
0.6.6 – January, 2010
0.6.4 – January, 2010
0.6.3 – January, 2010
0.6.2 – January, 2010
0.6.1 – December, 2009
0.6.0 – December, 2009
(Acknowledgments - many thanks to Keith for all his contributions to the above features. His help was much appreciated!)
0.5.8 – December, 2009
0.5.7 – November, 2009
0.5.6 – November, 2009
0.5.4 – November, 2009