Skip to end of metadata
Go to start of metadata

Overview

This plugin integrates the Dimensions CM SCM with Jenkins.Questions can be asked in the comments section of this wiki page or you can contact Micro Focus Supportline.

If you see java.lang.IllegalArgumentException: Failed to instantiate class hudson.scm.SCM with Jenkins 2.9 - 2.11, please upgrade to Jenkins 2.12 or later to avoid JENKINS-35906.

The plugin allows a Jenkins job to be associated with a Dimensions CM stream or project, automatically updating the Jenkins workspace with file content from the Dimensions CM repository.

The plugin currently supports

  • Polling
  • Checkout
  • Build change log reporting
  • Tagging
  • Artifact Upload
  • Tag Deployment
  • Launching Tagged Builds via Dimensions Builder

Plugin Information

View Dimensions on the plugin site for more information.

Pre-requisites

New releases of the plugin are tested with the most recent major version of Dimensions CM, version 14.x at the time of writing. The plugin should also work fine with Dimensions CM version 12.x. If you need support for an older version of Dimensions CM, then older versions of the Jenkins Dimensions Plugin are available to download and install (for example, version 0.8.13 should work with Dimensions CM 2009 R1 and 2009 R2). The plugin uses the Dimensions CM Java client API to communicate with a specified Dimensions CM server installation and so requires that the Jenkins installation be updated with a number of JAR files from the Dimensions CM installation as documented below.

Installation

To add this plugin to a Jenkins installation, the following steps need to be taken:

  • The plugin needs to be installed and enabled using the Jenkins plugin manager from the Available tab in the usual manner. The name of the Dimensions CM plugin to select and install is Dimensions Plugin.
  • The following Dimensions Java client API JAR files need to be added to the user class path for the Jenkins JVM, or dropped into the <JENKINS_HOME>/plugins/dimensionsscm/WEB-INF/lib directory. These JAR files can be copied from the <DM_ROOT>/java_api/lib/ or <DM_ROOT>/AdminConsole/lib/ directory of your Dimensions server or client installation respectively.
    • darius.jar
    • dmclient.jar
    • dmfile.jar
    • dmnet.jar
  • Depending on the version of the Dimensions Java client API you are using, there may be some additional JAR files needed (e.g. commons-logging-api.jar for CM 12.2 or 14.1; and slf4j-api.jar for CM 14.3). You should copy these too.

Failure to follow the above steps will mean the plugin will not operate correctly.

Configuring the Plugin

The plugin can be configured to work with Dimensions at both the System level and at the individual job definition level.

System Configuration

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 Jenkins->Configure system configuration page and looking for the Dimensions configuration pane shown below.

Dimensions Login Details

The standard Dimensions login details need to be provided in the above fields. This is the Dimensions login that will be used by Jenkins 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 Jenkins.



Checking the Use update toggle will get the plugin to automatically populate your Jenkins workspace with content from Dimensions. If the checkbox is not selected, then the plugin will not automatically populate your workspace.

Advanced Options

The Advanced... tag shown below allows you to specify if the Dimensions server installation is running in a different time zone than the current Jenkins 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.

Job Configuration

When you create a new Jenkins 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 Jenkins-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 Jenkins Advanced Project Options).

A number of options are provided that can be used to control the behavior of the plugin. These are:

  • Clear the contents of the workspace – checking this option will delete the full contents of the workspace before using Dimensions to repopulate it. The use of this option is not recommended for very large projects as it can significantly increase the build time
  • Always force a build to occur – checking this option will ignore any errors or file conflicts reported by the plugin and always force the build to be started. If this option is not selected, then any errors or conflicts reported by the plugin will automatically abort the build.
  • Overwrite any locally modified files in workspace – checking this option will automatically overwrite any files that may have been modified in the local workspace with files that come from Dimensions. The use of this option is not recommended if you are using Jenkins to build workspaces that have content that might conflict with that stored in the Dimensions repository.

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 Jenkins workspace and specify if item header substitution is to be used.

Job Build Options

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 Jenkins build. Options have been added that allow you to:

  • Lock a project or stream while a build is in progress
  • Tag a successful build such that a baseline is automatically created in the Dimensions repository on build completion
  • Use a parameterized build to specify a baseline to build, rather than a project
  • Use a parameterized build to specify a list of requests to build, rather than a project.

These options are described in the following sections below.

Locking a Project while a build is running

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).

Tagging a Successful build in Dimensions

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:

  • Owning baseline part - This is the name of the Dimensions part that will own the baseline
  • Baseline template - This is the name of the baseline template which will be used to create the baseline. Currently, only item templates are supported. Other template types maybe added in a future release.
  • Baseline Scope - This states the type of baseline to be created - either a part scoped, project scoped or revised baseline. Currently, you should only use baseline templates and owning parts with part scoped baselines. Project driven baselines do not support templates or owning parts and specifying these options will be ignored by the plugin. Revised baselines will only work if you have setup your build to be parameterized and provide DM_BASELINE and DM_TARGET_REQUEST as input into the build. DM_BASELINE will be used as the source baseline and DM_TARGET_REQUEST will be used as the list of requests that are used to create the new revised baseline.
  • Baseline Type - This is the name of the user defined baseline type against which the baseline will be created. The default is baseline.
Using Parameterized Builds

It is now possible to use a Jenkins 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 Jenkins project using the This build is parameterized option:

  • DM_BASELINE - this string parameter will allow you to specify a Dimensions baseline which will be used as the source for the build, rather than the usual project. Specifying this option will override any project sources that might have been defined, all other options however will be honored as per usual. This option should be used if you intend to perform a release build from a known baseline of code.
  • DM_REQUEST - this string parameter will allow you to specify a list of Dimensions requests (comma separated) which will be used as the source for the build, rather than the usual project. Specifying this option will override any project or baseline sources that might have been defined, all other options however - with the exception of folder filters - will be honored as per usual. This option should be used if you intend to apply a patch or list of patches to an existing area or are building specific controlled features that have been controlled by requests. Dependency relationships between requests will automatically be processed and any child requests be included in the build. When using this option, the Dimensions project specified in the job configuration will be used to select those in-response-to items that are relevant. If a request has changed files related to it that are not in the Dimensions project, then these changes will be ignored. Note - If you are using this functionality against a Dimensions 10.1.3 server, then the functionality that is offered by this parameter is limited to the capabilities present in Dimensions 10.1.3. For example, refactoring support is not offered, files will always be checked out as read-only and if you specify multiple requests to process, then each request will be checked out separately which might cause file versions to conflict with each other. If you wish to use this functionality, it is strongly suggested that you upgrade to Dimensions 2009 R1+.
  • DM_TARGET_REQUEST - this string parameter will allow you to specify a list of Dimensions requests (comma separated) which will be used to relate any assets against that get checked into Dimensions as a result of a build. This refers primarily to build steps that use Dimensions Builder and post build actions such as building a tagged baseline and loading assets into Dimensions.

Other Job Build Options

This section lists other build options that are available in this plugin.

Deploying Tagged Baselines in Dimensions

It is now possible to automatically deploy a tagged baseline from the plugin as the last stage of the Jenkins 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).

Actioning Tagged Baselines in Dimensions

It is now possible to automatically action a tagged baseline from the plugin as the last stage of the Jenkins 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.

Launching Dimension Builder with Tagged Baselines

It is now possible to automatically launch a build in Dimensions Builder using the tagged baseline as part of the last stage of the Jenkins build process. This will initiate a baseline build in Dimensions Builder using build parameters setup in the Jenkins 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:

  • the Dimensions Build area you want to use
  • the Dimensions Build configuration to use
  • the Dimensions Build options
  • the Dimensions Build targets
  • if to run the build in background mode
  • if to perform a clean build
  • if to capture build outputs and build dependencies under Dimensions.

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.

Saving Build Artifacts into Dimensions

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.

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.

In version 0.6.8 of the plugin onwards, you can specify the following advanced options when checking in a file

  • Force files to be checked onto the tip - This will force uncontrolled files with the same name as existing Dimensions files to be loaded into the repository and placed onto the tip even if they are completely unrelated to files already present
  • Force files to be recorded as merged - This will force files which might contain revision conflicts to be loaded into the repository and recorded as being merged even though no physical code merge has taken place
  • Owning part for files - this will put all new files under the Dimensions part specified.

This setting can be configured in the Advanced tab of the job configuration.

Regular Expressions

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

  • .*\.obj - will consider all .obj files in any subfolder below the workspace
  • .*\.h - will consider all .h files in any subfolder below the workspace
  • src/.*\.h - will consider all .h files in the src/ subdirectory below the workspace (this regular expression will only match such files on UNIX machines)

All file and subdirectory patterns specified should be made relative to the workspace root. For example, if your workspace root is /usr/jenkins/project/build/ and you want to save files from /usr/jenkins/project/build/src/include, then specify a pattern like src/include/.*\.h (this regular expression will only match such files on UNIX machines).

Regular expressions for uploading artifacts should use a directory separator character appropriate for the operating system of the machine where the workspace is located. If the workspace is on a Windows machine then \ is the directory separator character (not /), but \ is also the escape character in regular expressions, so you will need to double up the backslash in your regular expression (like \\) to match a single \ directory separator.

Alternatively you can use the sub-pattern [/\\] to match either the \ or / directory separator character. For example, src[/\\]include[/\\].*\.h means all .h files under the src\include\ or src/include/ directory in the workspace (so will work on both UNIX and Windows machines); and (.+[/\\])?test[/\\]helloworld\.dat means the file helloworld.dat in a subdirectory named test somewhere in the workspace (on either UNIX or Windows). Regular expression matching is very powerful, but can also be very complicated to use correctly, so do find some good documentation and maybe an online regular expression testing tool to check that they actually match the files you expect them to.

Ant-Style Pattern Matches

In version 0.8.5 of the plugin onwards, you also have the option to use Ant-style pattern matches for saving assets to Dimensions. As with the Java style regular expressions, this option allows you to enter a number of patterns based on Ant-style pattern matches. Ant-style patterns can be considerably easier to use correctly than regular expressions (and handle differences in directory separator characters on different operating systems for you).

Inclusion and Exclusion Patterns

As of version 0.8.6 of the plugin onwards, you can now also specify file exclusions as well as inclusions to apply to the files selected for upload.

Specifying Dimensions Requests to Capture Uploaded Artifacts or Build Assets

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 Jenkins 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.

Specifying Permissions of Checked Files

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

  • Default permissions - the file's default permissions stored in Dimensions
  • Read-only - setting all the files to read only
  • Writeable - setting all the files to writeable.

This setting can be configured in the Advanced tab of the job configuration.

Distributed Build Support

In version 0.6.7 onwards of the plugin, support has been added for using the distributed build facilities within Jenkins. There are two main capabilities that the plugin provides which can potentially be run on a remote node. These are

  • Checking files out of the project/stream being monitored into a workspace, and
  • Checking files into the project/stream being monitored from the workspace

To use these distributed capabilities, each remote Jenkins node must have a Dimensions client installation available and in the path. The remote Jenkins support is provided through dmcli, so that remote node must be a platform against which Dimensions is natively supported. If you wish to run Jenkins 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 Jenkins), 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.

Security limitations

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:-

  • you make the slave machine user's default temporary-file directory inaccessible to unauthorized users
  • configure the Dimensions user referenced in the job to have a very limited set of privileges, or
  • run the build on the master only

This limitation is resolved in version 0.7.1 of the plugin.

Troubleshooting

  • The plugin should work against Dimensions 10 servers, but requires Dimensions Java client API JAR files from a Dimensions 2009 R1 server installation to work correctly. Otherwise you should use Dimensions Java client API JAR files from the same version of Dimensions as your Dimensions server installation.
  • Upgrading between certain plugin versions may give an error like FATAL: Unable to run checkout callout - null when running a job. If this happens, open the job configuration and save it again to resolve the issue.
  • Dimensions operations must be run by a user who has the necessary privileges to do that operation. If a user does not have the necessary privileges, then the Dimensions operation will fail as one would expect.
  • Loading build artifacts into Dimensions will not process controlled files which have been deleted, i.e. the deleted files will not be removed from the repository.
  • Upgrading to 0.8.5 of the plugin means you will have to reconfigure any plugin which uses the check-in functionality. Failure to do so will lead to the check-in feature either failing or being ignored.
  • Specifying a reg-ex pattern ".*" (the default) may not filter out all the Dimensions metadata and .dm directories that it should. This is a bug which has been around a for a while, but only seems to surface occasionally. When using the regex option, it would be best to be very specific in the artifacts that you wish to check in.
  • To use Serena SSO to authenticate interactive users logging into Jenkins, protect the Jenkins application in your deployment container (e.g. Tomcat) and use Jenkins' Delegate to servlet container authentication model. Polling and updating by the Dimensions Plugin will still use the user account configured as the Login Name and Password in the Advanced view of the Source Code Management section.
  • Jenkins 2.9 - 2.11 are affected by JENKINS-35906 (causes java.lang.IllegalArgumentException: Failed to instantiate class hudson.scm.SCM). Workaround is to upgrade to Jenkins 2.12 or later.

Possible future changes

The following are a list of possible future changes to the plugin

  • Documentation: Update the wiki with new screen dumps for improved options and document best practices
  • Enhancement: Code diff'ing from the change logs
  • Enhancement: Timeout on job polling
  • Bugfix: Change-set generation to handle HTTPS
  • Enhancement: Upload artifacts to support requests

Changelog

Version 0.8.15 (Sep 13, 2018)
  • Bugfix: Changed how some parameters are stored and passed around.
  • Bugfix: Improved how the configuration forms are validated. Both of these fixes are recommended for all users.
Version 0.8.14 (May 3, 2018)
  • Enhancement: Implemented small number of more recent SCM methods to improve compatibility with other Jenkins plugins (JENKINS-44583).
  • Enhancement: Added MIT-licensed source for stub version of the Java API, so Jenkins.io CI infrastructure can be used (also plugin code is now licensed with simple standard MIT license)..
  • Bugfix: Post-build baseline operations should change the build state (JENKINS-32268).
  • Bugfix: Minor UI changes to make default repository behavior more understandable.
  • Bugfix: Users without privilege to fetch request detailed descriptions can run request-based builds (JENKINS-48645).
Version 0.8.13 (Jan 26, 2016)
  • Enhancement: Improved diagnostics for missing JARs and for various error conditions involving slaves (IOExceptions or inability to locate dmcli).
Version 0.8.12 (May 14, 2015)
  • Bugfix: Check Connection button (in Configure pages) could fail to connect with a NullPointerException in some environments.
  • Enhancement: Reduced warnings in the System Log by not calling deprecated Jenkins APIs and better diagnostic messages when things go wrong.
  • Enhancement: Improved handling of non-ASCII filenames in changelogs.
Version 0.8.11 (Mar 25, 2015)
  • Bugfix: Reconfiguring a job to use Ant patterns for the upload artifacts post-build action failed in Jenkins 1.596 and later (no need for this update unless you have this issue).
Version 0.8.10 (Mar 23, 2015)
  • Bugfix: Regular expression pattern-matching for upload of build artifacts was no longer using the full workspace-relative path, but just the filename component of the path; the full workspace-relative path is now used again.
  • Enhancement: The plugin now uses the Jenkins System log for debug-logging, and the logging and build output should include better detail about the reasons for any problem than in previous releases.
Version 0.8.9 (Dec 10, 2014)
  • Enhancement: Can exclude file path patterns from being monitored for changes (for example, useful for built artifacts). Changes to excluded file patterns won't trigger a build, but will still be shown and updated when a build is eventually started by some subsequent change. The patterns to exclude are Ant-style patterns using / as a separator (even on Windows). For example, **/target/** would ignore changes in any target directory in the repository, and **/*.class would ignore changes to any .class files in the repository.
Version 0.8.8 (Oct 29, 2014)
  • Bugfix: Using check out and then check in on projects could lead to missed modifications during polling in particular circumstances.
  • Bugfix: It was possible for unwanted content to appear in config.xml; this should no longer occur.
Version 0.8.6 (Jan 31, 2014)
  • Enhancement: Checking in artifacts now supports exclusion patterns as well as inclusion patterns.
Version 0.8.5 (Dec 25, 2013)
  • Enhancement: Checking in artifacts now supports filtering by Ant-style patterns as well as regular expressions.

Warning: Upgrading to this version means you will have to reconfigure any job which uses the check in artifact functionality.
Failure to do so will end up with the checkin either failing or being ignored.

Version 0.8.3.1 (Nov 25, 2013)
  • Bugfix: Minor bug fixes, Dimensions compatibility enhancements, improved multithreading support.
Version 0.8.1 (Mar 9, 2011)
  • Bugfix: Incorporate fix for copying Dimensions plugin information around between jobs.
  • Enhancement: Support for NOTOUCH option.
Version 0.7.11 (Mar 2, 2011)
  • Bugfix: Compatibility issues with 1.391+.
  • Enhancement: Support for Dimensions 12.1.x.
Version 0.7.9 (Dec 28, 2010)
  • Enhancement: Add DM_BASELINE to the baseline identifier template pattern.
  • Enhancement: Incorporate EOL changes.
  • Enhancement: Polling to support 1.345+.
  • Enhancement: Upgrade Hudson architecture support to latest version.
  • Bugfix/Enhancement: Allow slave processing to also be run on the master.
  • Bugfix: Correct command handling on Unix slaves for checkout/checkin tasks, e.g. /TMP invalid qualifier error.
Version 0.7.7 (May 22, 2010)
  • Enhancement: Remove Workspace location text box. It was not needed and just confused issues. 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.
  • Enhancement: Using a template pattern to allow the customization of the baseline identifier and type that gets created.
Version 0.7.6 (Apr 30, 2010)
  • Bugfix/Enhancement: Changes to polling support for monitoring subdirectories.
Version 0.7.5 (Apr 26, 2010)
  • Enhancement: Enable no metadata as an option for checkout.
Version 0.7.4 (Apr 20, 2010)
  • Enhancement: Support for revised baselines using DM_BASELINE (source) and DM_TARGET_REQUEST (revised with)
Version 0.7.3 (Apr 14, 2010)
  • Enhancement: Enable IHS expansion as an option when checking out.
Version 0.7.2 (Apr 8, 2010)
  • Bugfix: Request based download did not work with Dimensions 10.x as there was a command incompatibility. A different mechanism is now used for Dimensions 10.x servers using the FCDI command.
  • Enhancement: Add baseline type parameter for tagging.
  • Bugfix: When create new job, set update to match what is in the global config on Save.
Version 0.7.1 (Feb 28, 2010)
  • Bugfix: Remove project baseline references from some help/error tags and refer to baseline instead.
  • Enhancement: Mask command parameters where appropriate for DMCLI slave node operations.
  • Enhancement: If project baseline is specified, then ignore invalid parameters when executing the command. Avoids unnecessary build failures. Updated help to reflect this.
Version 0.7.0 (Feb 25, 2010)
  • Enhancement: When tagging a project, optionally specify a template, part and scope that could be used.
Version 0.6.9 (Feb 24, 2010)
  • Bugfix: Request based checkouts with multiple directory filters does multiple checkouts. It should not as request checkout ignores directories.
  • Bugfix: Correct issue with config cache when stream/project ID changed
  • Bugfix: Artifact upload had a compatibility issue with Dimensions 10.x that caused FATAL: Unable to load build artifacts into Dimensions - Invalid attribute: -AdmAttrNames.wset_is_stream message.
  • Enhancement: Added support for artifact uploading in distributed build environments.
Version 0.6.8 (Feb 16, 2010)
  • Enhancement: When checking out from a stream/project allow the permissions on the file to be set to readonly, writable or default.
  • Enhancement: When checking in from a workspace, allow the checkin to be forced if file conflicts are detected.
  • Enhancement: When checking in from a workspace, allow the owning part to be specified rather than the defaults set up in the upload rules.
Versions 0.6.7 (Feb 12, 2010)
  • Enhancement: Added Dimensions Builder as a valid build step.
  • Enhancement: Be more verbose about what steps the plugin is currently doing during checkout process.
  • Enhancement: Add support for distributed build environments - checkout operations only
  • Bugfix: The order in the GUI of Automatically build the baseline and Automatically deploy the baseline in the job configuration was swapped around. The deploy is done before the build and the order in the GUI implied the other order.
  • Bugfix: Resolved a problem with the Dimensions connection getting set to null when long jobs were running and polls on that same job were performed in rapid succession resulting in strange exceptions being fired.
  • Enhancement: Generate a set of change logs even when the plugin is not being used to update the Hudson workspace.
  • Bugfix: Fixed a spelling mistake with Files to Montor in main job config.jelly.
Version 0.6.6 (Jan 8, 2010)
  • Enhancement: When Dimensions post-action fails, fail the build.
Version 0.6.4 (Jan 8, 2010)
  • Bugfix: Fix compatibility issue with Maven Integration Plugin.
Version 0.6.3 (Jan 3, 2010)
  • Enhancement: Add integration to Dimensions Build to allow the launching of a Dimensions build on the tagged baseline.
  • Enhancement: Actioning of baseline in Dimensions.
Version 0.6.2 (Jan 1, 2010)
  • Enhancement: Deployment of baseline in Dimensions.
Version 0.6.1 (Dec 30, 2009)
  • Bugfix: Don't overwrite change log for build if multiple project directories are being used. Append them, so full change list is given for all directories.
  • Enhancement: Give the ability to upload build artifacts into Dimensions stream/project based on 1:N regular expression patterns.
  • Bugfix: If plugins attempted to use with non-Dimensions SCM engine, then abort.
Version 0.6.0 (Dec 28, 2009)
  • Enhancement: Add the ability to checkout a given baseline or request instead of a stream/project.
  • Bugfix: Report no changes when no changes made in a build rather than Failed to determine log.
  • Enhancement: Add the ability to lock a stream/project during the build process.
  • Enhancement: Add the ability to tag a successful build.
  • Enhancement: For a given build, enhance the change set processing to list the requests that were used to create the new files that went into a build.
  • Enhancement: Make the change set reporting use drop down lists rather than static lists. Easier to hide unwanted content.
  • Bugfix: Correctly unregister connections from the Dimensions java thread pool.
  • Enhancement: Tag all messages from the plugin with the [DIMENSIONS] prefix.
  • Bugfix: Tidy up output of messages.
  • Enhancement: When performing an initial build for the first time, cleanup the target workspace so that only assets from the build are present, not other uncontrolled files.
  • Enhancement: Expand on what Update means in the boilerplate.

(Acknowledgments - many thanks to Keith for all his contributions to the above features. His help was much appreciated!)

Version 0.5.8 (Dec 5, 2009)
  • Enhancement: Add ability to monitor multiple directories in the repository.
Version 0.5.7 (Nov 30, 2009)
  • Bugfix: Fixed broken URL link issue.
  • Enhancement: Removed unnecessary exception stack printing on Dimensions errors.
Version 0.5.6 (Nov 29, 2009)
  • Enhancement: Support added for Dimensions 10.x servers.
Version 0.5.4 (Nov 25, 2009)
  • Release of the initial version.

111 Comments

  1. Unknown User (matt_edwards)

    Eagerly awaited. Thanks Tim :)

    FYI - I found those jar files residing at <DM_ROOT>/AdminConsole/lib ...

    1. Thanks! I've updated the Wiki with the alt. location as well.

      Tim

  2. I've been asked how to get more tracing information out of the plugin if something goes wrong. There is a tracing facility which can be activated by setting the environment variable

    DM_HUDSON_LOGGING=y

    into the environment of the user running the Hudson process and then restarting the process. This will send a lot of tracing information to stdout. This does slow down the build execution time, but can be used if you need to track down any odd behavior that the plugin might be doing.

    To turn the tracing off, remove the variable and restart the Hudson process.

    Tim

  3. Unknown User (acevedodamain)

    Hi
    Im trying to use hudsons dimension plugin,  after y check dimensions connection at job level everything is fine.
    it says:
    Check Connection...
    Checking...
    Connection test succeeded!
    but when i run the build process says:
    Console output says:
    "Started by user anonymous
    FATAL: Unable to run checkout callout - hudson.maven.MavenModuleSet
    Finished: FAILURE"
    In the plugin page at the wiki : http://wiki.jenkins-ci.org/display/HUDSON/Dimensions+Plugin
    theres some comments about it:
    "Known Issues:
    Upgrading between plugin versions may sometimes give an error like FATAL: Unable to run checkout callout - null, when running a job. If this occurs, simply open the job configuration and resave it. This should resolve the issue."
    Im always having this error , after and before updating ... and resaving job configuration is not fixing the issue.
    the log only show:
    Jan 5, 2010 5:39:02 PM hudson.model.Run
    FINE: Build ads-core-build #3 aborted
    hudson.model.Run$RunnerAbortedException
            at hudson.model.AbstractBuild$AbstractRunner.checkout(AbstractBuild.java:505)
            at hudson.model.AbstractBuild$AbstractRunner.run(AbstractBuild.java:412)
            at hudson.model.Run.run(Run.java:1179)
            at hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:304)
            at hudson.model.ResourceController.execute(ResourceController.java:88)
            at hudson.model.Executor.run(Executor.java:122)
     .. any suggestion ?   ill try DM_HUDSON_LOGGING=y ...
    Regards
    Dam

    1. Hi Dam

      It's not one I've seen before - no. It looks like some internal exception fired somewhere and the only message the

      exception handlers got was that rather cryptic "hudson.maven.MavenModuleSet". I doubt it has anything to do with

      the "Upgrading between plugin versions may sometimes give an error like FATAL:..." issue documented, that only occurred between

      one very specific version of the plugin and the next, and was only for jobs which had been created prior to that version.

      If you send me some details of your job configuration or the jobs directory for this job (under HUDSON_HOME/jobs/<jobName>)

      I can have a play and see if I can reproduce it myself. Only other thing I can suggest is try upgrading your Hudson to the latest version.

      I always tend to do my testing and development with that rather than older versions. I'm currently on version 1.339.

      Thanks, Tim

  4. Unknown User (acevedodamain)

    On -> system information -> enviroment variables , i can check "DM_HUDSON_LOGGING  = y"  and theres nothing extra logged ... even in FINEST

    Regards

    1. This variable has to be set either at the system level or for the user running the Hudson process so that it is exposed to the plugin and the process restarted. I usually set it as the user running the Tomcat process myself and run Hudson via Tomcat.

      The output gets sent to stdout, so make sure stdout is not being redirected to a file or null device. I run Hudson through Tomcat and my output appears in the logs/stdout<date> file. It will not appear in the Hudson console window as there is rather a lot of it.

      Hope that helps, Tim

      1. Unknown User (acevedodamain)

        Hi Tim thanks,  Im using this products versions:

        Hudson: 1.339
        Dimensions plugin:   0.6.3
        Dimensions CM Server: Version: 10.1.3.0.2, Schema Revision: 2

        and the jar files: ive been trying with:
         10.1.3.0.2 jars located in client installation
         10.1.3.0.2 jars located in server installation
         2009R1 jars located in client installation

        after set DM_HUDSON_LOGGING=y on tomcat startup script i get on stdout:

        DEBUG (2010-01-05T18:15:02Z) :Loading hudson.plugins.dimensionsscm.DimensionsSCM$DescriptorImpl
        DEBUG (2010-01-05T18:15:07Z) :Loading hudson.plugins.dimensionsscm.ArtifactUploader$DescriptorImpl
        DEBUG (2010-01-05T18:15:07Z) :Loading hudson.plugins.dimensionsscm.DimensionsBuilder$DescriptorImpl
        DEBUG (2010-01-05T18:15:07Z) :Loading hudson.plugins.dimensionsscm.DimensionsBuildNotifier$DescriptorImpl
        DEBUG (2010-01-05T18:15:07Z) :Loading hudson.plugins.dimensionsscm.DimensionsBuildWrapper$DescriptorImpl
        DEBUG (2010-01-05T18:17:13Z) :Invoking checkout - hudson.plugins.dimensionsscm.DimensionsSCM
        and nothing more.
        i can mail you my job configuration.
        Thanks again for your help Tim.
        Dam

        1. Np. To get the best from the logging, try and do a build on the job and see what you get. It can help narrow down where the exception is firing.

          Tim

          1. Unknown User (acevedodamain)

            The last line is after running a build :S

            DEBUG (2010-01-05T18:17:13Z) :Invoking checkout - hudson.plugins.dimensionsscm.DimensionsSCM

            Thanks again

            1. This issue is now fixed in 0.6.4. It was a compatibility problem with the Maven Integration Plugin.

              Tim

              1. Unknown User (acevedodamain)

                Thank you very much Tim,

                ill wait for the release 0.6.4 to test it.

                Dam

  5. Unknown User (prashanthwge@gmail.com)

    Tim thanks for adding the dimension plugin.  I have a issue when using dimension with slave servers it is not copying the source to workspace and errors out both on windows and linux slave servers.  But the same works fine on master server.  I do not know whether this is problem with the slave or dimensions plugin.

    Using windows slave server below is the error

    DIMENSIONS Removing 'file:/C:/Hudson/workspace/PROJ1_DEV1/'...
    DIMENSIONS Checking out project "Test_DEV:PROJ1_DEV1"...
    DIMENSIONS (Note: Dimensions command output was -

    DIMENSIONS SUCCESS: Operation completed
    DIMENSIONS Operation completed
    DIMENSIONS )
    DIMENSIONS Dimensions project was successfully locked
    FATAL: Unable to find build script at C:\Hudson\workspace\PROJ1_DEV1\\proj1\build\build.xml
    DIMENSIONS Dimensions project was successfully unlocked
    Finished: FAILURE

    Using linux below is the error Started by user anonymous
    Building remotely on 10.158.98.181
    DIMENSIONS Dimensions project was successfully locked
    FATAL: Unable to find build script at /dnbusr1/hudson/workspace/PROJ1_DEV1/\proj1\build\build.xml
    DIMENSIONS Dimensions project was successfully unlocked
    Finished: FAILURE

    1. Hi Prashanth

      Thanks for the comment.

      If you look under the Known Issues list, you will see that support for distributed builds currently has issues that need to be resolved. I have not validated the plugin in distributed environments and as you can see, it has issues (wink)

      "The plugin has not been validated using a Hudson distributed environment. It looks like there are issues that need to be resolved to fully support distributed environments."

      I am planning to add this support for an up and coming release, so watch this space! The best I can suggest for the moment, is try to run the build on your Hudson server - that should work fine.

      Thanks

      Tim

      1. This support will be added to 0.6.7, the next release of the plugin.

        Thanks, Tim

  6. Unknown User (ballantk)

    It appears that the dimensions scm client's polling can hang.  I regularly get There are more SCM polling activities scheduled than handled from the server.  In my configuration, I'm running an older server (pre 2009R1), and I believe my network may occasionally 'hiccup' and reset the connection.  However, I was wondering if a timeout can be implemented that would simply fail if the polling log or checkout took too long.  As it stands now, I have to reset hudson at least once daily to clear the errors.

    1. Hi Keith

      There is a defect fix in the next release for an issue which might very well be causing this

      "Bugfix: Resolve a problem with the Dimensions connection getting nulled when long jobs are running and polls on that same job are performed in rapid succession resulting in strange exceptions being fired. (targeted for 0.6.7)"

      Basically, there are situations where long running updates and rapid polling in the same job can step on each others toes and the connection cache within the job is getting nulled. It sounds like you might be hitting something very similar. The new version is able to cope with rapid polling and long jobs.

      If the wrong connection object does get nulled, then side-effects could affect either the checkout or the polling jobs depending on which object was being used by which process. These could include - reset connection errors, possibly hanging (although that is not one I saw when I first hit the issue) or "null" errors on the checkout or polling.

      Hope that helps

      Thanks, Tim

      1. Hi Keith

        Try the latest version of the plugin (0.6.7) to see if this issue is now resolved. If it is still happening, then it is possibly a network issue that I can implement a polling timeout for as you request.

        Anyway, let me know if the issue goes away or not with the latest plugin and I'll look at adding the polling timeout if needed.

        Thanks, Tim

        1. Unknown User (ihcfan)

          Just a head's up, I'm running 0.7.7 and this issue still exists.  I think it may have to do with us running an older version of dimensions (prior to 2009Rx).  Is it possible to implement a timeout on polling per project?

          1. Hi Keith

            I will look into this for you and see what can be done in the next version of the plugin.

            Thanks, Tim

  7. Hi Tim,

    I'm using your plugin with 10.1.2.0 FT1 version of Dimensions server. It works just great when I force a build, but there is some problem with polling. Polling log always says:

    Started on Mar 4, 2010 12:41:24 PM
    Done. Took 30 sec
    No changes
    

    even though I know there were some changes made.

    When build is forced:

    [DIMENSIONS] Running checkout on master...
    [DIMENSIONS] Running build in 'C:\hudson\jobs\SCT_WN70_tester\workspace'...
    [DIMENSIONS] Checking out project "XXX"...
    [DIMENSIONS] Checking out directory 'YYY'...
    [DIMENSIONS] (Note: Dimensions command output was -
    [DIMENSIONS] SUCCESS: Using Current Project 'XXX'
    [DIMENSIONS] Using 'C:\hudson\jobs\SCT_WN70_tester\workspace\' as the Project root directory
    [DIMENSIONS] Calculating differences: 2.781000 sec
    [DIMENSIONS] Updated 'C:\hudson\jobs\SCT_WN70_tester\workspace\YYY\hcsm.mp' using Item 'ZZZ#103'
    [DIMENSIONS] Getting files: 7.203000 sec
    [DIMENSIONS] Getting Project: 14.109000 sec
    [DIMENSIONS] Operation completed
    [DIMENSIONS] Operation completed
    

    ...as you see - some item is updated, but build summary also shows: No changes detected.

    Any ideas?

    Best regards,

    Pawel

    1. Hi Pawel

      The plugin is only intended to support Dimensions 10.1.3 and 2009R.x+. There is a good possibility the Java API may have compatibility issues with earlier versions. Are you sure it is an FT1 release? Usually those are tags used for Dimensions beta or internal releases.

      Can you upgrade your server to 10.1.3 and try using that? It may resolve the issue.

      Thanks, Tim

      1. Hi Tim,

        thank you for your answer. We are really using this version of Dimensions server and unfortunately I am not allowed to upgrade it. Looks like I will have to try to walk around this problem :)

        Best regards,

        Pawel

        1. Hi Pawel

          I don't mind having a quick look at the issue if you can send me an easy reproduction case.

          I can at least then check it works on 10.1.3 and make sure it is not some sort of bug. If it is, then I can schedule it for a fix when I get some time to work on the next version of the plugin  :)

          I did think of one additional possibility which might be worth considering...

          The polling does have one restriction which I'm aware of which is actually a limitation with the Java API in that it doesn't expose a method to query some types of refactoring changes. So if a file older than the last successful build gets added to a project or renamed, then the polling cannot detect it as there is no API mechanism to allow this on the project. In 10.1.2, I believe most of these refactoring changes get detected by DOWNLOAD - AIWS operations for example, so those would get downloaded.

          Does that sound a possibility?

          Tim

  8. Unknown User (rodolphe.dariol)

    Hi,

    It seems there is a problem with the checkbox "Use Update" when creating a job with version 0.7.1 of the plugin: the checkbox is always unchecked even if it is checked at the system level of Hudson.

    Thus, by default, the plugin doesn't populate the workspace for a new job.

    This problem is not with version 0.6.6 of the plugin.

    Best regards.

    Rodolphe

    1. Hi Rodolphe

      Thanks for spotting this. I'll fix it in the next version of the plugin.

      Regards

      Tim

      1. Fixed in 0.7.2

        Tim

  9. Unknown User (zakaria7214)

    fixed in 0.8.2

    1. Cool. A voice from the future. At least the plugin has 10 more versions of life in it >_<

  10. Unknown User (sergi)

    Hi,

    I've a problem with the polling.

    I've configured a job. With clean workspace option  it works fine, but with the build trigger/poll SCM don't detected changes in the repository.

    The Dimensions polling log ever says
    Started on Apr 29, 2010 8:41:48 AM
    Done. Took 0.9 sec
    No changes

    In Dimensions client I can see that there are changes in the repository.

    The installed plugin version is 0.7.3 and Dimensions Server is 10.1.3. Hudson have 2009 R2 libraries (from client ../admincosole), in other tries had a
    2009R1 server libraries with the same effect.

    With the traces activates I can see:

    ...
    DEBUG (2010-04-29T08:46:49Z) :Now have 0 connections in use...
    DEBUG (2010-04-29T08:47:48Z) :Invoking pollChanges - hudson.plugins.dimensionssc
    m.DimensionsSCM
    DEBUG (2010-04-29T08:47:48Z) :Checking job - Prodcut1 PROJECT1
    DEBUG (2010-04-29T08:47:48Z) :Checking for any updates between 2010-04-26T17:46:
    28Z -> 2010-04-29T08:47:48Z (Europe/Paris)
    DEBUG (2010-04-29T08:47:48Z) :Checking Dimensions login parameters...
    DEBUG (2010-04-29T08:47:48Z) :Logging into Dimensions: bmcadmin dimensions.dim..int dim@dimbd00
    DEBUG (2010-04-29T08:47:48Z) :Getting Dimensions connection...
    DEBUG (2010-04-29T08:47:49Z) :Storing details for key 1272523668901...
    DEBUG (2010-04-29T08:47:49Z) :Polling using key 1272523668901
    DEBUG (2010-04-29T08:47:49Z) :Polling '/'...
    DEBUG (2010-04-29T08:47:49Z) :Looking for key 1272523668901
    DEBUG (2010-04-29T08:47:49Z) :Found database
    DEBUG (2010-04-29T08:47:49Z) :Looking for key 1272523668901
    DEBUG (2010-04-29T08:47:49Z) :Found database
    DEBUG (2010-04-29T08:47:49Z) :Looking between 26-Apr-2010 17:46:28 -> 29-Apr-201
    0 08:47:48
    DEBUG (2010-04-29T08:47:49Z) :Looking for changed files in '' in project: PRODUCT:
    PROJECT1
    DEBUG (2010-04-29T08:47:49Z) :Exception detected from the Java API: Error: faile
    d to query database. (OK)
    DEBUG (2010-04-29T08:47:49Z) :Looking for key 1272523668901
    DEBUG (2010-04-29T08:47:49Z) :Found database
    DEBUG (2010-04-29T08:47:49Z) :Closing connection to Dimensions...
    DEBUG (2010-04-29T08:47:49Z) :Now have 0 connections in use...

    Any idea ?

    Thank you.

    1. Hi Sergi

      Thanks for the post. This is not an issue I've seen before, but the exception is being thrown from the Dimensions Java API for some reason. Could you send me via email (or post here) some details of your job configuration or a little sample that shows the problem? In that way I can have a go at reproducing it.

      Many thanks, Tim

  11. Unknown User (junk111970@gmail.com)

    I get the following error when trying to test the connection (The 4 jars from my dimensions server are on the hudson classpath so that's not the issue). Using Dimensions CM 10.1.2:

    java.lang.NoSuchMethodError: com.serena.dmclient.api.DimensionsObjectFactory.getServerVersion(I)Ljava/util/List;
    	at hudson.plugins.dimensionsscm.DimensionsAPI.login(DimensionsAPI.java:410)
    	at hudson.plugins.dimensionsscm.DimensionsSCM$DescriptorImpl.docheckServer(DimensionsSCM.java:1281)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    	at java.lang.reflect.Method.invoke(Method.java:616)
    	at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:235)
    	at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:116)
    	at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:57)
    	at org.kohsuke.stapler.MetaClass$1.doDispatch(MetaClass.java:75)
    	at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:30)
    	at org.kohsuke.stapler.Stapler.invoke(Stapler.java:525)
    	at org.kohsuke.stapler.MetaClass$12.dispatch(MetaClass.java:319)
    	at org.kohsuke.stapler.Stapler.invoke(Stapler.java:525)
    	at org.kohsuke.stapler.MetaClass$4.doDispatch(MetaClass.java:145)
    	at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:30)
    	at org.kohsuke.stapler.Stapler.invoke(Stapler.java:525)
    	at org.kohsuke.stapler.Stapler.invoke(Stapler.java:441)
    	at org.kohsuke.stapler.Stapler.service(Stapler.java:123)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:45)
    	at winstone.ServletConfiguration.execute(ServletConfiguration.java:249)
    	at winstone.RequestDispatcher.forward(RequestDispatcher.java:335)
    	at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:378)
    	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:94)
    	at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:86)
    	at winstone.FilterConfiguration.execute(FilterConfiguration.java:195)
    	at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:368)
    	at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:47)
    	at winstone.FilterConfiguration.execute(FilterConfiguration.java:195)
    	at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:368)
    	at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84)
    	at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:76)
    	at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:164)
    	at winstone.FilterConfiguration.execute(FilterConfiguration.java:195)
    	at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:368)
    	at winstone.RequestDispatcher.forward(RequestDispatcher.java:333)
    	at winstone.RequestHandlerThread.processRequest(RequestHandlerThread.java:244)
    	at winstone.RequestHandlerThread.run(RequestHandlerThread.java:150)
    	at java.lang.Thread.run(Thread.java:636)
    
    1. Hi Saad

      From the stack track it looks like the JAR files that you used to update the classpath might not have been the right versions.

      Did you see and follow this comment in the limitations section?

      "The plugin will work against Dimensions 10.x servers, but does require Dimensions Java client API JAR files from a Dimensions 2009+ server installation to work correctly."

      Thanks, Tim

      1. Unknown User (junk111970@gmail.com)

        Worked perfectly. Thanks! :)

  12. Unknown User (matt_edwards)

    Hi Tim,

    Any plans to implement a "quiet period" option? This would be really handy given the non-atomic commits in 10.x ... As per the other SCMs, any checkin during the quiet period will reset the counter. In fact, if it's possible it would be even better to have a quiet period which is tracked per request.

    Our commit process is such that a daemon executes all source commits. It handles them one request at a time. Therefore while it is continuing to commit files from request A, i don't want to build, but as soon as it starts committing files from request B, then I want to trigger a build based on request A. Obviously without the distinction between requests, then if four or five commits are executed consecutively, the quiet period will keep resetting, and the build will then include the changes from all those requests.

    Thanks,
     Matt

    1. Unknown User (matt_edwards)

      It would appear I was getting a bit ahead of myself. As per a few other comments above, I am having issues with the polling. It always says "No changes" even though I know there are. Manually triggering a build confirms this as it lists the updated files.
      I read above about the issues with earlier versions of the API (our server is 10.1.1), so I'm just wondering if there is a known reason why the polling would fail for this server, or whether it is something you would be able to investigate further.

      I have turned debugging on, but it provides no clues ...

      DEBUG (2010-06-18T17:27:17Z) :Invoking pollChanges - hudson.plugins.dimensionsscm.DimensionsSCM
      DEBUG (2010-06-18T17:27:17Z) :Checking job - HiPort build on change
      DEBUG (2010-06-18T17:27:17Z) :Checking for any updates between 2010-06-17T17:11:53Z -> 2010-06-18T17:27:17Z (Australia/Sydney)
      DEBUG (2010-06-18T17:27:17Z) :Checking Dimensions login parameters...
      DEBUG (2010-06-18T17:27:17Z) :Logging into Dimensions: dmsys thundercracker hiport@dim10
      DEBUG (2010-06-18T17:27:17Z) :Getting Dimensions connection...
      DEBUG (2010-06-18T17:27:23Z) :Storing details for key 1276846037623...
      DEBUG (2010-06-18T17:27:23Z) :Polling using key 1276846037623
      DEBUG (2010-06-18T17:27:23Z) :Polling 'Hiport/src'...
      DEBUG (2010-06-18T17:27:23Z) :Looking for key 1276846037623
      DEBUG (2010-06-18T17:27:23Z) :Found database
      DEBUG (2010-06-18T17:27:23Z) :Looking for key 1276846037623
      DEBUG (2010-06-18T17:27:23Z) :Found database
      DEBUG (2010-06-18T17:27:23Z) :Looking between 17-Jun-2010 17:11:53 -> 18-Jun-2010 17:27:17
      DEBUG (2010-06-18T17:27:23Z) :Looking for changed files in 'Hiport\src/' in project: H3:3V10
      DEBUG (2010-06-18T17:27:23Z) :Found 0
      DEBUG (2010-06-18T17:27:23Z) :Polling using key 1276846037623
      DEBUG (2010-06-18T17:27:23Z) :Polling 'Hiport/METADATA'...
      DEBUG (2010-06-18T17:27:23Z) :Looking for key 1276846037623
      DEBUG (2010-06-18T17:27:23Z) :Found database
      DEBUG (2010-06-18T17:27:23Z) :Looking for key 1276846037623
      DEBUG (2010-06-18T17:27:23Z) :Found database
      DEBUG (2010-06-18T17:27:23Z) :Looking between 17-Jun-2010 17:11:53 -> 18-Jun-2010 17:27:17
      DEBUG (2010-06-18T17:27:23Z) :Looking for changed files in 'Hiport\METADATA/' in project: H3:3V10
      DEBUG (2010-06-18T17:27:23Z) :Found 0
      DEBUG (2010-06-18T17:27:23Z) :Looking for key 1276846037623
      DEBUG (2010-06-18T17:27:23Z) :Found database
      DEBUG (2010-06-18T17:27:23Z) :Closing connection to Dimensions...
      DEBUG (2010-06-18T17:27:23Z) :Now have 0 connections in use...

      1. Hi Matt

        Which version of the plugin are you using? Some issues with the polling mechanism were resolved with 0.7.6, but I must admit, I have never tested the plugin against a Dimensions 10.1.1 server.

        I'm not sure if Dimensions version compatibility will fully work with 10.1.1. It is usually supposed to be 2 levels back - i.e. 2 levels prior to 2009 R2 - but it would be best to check with the product documentation for the official statement on backwards compatibility support. Most of the functions will usually work greater than 2 levels, but it is rather a gray area.

        Looking at your output however, I would suggest try upgrading the plugin first to the latest version to see if that resolves the issue.

        Hope that helps, Tim

  13. Unknown User (prashanthwge@gmail.com)

    Hi Tim,

    We have issue where the build starts and hangs at checkout to the local workspace.  When we try to delete the specific build it does not get deleted.  The only option leftover for us would be to restart the whole Hudson service.  Is there any option either to delete the build which is in hung state or to know why it is failing?

    Regards

    Prashanth

  14. Unknown User (cherngj@michigan.gov)

    Hi Tim,

    I got the plugin worked with Hudson and Dimensions; however, I could not generate the change log from Hudson. Do I have to something on the Dimensions side for the plugin to generate the change log? By the way, I am using the Dimension Eclipse plugin to check in the code and already provided the comment during the check in process (usually that's all I have to do if I have SVN-Hudson setup for generating change log).

    Thanks,

    Jeff

    1. Hi Jeff

      Early versions of the plugin would only generate change sets if the "Use Update" option was specified. I changed the plugin in a later version (can't specifically remember which) to generate a change set all the time, even if "Use Update" was not specified.

      Does this sound like the issue you are having? If so, try the latest version of the plugin and see if that helps.

      Thanks, Tim

  15. Unknown User (nuno.duque)

    Hi,

    I'm using Hudson deployed on a Tomcat 6.0 server. Hudson version is 1.366 and dimensios plugin is 0.7.7.
    At the begin I add the libraries at Hudson home (/srv/hudson) and it didn't work.
    To solve this I add the 4 jars at Tomcat lib directory and it gives me some ClassNotFoundEsception to LogFactory that I solve adding commons-logging also on the same directory.
    Now I get the same error that Saad report before:
    java.lang.NoSuchMethodError: com.serena.dmclient.api.DimensionsObjectFactory.getServerVersion(I)Ljava/util/List;
    I'm using Dimension 10.3.1 and I think that the libraries I'm using are also from same version.
    I don't have any 2009+ server intallation available.
    Where can I get Java client API JAR files from a Dimensions 2009+ version??

    Thanks,

    1. Hi Nuno

      Sorry, I cannot help you with your query directly other than to suggest that you speak with your support or sales rep to see if you can get a copy.

      Thanks, Tim

  16. Unknown User (prashanthwge@gmail.com)

    HI Tim,

    We have issues of dimension update not passing and the bulid hanging.  The only option we have now is to stop apache tomcat instance and re-start.  Can we have option of setting timeout for update or checkout which will release if the bulid hangs for a specific time.  Pls suggest, we are using tomcat 6.0, dimensions 2009R1_01.

    Thanks, Prashanth

    1. Hi Prashanth

      I'll look into this option for you and see what I can do in the next version of the plugin

      Thanks, Tim

  17. Unknown User (prashanthwge@gmail.com)

    Hi Tim,

    We have issue getting baseline created some times.  It gets sorted out after we do a restart of the Apache Tomcat instance.  The same will work after the restart of the tomcat instance.  But prior to this the lock and unlock is working fine.

    FATAL: Unable to tag build in Dimensions - Dimension command failed -

    PCM0005262E Error: baseline template selected no items, so baseline was not created
    )
    Finished: FAILURE

    1. Hi Prashanth

      The CBL command that is being fired is not finding any objects that match the baseline template rules you have specified.

      Please review the CBL command that is run and ensure you are using a template which is applicable to the baseline + project you are trying to use.

      Thanks, Tim

  18. Unknown User (manubuitre@hotmail.com)

    Hi Tim, I´m trying to use the Dimensions Integration plugin and I´m having one problem.

    I need to run two Dimensions builds (in the command form). Both of them refers to diferent Dimensions Workset, but in the same Dimensions Project.

    The first command job runs correctly, but the second is trying to run the build in the same workset that the first.

    I need your help, I don´t know if this is a bug or not.

    Regards.

    1. Hi Manuel

      I'm sorry, I'm having difficulty understanding your setup from the description you have provided. Can you email me a test case which shows the issue? Then I can look to reproduce it and let you know my thoughts.

      Many thanks, Tim

  19. Unknown User (mgrano)

    Tim,
    Our hudson configuration consists of the master and 3 slave machines.
    One of the slaves is on the same machine as the master. We do not use the executor on the master.
    The plugin works for jobs specified to run on a slave not on the master machine.
    It errors out for jobs specified to run on the slave on the same machine as the master.
    The slave is bld02 but it attempts to checkout on master as shown below.

    Building remotely on bld02
    DIMENSIONS Running checkout on master...
    FATAL: Unable to run checkout callout - remote file operation failed: D:\HudsonSlave\workspace\SCM_TOOLS_JAVA_PHASE2_STR_MFD at hudson.remoting.Channel@6c53e8:bld02
    Notifying upstream projects of job completion
    Finished: FAILURE

    Our hudson jobs currently use custom workspaces for all builds but we are looking into changing this to use the plugin to fetch and let the builds run in the hudson slave workspace.
    When running on a slave on different machine than master everything works.
    Building remotely on bld03
    DIMENSIONS Running checkout on slave...

    Is this an issue with our configuration or can the plugin somehow differentiate between the master and slave on the same machine?

    Thanks.

    1. Hi Mitch

      This issue is fixed in the latest release.

      Thanks, Tim

  20. Thanks for the plugin. Really is useful. Issue I found today was that the file permissions (execute bits in Linux) aren't being honored during checkout. I have the latest Hudson (392) and the latest plugin (v0.7.9) and ensured the job was configured to "DEFAULT" for check out item file permissions (versus R/O or writable). I manually changed the file permissions in the oracle database via the os_file_details table, but none of the files are checked out properly in Hudson. The permission are correct using both the webclient "Get Copy" as well as the dmcli "download" command. I restarted both Hudson as well as Dimensions.

    Any idea where the issue might be?

    1. Hi Brett

      Thanks for the comments.

      This is not an issue I'm aware of, but almost sounds like a problem with the DMCLI or Java API command processing. Is this an issue you are encountering on the master or a slave. The master uses the Java API to run a update/download command, whilst the slave uses the standard DMCLI.

      If you can send me some more information about the configuration, I'll have a look at it for you.

      Thanks, Tim

  21. Hi, Tim!

    I'm using parametrized builds, Sting Parameter 'DM_REQUEST'.

    When I build this job, I can see the Dimensions user's password on console like below.

    [DIMENSIONS] Calculating change set for request(s) '000_CR_167'...
    [buildscript] $ cmd.exe /C '"C:\CTIP\ant-1.7.0\bin\ant.bat -file build.xml -DUSER_ID=dmsys -DDM.PROJECT=PRJ -DWORKSPACE=C:/workspace/PRJ -DPASSWORD=XXXXX
    -DDM_REQUEST=000_CR_167 -DRELEASE_DIST.PATH=../../RELEASE_DIST build-all && exit %%ERRORLEVEL%%"'

    Is there any idea to hide the password?

  22. Our build process publishes build artifacts back to Dimensions.  If I have the Hudson plugin configured to poll for changes this causes a new build to be triggered every time.  This is true even if I use the "Load any build artifacts into the Dimensions repository" option in Hudson/Jenkins.

    Is there any way to configure the Hudson polling process to ignore certain changes?  Maybe through a certain string in the checkin comment?

    1. Hi Paul

      The plugin works by scanning the specified directories being monitored for any new item revisions - whether they were created by the build process or not. At the moment, it does not support the notion of exclusion/inclusion rules in the directories begin monitored. It's not impossible to do, but not sure it is something I would be keen to add myself unless there was a popular need for it.

      I can see the use case, but does not sound a common one to me.

      So, in answer to your question, no, I'm afraid that capability is not there at the moment unless you put your build artifacts into directories that are not part of those being monitored by the plugin. If more people request this functionality, I can put it on the backlog for a future version.

      Many thanks, Tim

    2. Hi Paul

      I've now added this functionality.

      Cheers!

    3. Hi Paul, hopefully better late than never ... try Version 0.8.9 which adds exclusion patterns for polling (the change Tim mentioned above in Jan 2014 was to allow exclusion patterns to be used when specifying artifacts to upload - also useful to tailor what gets published back).

  23. I am trying to add Dimension plugin to Jenkins. When I provide Jenkins with connectivity details, I get a connectivity error. I added the JAR files from the client machine.

    This is the location I found the 4 JAR files.

    C:\Program Files\Serena\Dimensions 12.1\CM\Integrations\RichEclipse3.x\eclipse\plugins\com.serena.eclipse.dimensions.core_3.0.9.121100-01\lib

    Also, I am not able to find <Hudson_Home>/WEB-INF/lib directory. Where is this location in Jenkins? Would appreciate any help.

    Thanks,

    Divya

    1. Hi, it will be <Jenkins_Home> in Jenkins, rather than <Hudson_Home>. Thanks!

  24. I am having an issue using the plugin with Dimensions 10.x and Jenkins 1.526.

    I installed the following 4 jars files: darius.jar, dmclient.jar, dmfile.jar, and dmnet.jar

    The test connection is successful but when I try a build the following error happens: FATAL: com.serena.dmclient.api.DimensionsObjectFactory.getServerVersion(I)Ljava/util/List;

    I am guessing I need the jar files from Dimensions 9.x but we only have a 10.x server - is there another way to get the jar files?

    1. It sounds like you need to upgrade your Jenkins plugin version to be compatible with your JAR versions.

    2. When using Dimension 10.x, you need the JAR files from a Dimensions 2009 R1 installation (normally using the API JAR files from the same version of Dimensions CM as your server installation is best, but in Dimensions 10.x, the Java API was missing some methods, so using the 2009 R1 JAR files is the only option against a Dimensions 10.x server). Serena Support are your best bet in this particular case (or you could download the 2009 R1 installer and install it in a virtual machine to get hold of the JARs).

  25. Does the "Folders to Monitor" field have inclusion and exclusion rules?

    1. Hi Adi,

      The simple answer to your query is no, it does not.

      I have moved on from Serena now and no longer work there and I don't think they are doing anything active with this plugin now to my knowledge. It would be useful to do and was on my todo list at one stage, but might get a bit involved as the API does not really support that sort of thing.

      Hope that helps, Tim

    2. Hi Adi, Version 0.8.9 will now allow you to specify filename patterns to exclude from polling for changes (that is, if they do change, they won't trigger a build) as well as folders to include in polling for changes. So to exclude any 'target' folders, you could specify '**/target/**' as a pattern to exclude. Hope it works for you – Cheers, David.

  26. 1. Installed Jenkins 1.554.3 on Windows Server 2008R2 and installed Dimensions Plugin 0.8.11, connection is working fine.

    2. Set up slave node on AIX machine and installed Dimension agent V10 with necessary permission. While invoking slave agent on Unix machine we are supplying class path via parameters to point dmcli directory as agent is installed under different user. This helped us to remove “[DIMENSIONS] Error: Cannot locate 'dmcli' on the slave node” but below error popped up.

    3. while polling SCM change it prompts below error

    Started by an SCM change

    Building remotely on hdcicgcswaa47u.apac.nsroot.net (CS-SIT-APP-HOST) in workspace /rcssreg1/promotion/udeploy/workspace/CS-CI-SIT-DB

    [DIMENSIONS] Running checkout on slave...

    FATAL: Unable to run checkout callout (IOException: remote file operation failed: /rcssreg1/promotion/udeploy/workspace/CS-CI-SIT-DB at hudson.remoting.Channel@74336292:hdcicgcswaa47u.apac.nsroot.net)

    [ANALYSIS-COLLECTOR] Skipping publisher since build result is FAILURE

    Finished: FAILURE

    4. I am trying to poll from Dimension CM 12.2.2 and then push files to AIX server for the build.

    NOTE : Polling is working fine and then building artifacts on Windows (Master) machine is working fine. Tried to search error over internet but not much help.

    1. Hi Sandeep, I think the issue is with the Jenkins remoting API, so there's a few things you can try first: Restart the slave, check that the version of the slave.jar on the slave is from the same version of Jenkins as your master, and try to use similar JVM versions to run the slave(s) and the master.

      If that doesn't help, then go to Manage Jenkins > System Log, press Add new log recorder button, name it "Dimensions Plugin" for example, add the "hudson.plugins.dimensionsscm" logger to it (with Log Level "ALL"), and press Save. If you then repeat the polling, you will find debug logging in the newly-added log recorder. This will include stack traces to help us diagnose what is going on. – Cheers, David.

      1. Hi David, 

        > Being UAT server not able to restart.

        > Confirmed Slave.jar version on slave is same version as of jenkins master. Since Master is on windows and Slave on AIX, will not be able to use same JVM version.

        Slave JVM version
        java version "1.6.0"
        Java(TM) SE Runtime Environment (build pap3260sr15fp1-20140110_01(SR15 FP1))
        IBM J9 VM (build 2.4, JRE 1.6.0 IBM J9 2.4 AIX ppc-32 jvmap3260sr15-20131231_180656 (JIT enabled, AOT enabled)
        J9VM - 20131231_180656
        JIT - r9_20130920_46510ifx3
        GC - GA24_Java6_SR15_20131231_1152_B180656)
        JCL - 20140107_01
        Master JVM version (Configured under Jenkins->Configuration->Global properties -> Environment Variables -> List of key-value pairs)
        name :  JDK 1.6

        value:   C:\Progra~1\Java\jdk1.6.0_65\bin

        > Enabled Log recorder, please find attached complete log message for your reference.Error.txt

        1. Thanks Sandeep. Unfortunately, it looks like the problem is happening on a path through the code where we don't log the exception any more clearly than it appears in the Jenkins Console – I don't think that Jenkins is able to connect to the remote machine at all. So if you configure a job that just does "echo Hello world" and doesn't use the Jenkins Dimensions Plugin at all, but runs on the same remote slave, does that work OK?

          I'll try to add more logging of remote {{IOException}}s in the next release of the plugin, but in the meantime our best bet to diagnose this now is:

          1. Try a test job that doesn't use Dimensions, but just runs a dummy script (as mentioned in the first paragraph above) to check that Jenkins recognizes the slave machine OK and can talk to it.
          2. In the Log Recorder that we just added, add a new logger with an empty Logger name, but with Log level WARNING. This will show any warnings from other parts of Jenkins. Hopefully, Jenkins remoting will log something about the particular exception that will give us more information to go on. – Cheers, David.
          1. Hi David,

            Thanks for your reply.

            1. Tried with SVN plugin and check out of file happened successfully over same AIX slave machine. This means Jenkins recognize slave machine and talks to it. Also tried to connect from Slave AIX to Dimension repository after invoking dmcli command. There we need to tweak to export Library path and then it worked to get files manually on AIX box.

            2. Also set up Windows Slave with Dimension plugin and was successful to check out files over Windows slave machine.

            Let me know if you need further details.

            Regards,
            Sandeep

            1. Apologies for the delay getting back to you, Sandeep, Christmas vacation got in the way, and then I wanted to make a new Jenkins Dimensions Plugin release with more debug-logging before getting back to you, so that you could use it to get some further diagnostics. However, events keep conspiring to prevent me from making a new release...

              In the meantime, I did some reading about SSH Slaves plugin, and your problem might be to do with the way that the slave is started on AIX by OpenSSH without sourcing dmprofile (this would explain the difference to Windows, and your comment about tweaking the Library path). There are a few ways you can force the environment to be set correctly on an SSH slave:

              • you can write a wrapper java script that sources the environment before executing the real java executable;
              • you can use the EnvInject Plugin;
              • you can use ~/.ssh/environment file to set the environment variables.

              I'll try to make a new release with more detailed diagnostics soon anyway.

              1. Hi David,

                Thanks for your help and support. This issue has been resolved after we found out work around for this issue.

                1. Edited the user profile and added Dimension Library path to it. This helped to load dmprofile for the user to pick up dmcli command and perform check out operation.

                2. Started the Slave agent manually with the command (which we get on the Windows master while starting agent) on AIX box to run it as background command (nohup "java -jar slave.jar -jnlpUrl http://Jenkins installation machine name:9090/computer/slave machine name/slave-agent.jnlp -secret 6c5c4ce0122342adb1948b44596f82e94c95ec54bf7c3a430c65b3bba2e1ae6b" &)

                Its starting the Slave agent and keep it running which is happening at the moment. Once this is set up, Jenkins job able to connect to Dimension. Perform check out operation and finally doing the build on slave machine.

                With the error code, it was difficult to narrow down the error. Also we did raised to Dimension support and with their input it helped us to understand required Dimension libraries to perform check out operation.

                Thanks,
                Sandeep

                1. That is very good news. I'm very glad Serena Support were able to resolve your issue (using the JNLP slave startup is another way around it, avoiding SSH altogether). Your case will lead to better diagnostics for slave issues being added in the next release of the plugin. Thank you for all your input – Cheers, David.

  27. I am running Jenkins 1.642.1 LTS with the Dimensions plugin version 0.8.13. The Dimensions server has version 12.2.

    The plugin reports it can successfully connect to the server, but the Jenkins project build runs never find any files.

    Any hints?
    Bert Laverman

    1. Hi Bert, it sounds like you have modified some files in a stream that the plugin is configured to monitor, but the plugin is not triggering a build.

      One step in getting to the bottom of is to enable some logging in Jenkins: see https://wiki.jenkins-ci.org/display/JENKINS/Logging#Logging-LogsinJenkins – add a logger called 'hudson.plugins.dimensionsscm' at the finest log level into a new Log Recorder. Now deliver some changes that should trigger a build, wait for the polling period and take a look in the Log Recorder. Let me know what it says. HTH - Cheers, David.

      1. David,

        no, this is not about monitoring. I have a newly created project in Jenkins, so the workspace does not contain any files yet. I have only configured the Dimensions project to obtain the sources from and the build step to run a sonar scan. No matter how many times I manually start a build, there are still no files in the Jenkins workspace. The Dimensions user is configured to have browse rights on the project and there are files in there, but they are not downloaded into the workspace.

        Bert

        1. Hi Bert,

          Did you installed Dimension agent on the Jenkins Server, important command to check out or get files from Dimension is dmcli.

          1. Considering your Jenkins installed on Windows machine, you can browse to "C:\Program Files (x86)\Serena\Dimensions 12.2\CM\prog" by default installation directory.

          2. Same applies to Unix machine as well, in case of unix User should have access to dimension installation directory else edit use profile to point "dmcli" directory under users profiles.

          Let us know if above helps. Can you paste what it captures under Jenkins job console output to understand issue better.

          Regards,
          Sandeep

          1. Sandeep,

            I have installed the 4 jar-files that are required for the plugin and we get no errors. Our Jenkins server is not a development machine, so we do not have the Dimensions client installed. I have enabled logging as David suggested, and it shows the plugin querying Dimensions for changes. However, normally Jenkins SCM plugins will retrieve all files the first time, and only scan for changes if there is a baseline present in the workspace. This behaviour I am not seeing. As a result the workspace is empty and stays empty.

            1. Hi Bert,

              For Jar files worked correctly for me, please refer to "https://issues.jenkins-ci.org/browse/JENKINS-29800"

              Also under Jobs configure section -> Browse to Source code management -> when you select "Dimensions" ---> Click on Advanced section to check User authorization by clicking on Check Connection. Ensure Use Update check box is ticked.

              However I feel to poll files you need to have "dmcli" which is nothing but Dimension command line which invokes other Dimension command lines like check out, check in, update.

              1. Hi Sandeep, the polling for changes is done using the Java API. Only once a job has been triggered would dmcli be needed (and even then only if he was using slave-based checkout). In this case, Bert's job isn't even being triggered, so the problem is to do with how the plugin spots changes in the monitored project. In case of manually triggering the job, the Java API should be sufficient if slaves are not being used (although one or two customers have had issues with this leaving files locked, that were resolved by switching to slave-based checkout and dmcli).

        2. From the logs below, it looks like you are using a project (not a stream) and the plugin thinks there have been no changes (found 0 rel(s) in 109ms).

          Have you checked out and checked in a file in the monitored folder? Note that because of the way the plugin works with CM 12 (it spots updates to item update date), it won't spot changes that consist solely of renames or deletions with no additions or modifications, so if your change was just an SWF command (for example) that would not be sufficient to trigger a build by itself.

          A second possibility depends is that the database server's timezone is different to your Jenkins server. If so, under Source Code Management / Dimensions in the job configuration, press the Advanced... button and enter, for example, 'America/Los_Angeles' (note that the Validate Timezone button just checks you have entered a valid timezone, it can't check the timezone is the correct one, just that it is a valid value).

          EDIT:

          Just realized you said you were manually triggering the build. Do you have the 'Use Update' checkbox (also in the Advanced... settings for Dimensions) selected? You could email me your Jenkins XML configuration file for the job and I can use that to check your settings - do take a look at it first and remove anything that you're not happy sending to me (such as usernames, encoded passwords and machine names).

          1. David,

            again you talk about detecting changes. If I have a new and empty Jenkins server, give it the Dimensions plugin, and configure a project on it, how do I get the first time checkout? I cannot wait for the first change on a file, the plugin needs to get the current state so I get a baseline in the workspace.

            PS "Use Update" is checked.

            Bert

            1. Sorry Bert! My bad for misunderstanding your original question and then focusing on the logs. The log below appears to be for a build execution when 'Use Update' was unselected (perhaps the problem is that the plugin thinks it is unselected when it is not in the UI). If you restart Jenkins, does the 'Use Update' checkbox stay selected for your job, or does it change state?

              1. After a restart the "Use Update" option is still checked. I did a fresh run and saw someone had checked in a few files: I got a set of changes. However, this did still not cause the actual files to be downloaded from Dimensions. Note that the Changelog is shown in Jenkins and it contains the checkin text from the developers.

                It looks like the connection is working and change-sets are correctly made, but every time the step of actually downloading the files is skipped.

                Bert

                EDIT: FOUND IT! The project specific settings also had a "Use Update" and that one was unchecked. I kept looking at the central Jenkins configuration and not the project specific ones.

                1. Great! Thank you for letting me know. The project-specific settings are just copied from the central settings when the project is created: There is no "inheritance" of the project-specific settings from the central settings after the project has been created. I'll look into ways of making this clearer in the UI. – Cheers, David.

                  1. Thanks Bret for the feedback. In my previous comment I mentioned jobs instead of projects to check for Use update under jobs configuration although both refers to same. Glad to hear issue got resolved and really appreciate David, always on top of issues to help folks.

                    Regards,

                    Sandeep

      2. The logs shows:

        mrt 31, 2016 9:19:03 AM FINE hudson.plugins.dimensionsscm.DimensionsSCM checkout
        Skipping checkout - hudson.plugins.dimensionsscm.DimensionsSCM
        
        mrt 31, 2016 9:19:03 AM FINE hudson.plugins.dimensionsscm.DimensionsSCM checkout
        Invoking checkout - hudson.plugins.dimensionsscm.DimensionsSCM
        
        mrt 31, 2016 9:19:03 AM FINE hudson.plugins.dimensionsscm.DimensionsSCM checkout
        Plugins are ok
        
        mrt 31, 2016 9:19:03 AM FINE hudson.plugins.dimensionsscm.DimensionsSCM generateChangeSet
        Log updates between 2016-03-31T08:53:21Z -> 2016-03-31T09:19:03Z (Europe/Berlin)
        
        mrt 31, 2016 9:19:03 AM FINE hudson.plugins.dimensionsscm.DimensionsAPI login
        DimensionsAPI.login - build number: "26", project: "ALFA test"
        
        mrt 31, 2016 9:19:03 AM FINE hudson.plugins.dimensionsscm.DimensionsAPI login
          build getBuiltOn().getNodeName(): ""
        
        mrt 31, 2016 9:19:03 AM FINE hudson.plugins.dimensionsscm.DimensionsAPI login
        Checking Dimensions login parameters...
        
        mrt 31, 2016 9:19:03 AM FINE hudson.plugins.dimensionsscm.DimensionsAPI login
        Logging into Dimensions: sa_2389 nl015udbp5204.unix.dlnv pcms@dim02p
        
        mrt 31, 2016 9:19:03 AM FINE hudson.plugins.dimensionsscm.DimensionsAPI login
        Getting Dimensions connection...
        
        mrt 31, 2016 9:19:04 AM FINE hudson.plugins.dimensionsscm.DimensionsAPI login
        Connection map key is 32
        
        mrt 31, 2016 9:19:04 AM FINE hudson.plugins.dimensionsscm.DimensionsAPI login
        Connection map size before putIfAbsent is 0
        
        mrt 31, 2016 9:19:04 AM FINE hudson.plugins.dimensionsscm.DimensionsAPI login
        Connection map size after putIfAbsent is 1
        
        mrt 31, 2016 9:19:04 AM FINE hudson.plugins.dimensionsscm.DimensionsAPI login
        Server information detected -3
        
        mrt 31, 2016 9:19:04 AM FINE hudson.plugins.dimensionsscm.DimensionsAPI login
        0 - 12.2.2.2
        
        mrt 31, 2016 9:19:04 AM FINE hudson.plugins.dimensionsscm.DimensionsAPI login
        1 - 2
        
        mrt 31, 2016 9:19:04 AM FINE hudson.plugins.dimensionsscm.DimensionsAPI login
        2 - 12.2.2.4 Build 9.339
        
        mrt 31, 2016 9:19:04 AM FINE hudson.plugins.dimensionsscm.DimensionsAPI login
        Detected server version: 12.2.2.4 Build 9.339
        
        mrt 31, 2016 9:19:04 AM FINE hudson.plugins.dimensionsscm.DimensionsAPI login
        Version to process set to 2010
        
        mrt 31, 2016 9:19:04 AM FINE hudson.plugins.dimensionsscm.DimensionsAPI login
          key: "32"
        
        mrt 31, 2016 9:19:04 AM FINE hudson.plugins.dimensionsscm.DimensionsSCM generateChangeSet
        Login worked.
        
        mrt 31, 2016 9:19:04 AM FINE hudson.plugins.dimensionsscm.DimensionsSCM generateChangeSet
        Extra parameters - null null
        
        mrt 31, 2016 9:19:04 AM FINE hudson.plugins.dimensionsscm.DimensionsSCM generateChangeSet
        Looking for changes in 'db/package'...
        
        mrt 31, 2016 9:19:04 AM FINE hudson.plugins.dimensionsscm.DimensionsAPI getCon
        Looking for key 32
        
        mrt 31, 2016 9:19:04 AM FINE hudson.plugins.dimensionsscm.DimensionsAPI getCon
        Found database
        
        mrt 31, 2016 9:19:04 AM FINE hudson.plugins.dimensionsscm.DimensionsAPI getCon
        Looking for key 32
        
        mrt 31, 2016 9:19:04 AM FINE hudson.plugins.dimensionsscm.DimensionsAPI getCon
        Found database
        
        mrt 31, 2016 9:19:04 AM FINE hudson.plugins.dimensionsscm.DimensionsAPI calcRepositoryDiffs
        Looking between 31-Mar-2016 08:53:21 -> 31-Mar-2016 09:19:03
        
        mrt 31, 2016 9:19:04 AM FINE hudson.plugins.dimensionsscm.DimensionsAPI queryItems
        queryItems() - Project(DL_ALFA:ALFA_2014.ONTWIKKEL).getChildItems(Filter([#-1301 >= '31-Mar-2016 08:53:21', #-1301 <= '31-Mar-2016 09:19:03', IS_EXTRACTED <> 'Y', ITEMFILE_DIR == 'db/package/%', IS_LATEST_REV == true], [REVISION_COMMENT ASC, ITEMFILE_DIR ASC, ITEMFILE_FILENAME ASC])) found 0 rel(s) in 109 ms
        
        mrt 31, 2016 9:19:04 AM FINE hudson.plugins.dimensionsscm.DimensionsAPI createChangeSetLogs
        CM Url :
        
        mrt 31, 2016 9:19:04 AM FINE hudson.plugins.dimensionsscm.DimensionsAPI createChangeSetLogs
        Writing 0 changes to changelog file 'E:\Apps\Jenkins\jobs\ALFA test\builds\26\changelog.xml'
        
        mrt 31, 2016 9:19:04 AM FINE hudson.plugins.dimensionsscm.DimensionsChangeLogWriter write
        Writing logfile in append mode = false
        
        mrt 31, 2016 9:19:04 AM FINE hudson.plugins.dimensionsscm.DimensionsChangeLogWriter write
        Writing to changelog: ''
        
        mrt 31, 2016 9:19:04 AM FINE hudson.plugins.dimensionsscm.DimensionsAPI logout
        DimensionsAPI.logout - build number: "26", project: "ALFA test"
        
        mrt 31, 2016 9:19:04 AM FINE hudson.plugins.dimensionsscm.DimensionsAPI getCon
        Looking for key 32
        
        mrt 31, 2016 9:19:04 AM FINE hudson.plugins.dimensionsscm.DimensionsAPI getCon
        Found database
        
        mrt 31, 2016 9:19:04 AM FINE hudson.plugins.dimensionsscm.DimensionsAPI logout
        Closing connection to Dimensions for key "32"...
        
        mrt 31, 2016 9:19:04 AM FINE hudson.plugins.dimensionsscm.DimensionsAPI logout
        Now have 0 connections in use...
        
        
  28. Currently the plug in requires that a project be locked when using the option Tag successful builds in Dimensions as a baseline.  This requires performing a build from a project.  What I would like to do is instead perform a build from a baseline (which I normally do already), then check the build outputs into Dimensions using a Change Request (which I can provide using parameter DM_TARGET_REQUEST), without the need for locking a project.  The tagging process would then create a Revised baseline with only those items checked in by the Jenkins build.

    Doing a build from a baseline and creating a revised baseline should preclude the need to lock the project.

    Is there a way to actually do this, or is this something that can be allowed for in a near term update to the plugin?

    1. Hi Michael, the capability to download a particular project version (changeset in CM 14.x), which would be the equivalent of building from a snapshot, is planned (and a baseline created from a project version contains its content). However, if you are using an older version of CM (e.g., 12.x) that won't help. If so, then use the Jenkins Plugin to trigger builds, and instead of "Update" by the Jenkins Plugin, adding an initial build step to your Jenkins Project to run a dmcli command script to create the baseline and fetch it works well. HTH - Cheers, David.

      1. I am currently running version 14.x.  I haven't had any luck executing DMCLI commands; perhaps because I don't know what parameter(environment variable) to use to issue the connect command and provide the userid and password.

        For me, the easiest solution would be if I could just get around the requirement to lock the project.  Then all would work great.

        1. To run dmcli command line you need to do...

          dmcli -user <cmUser> -pass <pwd> -host <dmserver> -dbname <dbName@dns> then you can either pipe in scripts via stdin or use the command file parameter

          1. Cheers Tim for catching this command and giving good information as always (smile).

            Michael, an alternative way of logging in (other than putting the parameters in the dmcli line) is `dmcli -param param.txt -file commands.txt`, where the login parameter file param.txt has content like:

            -user dmsys
            -pass myPassword
            -host cmserver.example.com
            -dbname CM_TYPICAL@DIM14
            

            and the command file commands.txt (which you might generate within the build step) has content like:

            CRB "QLARIUS:BASELINE-TARGETS-10" /BASELINE1="QLARIUS:BASELINE-SOURCE-10" /UPDATE_CHANGE_DOC_IDS=(...) /REMOVE_CHANGE_DOC_IDS=(...)
            

            You can set permissions on the login parameter file so that only the Jenkins user account can read it. If you are using SSH slaves, then be aware that SSH slaves are run with a non-interactive shell, so you need to source dmprofile in the user's profile, not bashrc.

    2. Hi Michael, the plugin already supports CRB and Baseline builds. You need to specify a parameter build job using DM_BASELINE in a parameter (source baseline to build) and DM_TARGET_REQUEST as another. The baseline will then be used as the source for the build and the target request will be used for the CRB.

      It worked in the past, but not sure if Serena have maintained all the functionality. Thanks!

  29. Thanks very much.  I am on a roll now.

    1. Great. Glad to hear you have things working. – Cheers, David.

  30. I am using the latest version of Jenkins and the Dimensions plugin. My Jenkins build is on a Red Hat Linux server and my Dimensions build is on a separate server.

    When creating a new project and using Dimensions for Source Code Management I get a Stack Trace error when trying to Apply or Save the project. The Dimensions login details are fine as a separate server running Jenkins is able to access the same database without any problems. When I 'Test Connection' the connection test succeeds and it is reaching Dimensions as it can tell if the login details are correct or not.

    The errors shown in the stack trace are:

    javax.servlet.ServletException: java.lang.IllegalArguementException: Failed to instantiate class Hudson.scm.SCM

    java.lang.IllegalArgumentException: Failed to convert the folders parameter of the contstructor public

    java.lang.IllegalArgumentException: Failed to instantiate class java.lang.String from {"folders":"/"

    org.kohsuke.stapler.NoStaplerConstructorException: There's no @DataBoundConstructor on any constructor of class java.lang.String

    1. The exact versions and exact text of the stack trace is likely to be very important to diagnose this. Could you go to Manage Jenkins > System Log, press Add new log recorder button, name it "Dimensions Plugin" for example, add the "hudson.plugins.dimensionsscm" logger to it (with Log Level "ALL"), and press Save. Then try to create an new job using Dimensions for source code management: you will find more detailed debug logging in the newly-added log recorder.

      This will include a more detailed stack trace to help me diagnose what is going on (please copy-and-paste it into a comment here or an email). If you also confirm that the version of the Jenkins Dimensions Plugin is 0.8.13 from the Update Center and whether the version of Jenkins is 2.11 (weekly) or 1.651.3 (LTS), that would be helpful. If you have the version number of Jenkins running on the separate server that works, that would also be helpful (there was a suspicious-looking change made in Jenkins 2.9 that may be the culprit).

      – Cheers, David.

    2. Having recreated this in Jenkins 2.11, I'm pretty sure it has the same underlying cause as JENKINS-35906, a regression in Jenkins Core which there is already a pull request to fix (#2426). With any luck, the next version of Jenkins will include the fix (Jenkins 2.8 or earlier is fine; Jenkins 2.9, 2.10, 2.11 contain the issue; hopefully Jenkins 2.12+ won't (smile)). – Cheers, David.

  31. My Dimensions plugin is version 0.8.13 and my Jenkins version is 2.11. The server that was able to access the same dimensions server was running version 0.8.1 of the Dimensions plugin and 1.466 of Jenkins. (It was an older project)

    I created the logger and the log generated is below.

    Jun 30, 2016 9:07:15 AM FINE hudson.plugins.dimensionsscm.DimensionsSCM$DescriptorImpl docheckServer
    Server connection check to user [dtsbuild], database [amt2@dim1], server [amtbeldim2]
    Jun 30, 2016 9:07:15 AM FINE hudson.plugins.dimensionsscm.DimensionsAPI login
    Checking Dimensions login parameters...
    Jun 30, 2016 9:07:15 AM FINE hudson.plugins.dimensionsscm.DimensionsAPI login
    Logging into Dimensions: dtsbuild amtbeldim2 amt2@dim1
    Jun 30, 2016 9:07:15 AM FINE hudson.plugins.dimensionsscm.DimensionsAPI login
    Getting Dimensions connection...
    Jun 30, 2016 9:07:15 AM FINE hudson.plugins.dimensionsscm.DimensionsAPI login
    Connection map key is 14
    Jun 30, 2016 9:07:15 AM FINE hudson.plugins.dimensionsscm.DimensionsAPI login
    Connection map size before putIfAbsent is 0
    Jun 30, 2016 9:07:15 AM FINE hudson.plugins.dimensionsscm.DimensionsAPI login
    Connection map size after putIfAbsent is 1
    Jun 30, 2016 9:07:15 AM FINE hudson.plugins.dimensionsscm.DimensionsAPI login
    Server information detected -3
    Jun 30, 2016 9:07:15 AM FINE hudson.plugins.dimensionsscm.DimensionsAPI login
    0 - 14.2
    Jun 30, 2016 9:07:15 AM FINE hudson.plugins.dimensionsscm.DimensionsAPI login
    1 - 2
    Jun 30, 2016 9:07:15 AM FINE hudson.plugins.dimensionsscm.DimensionsAPI login
    2 - 14.2.0 Build 9.421
    Jun 30, 2016 9:07:15 AM FINE hudson.plugins.dimensionsscm.DimensionsAPI login
    Detected server version: 14.2.0 Build 9.421
    Jun 30, 2016 9:07:15 AM FINE hudson.plugins.dimensionsscm.DimensionsAPI login
    Version to process set to 2009
    Jun 30, 2016 9:07:15 AM FINE hudson.plugins.dimensionsscm.DimensionsSCM$DescriptorImpl docheckServer
    Server connection check returned key [14]
    Jun 30, 2016 9:07:15 AM FINE hudson.plugins.dimensionsscm.DimensionsAPI getCon
    Looking for key 14
    Jun 30, 2016 9:07:15 AM FINE hudson.plugins.dimensionsscm.DimensionsAPI getCon
    Found database
    Jun 30, 2016 9:07:15 AM FINE hudson.plugins.dimensionsscm.DimensionsAPI logout
    Closing connection to Dimensions for key "14"...
    Jun 30, 2016 9:07:15 AM FINE hudson.plugins.dimensionsscm.DimensionsAPI logout
    Now have 0 connections in use...

    And the full stack trace file is below:

    Stack trace
    javax.servlet.ServletException: java.lang.IllegalArgumentException: Failed to instantiate class hudson.scm.SCM from {"value":"1","stapler-class":"hudson.plugins.dimensionsscm.DimensionsSCM","$class":"hudson.plugins.dimensionsscm.DimensionsSCM","project":"NIFAIS:DEV_STREAM","folders":{"folders":"/","pathToExclude":{"pathsToExclude":"","canJobDelete":true,"canJobForce":false,"canJobRevert":false,"jobUserName":"dtsbuild","jobPasswd":"password","jobServer":"amtbeldim2","jobDatabase":"amt2@dim1","canJobUpdate":{"canJobExpand":false,"canJobNoMetadata":false,"canJobNoTouch":false,"permissions":"DEFAULT","eol":"DEFAULT","forceAsSlave":false*,"jobTimeZone":"GMT","jobWebUrl":"http://amtbeldim2:8080/dimensions/"* at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:796) at org.kohsuke.stapler.Stapler.invoke(Stapler.java:876) at org.kohsuke.stapler.MetaClass$5.doDispatch(MetaClass.java:233) at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58) at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:746) at org.kohsuke.stapler.Stapler.invoke(Stapler.java:876) at org.kohsuke.stapler.Stapler.invoke(Stapler.java:649) at org.kohsuke.stapler.Stapler.service(Stapler.java:238) at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:812) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1669) at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:135) at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:126) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:80) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84) at hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:51) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) at jenkins.security.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:117) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) at org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) at jenkins.security.BasicHeaderProcessor.doFilter(BasicHeaderProcessor.java:93) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249) at hudson.security.HttpSessionContextIntegrationFilter2.doFilter(HttpSessionContextIntegrationFilter2.java:67) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:76) at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:171) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:49) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:82) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) at org.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter.java:30) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:553) at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223) at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127) at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515) at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185) at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97) at org.eclipse.jetty.server.Server.handle(Server.java:499) at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311) at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257) at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544) at winstone.BoundedExecutorService$1.run(BoundedExecutorService.java:77) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)
    Caused by: java.lang.IllegalArgumentException: Failed to instantiate class hudson.scm.SCM from {"value":"1","stapler-class":"hudson.plugins.dimensionsscm.DimensionsSCM","$class":"hudson.plugins.dimensionsscm.DimensionsSCM","project":"NIFAIS:DEV_STREAM","folders":{"folders":"/","pathToExclude":{"pathsToExclude":"","canJobDelete":true,"canJobForce":false,"canJobRevert":false,"jobUserName":"dtsbuild","jobPasswd":"password","jobServer":"amtbeldim2","jobDatabase":"amt2@dim1","canJobUpdate":{"canJobExpand":false,"canJobNoMetadata":false,"canJobNoTouch":false,"permissions":"DEFAULT","eol":"DEFAULT","forceAsSlave":false*,"jobTimeZone":"GMT","jobWebUrl":"http://amtbeldim2:8080/dimensions/"* at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:676) at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:478) at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:474) at hudson.scm.SCMS.parseSCM(SCMS.java:59) at hudson.model.AbstractProject.submit(AbstractProject.java:1870) at hudson.model.Project.submit(Project.java:230) at hudson.model.Job.doConfigSubmit(Job.java:1229) at hudson.model.AbstractProject.doConfigSubmit(AbstractProject.java:796) at sun.reflect.GeneratedMethodAccessor304.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:324) at org.kohsuke.stapler.interceptor.RequirePOST$Processor.invoke(RequirePOST.java:52) at org.kohsuke.stapler.PreInvokeInterceptedFunction.invoke(PreInvokeInterceptedFunction.java:26) at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:167) at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:100) at org.kohsuke.stapler.MetaClass$1.doDispatch(MetaClass.java:124) at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58) at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:746) ... 58 more
    Caused by: java.lang.IllegalArgumentException: Failed to convert the folders parameter of the constructor public hudson.plugins.dimensionsscm.DimensionsSCM(java.lang.String,java.lang.String[],java.lang.String[],java.lang.String,boolean,boolean,boolean,java.lang.String,java.lang.String,java.lang.String,java.lang.String,boolean,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,boolean,boolean,boolean,boolean) at org.kohsuke.stapler.RequestImpl.instantiate(RequestImpl.java:773) at org.kohsuke.stapler.RequestImpl.access$200(RequestImpl.java:83) at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:674) ... 76 more
    Caused by: java.lang.IllegalArgumentException: Failed to instantiate class java.lang.String from {"folders":"/"* at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:676) at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:712) at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:478) at org.kohsuke.stapler.RequestImpl.instantiate(RequestImpl.java:771) ... 78 more
    Caused by: org.kohsuke.stapler.NoStaplerConstructorException: There's no @DataBoundConstructor on any constructor of class java.lang.String at org.kohsuke.stapler.ClassDescriptor.loadConstructorParamNames(ClassDescriptor.java:247) at org.kohsuke.stapler.RequestImpl.instantiate(RequestImpl.java:758) at org.kohsuke.stapler.RequestImpl.access$200(RequestImpl.java:83) at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:674) ... 81 more
    Stack trace

    javax.servlet.ServletException: java.lang.IllegalArgumentException: Failed to instantiate class hudson.scm.SCM from {"value":"1","stapler-class":"hudson.plugins.dimensionsscm.DimensionsSCM","$class":"hudson.plugins.dimensionsscm.DimensionsSCM","project":"NIFAIS:DEV_STREAM","folders":{"folders":"/"#,"pathToExclude":{"pathsToExclude":""#,"canJobDelete":true,"canJobForce":false,"canJobRevert":false,"jobUserName":"dtsbuild","jobPasswd":"password","jobServer":"amtbeldim2","jobDatabase":"amt2@dim1","canJobUpdate":{"canJobExpand":false,"canJobNoMetadata":false,"canJobNoTouch":false,"permissions":"DEFAULT","eol":"DEFAULT","forceAsSlave":false#,"jobTimeZone":"GMT","jobWebUrl":"http://amtbeldim2:8080/dimensions/"#

    at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:796)

    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:876)

    at org.kohsuke.stapler.MetaClass$5.doDispatch(MetaClass.java:233)

    at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58)

    at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:746)

    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:876)

    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:649)

    at org.kohsuke.stapler.Stapler.service(Stapler.java:238)

    at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)

    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:812)

    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1669)

    at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:135)

    at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:126)

    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)

    at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:80)

    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)

    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84)

    at hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:51)

    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)

    at jenkins.security.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:117)

    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)

    at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125)

    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)

    at org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142)

    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)

    at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271)

    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)

    at jenkins.security.BasicHeaderProcessor.doFilter(BasicHeaderProcessor.java:93)

    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)

    at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249)

    at hudson.security.HttpSessionContextIntegrationFilter2.doFilter(HttpSessionContextIntegrationFilter2.java:67)

    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)

    at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:76)

    at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:171)

    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)

    at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:49)

    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)

    at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:82)

    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)

    at org.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter.java:30)

    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)

    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585)

    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)

    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:553)

    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)

    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)

    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)

    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)

    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)

    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)

    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)

    at org.eclipse.jetty.server.Server.handle(Server.java:499)

    at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311)

    at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)

    at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544)

    at winstone.BoundedExecutorService$1.run(BoundedExecutorService.java:77)

    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)

    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)

    at java.lang.Thread.run(Thread.java:745)

    Caused by: java.lang.IllegalArgumentException: Failed to instantiate class hudson.scm.SCM from {"value":"1","stapler-class":"hudson.plugins.dimensionsscm.DimensionsSCM","$class":"hudson.plugins.dimensionsscm.DimensionsSCM","project":"NIFAIS:DEV_STREAM","folders":{"folders":"/"#,"pathToExclude":{"pathsToExclude":""#,"canJobDelete":true,"canJobForce":false,"canJobRevert":false,"jobUserName":"dtsbuild","jobPasswd":"password","jobServer":"amtbeldim2","jobDatabase":"amt2@dim1","canJobUpdate":{"canJobExpand":false,"canJobNoMetadata":false,"canJobNoTouch":false,"permissions":"DEFAULT","eol":"DEFAULT","forceAsSlave":false#,"jobTimeZone":"GMT","jobWebUrl":"http://amtbeldim2:8080/dimensions/"#

    at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:676)

    at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:478)

    at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:474)

    at hudson.scm.SCMS.parseSCM(SCMS.java:59)

    at hudson.model.AbstractProject.submit(AbstractProject.java:1870)

    at hudson.model.Project.submit(Project.java:230)

    at hudson.model.Job.doConfigSubmit(Job.java:1229)

    at hudson.model.AbstractProject.doConfigSubmit(AbstractProject.java:796)

    at sun.reflect.GeneratedMethodAccessor304.invoke(Unknown Source)

    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

    at java.lang.reflect.Method.invoke(Method.java:498)

    at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:324)

    at org.kohsuke.stapler.interceptor.RequirePOST$Processor.invoke(RequirePOST.java:52)

    at org.kohsuke.stapler.PreInvokeInterceptedFunction.invoke(PreInvokeInterceptedFunction.java:26)

    at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:167)

    at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:100)

    at org.kohsuke.stapler.MetaClass$1.doDispatch(MetaClass.java:124)

    at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58)

    at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:746)

    ... 58 more

    Caused by: java.lang.IllegalArgumentException: Failed to convert the folders parameter of the constructor public hudson.plugins.dimensionsscm.DimensionsSCM(java.lang.String,java.lang.String[],java.lang.String[],java.lang.String,boolean,boolean,boolean,java.lang.String,java.lang.String,java.lang.String,java.lang.String,boolean,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,boolean,boolean,boolean,boolean)

    at org.kohsuke.stapler.RequestImpl.instantiate(RequestImpl.java:773)

    at org.kohsuke.stapler.RequestImpl.access$200(RequestImpl.java:83)

    at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:674)

    ... 76 more

    Caused by: java.lang.IllegalArgumentException: Failed to instantiate class java.lang.String from {"folders":"/"#

    at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:676)

    at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:712)

    at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:478)

    at org.kohsuke.stapler.RequestImpl.instantiate(RequestImpl.java:771)

    ... 78 more

    Caused by: org.kohsuke.stapler.NoStaplerConstructorException: There's no @DataBoundConstructor on any constructor of class java.lang.String

    at org.kohsuke.stapler.ClassDescriptor.loadConstructorParamNames(ClassDescriptor.java:247)

    at org.kohsuke.stapler.RequestImpl.instantiate(RequestImpl.java:758)

    at org.kohsuke.stapler.RequestImpl.access$200(RequestImpl.java:83)

    at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:674)

    ... 81 more

    Note: I had to replaced the closing character which corresponds with '{'  with a '#' when pasting in the stack trace as it kept replacing chunks of text with "Unknown Macro" errors - so apologies for any extra confusion that adds.

    1. Thanks Jordan! As mentioned, the problem is due to a change made in Jenkins Core (although I'll look at ways of changing the Dimensions Plugin code to avoid similar problems affecting it in future). As a workaround you could use Jenkins 2.8 in the meantime. It looks like JENKINS-35906 will be fixed soon, so I'll reply here (so you get notified) when there is a fixed version of Jenkins Core. – Cheers, David.

      1. Many thanks David! Reverting to Jenkins 2.8 has resolved the problems. I really appreciate the help!

        1. Hi Jordan, you're probably happily using Jenkins 2.8, but if you're interested: Jenkins 2.12 also appears to work fine. – Cheers, David.

  32. Hi, 

    Would like to know is there any idea whether dimension will support for Jenkins plugin ?

    Am just looking for dimension pipeline options for pipeline scm. 

  33. Hi Murugaiyan, While I'm not currently working on that, pipeline support is something that has been requested before. It is on my radar, but I need to do some research about what is involved - and if you have any input on your priorities, I'm listening. - Cheers, David.

  34. Hi,

    I am struggling with error thrown from dimension plug-in, which shows like this.

     

    [DIMENSIONS] SUCCESS: Using Current Project '005:12011302_SRC_PRJ'.
    [DIMENSIONS] Using 'D:\ctip_repo\ci\jobs\GSCM_GET_NETWORK\workspace\' as the Project work area.
    [DIMENSIONS] Scanning repository: 0.91 sec
    [DIMENSIONS] Scanning local work area: 0.00 sec
    [DIMENSIONS] Getting files: 0.00 sec
    [DIMENSIONS] Getting Project: 1.45 sec
    [DIMENSIONS] Operation completed
    [DIMENSIONS] Operation completed
    [DIMENSIONS] )
    [DIMENSIONS] Calculating change set for directory 'gscm-webapp-network'...
    FATAL: Unable to run change set callout - PCC2110013E  You do not have the role to browse the document detailed description

     

    I don't know where this came from.

    These are my environment for using jenkins-dimension.

    Please help me.

     

    . Dimension 14.3

    . Dimension Plugin 0.8.13

    . Jenkins 1.642

     

     

     

     

    1. Hi Jay, The user account that the Jenkins Plugin is using to connect to Dimensions CM doesn't have permission to fetch the detailed description of a request from Dimensions. However, the Plugin code that generates the build's change log in Jenkins tries to fetch the related requests' Titles, IDs and Detailed Descriptions. I may revisit this as we only really use the Title and ID in the change log.

      So, if you are connecting to Dimensions CM with a user account named "jenkinsbuild" (for example), then you need to give that account the ability to browse requests (depending on versions of the server and client libraries, you may also need to give that account the ability to update a request's detailed description).

      These privileges are Product > Request > Browse in Admin Console (REQUEST_BROWSE from command-line) or Product > Request > Add/Update Detailed Description in Admin Console (REQUEST_DETAILDESC from command-line). The best way of assigning this privilege is likely to be to add the "jenkinsbuild" account to a group or role, rather than directly assigning the privilege, but this will depend on your process model.

      Hope this helps - Cheers, David.

  35. I am trying to use Parameterized Builds such that I want to pass a Variable number to the Jenkins build and tag a baseline with a dynamically created name including this version number. If I try and do this to dynamically find the Project Name, I address this as ${ver_num} and have no issue. However, if I try this with the "Baseline Name Template", the variable seems to be disregarded, and the baseline is named with the literal string "${ver_num} Baseline. Am I not addressing it correctly? If that's not the case, is there an intent to support this?

    Thank you

    1. Hi Kyle, currently the plugin code only expands build variables (with the "${build-variable}" syntax) in the project name. The baseline name uses an older scheme (implemented before I took over the maintenance of the plugin) where certain symbols (not build variables) in square brackets are expanded. For example:

      • "[PROJECTID]" in the baseline name will be substituted for the project ID (project name without product name),

      • "[BUILDNO]" in the baseline name will be substituted for the Jenkins build number.
      • "[DM_BASELINE]" in the baseline name will be substituted for the build variable "${DM_BASELINE}" (actually for the ID of that baseline)

      This is a non-standard syntax and non-standard symbol names. Adding the standard build variable syntax mustn't break this older scheme because customers are currently using it), so it is not as easy to add as you might think - however, I will look into how they might work together.

      In the short term, you might look at setting the DM_BASELINE build variable (for example, to value "QLARIUS:MYBL_47") and using "[DM_BASELINE]" as the baseline name? Or using "MYBL_[BUILDNO]" as the baseline name might satisfy your use-case if ver_num just needs to be a unique number?

      Hope this helps - Cheers, David.

  36. Hi. I'd like to ask one about a warning message which says

    [DIMENSIONS] Warning: File 'D:\xxxx\ci\jobs\nnnnnn\nnnnnn\nnnn\src\main\nnn\environment.xml' cannot be overwritten using an item with a different Item Id, skipping update

     

    Actually,

    where first fetching out source file from dimension repo, there was no waring message.

    But, before fetching out the source file(version 1.0) from Dimension repo, developer deleted the source file(version 1.0) and committed again with the source file.

     

    In this case,

    I guess that message shows up since meta information in my workspace(jenkins) still has deleted source file's meta information and this cause confliction between new one and old one.

     

    How can I handle this??

     

    #my env

    . Dimension Plugin 0.8.13

    . Jenkins 1.642

    with
    표기
    wa
    전치사
    with
    ,
    withal
    으로
    as
    ,
    with
    ,
    by
    with
    ...와 함께
    with
    ,
    withal
    이므로
    as
    ,
    because of
    ,
    for
    ...의 일원으로서
    with
    ,
    withal
    ...을 나타내어
    for
    ,
    withal
    ,
    with
    ...의 몸에 지니고
    with
    ,
    withal
    ...을 가지고 있는
    with
    ,
    withal
    ...을 가지고
    with
    ,
    withal
    ,
    con
    ...의 탓으로
    with
    ,
    withal
    ...을 합쳐서
    with
    ,
    withal
    ...을 사용하여
    out of
    ,
    with
    ,
    withal
    ...을 상대로
    with
    ,
    withal
    ...에 대해서
    with
    ,
    for
    ,
    withal
    ...에 관해서
    regarding
    ,
    with regard to
    ,
    with reference to
    ...에 관하여
    concerning
    ,
    with a view to
    ,
    as to
    ...에 대하여
    toward
    ,
    contra
    ,
    to
    ...에 찬성하여
    in favor of
    ,
    with
    ,
    withal
    전문가 번역
    • 상용구에 추가
      • 다음 단어목록이 없음:영어 -> 한국어...
      • 새 단어목록 만들기...
    • 복사
    1. Hi Jay,

      It sounds like a developer has deleted and recreated a file with the same filename, but a different item ID, and this is causing the Jenkins Dimensions CM Plugin to fail when updating the sources (can happen with some older versions of Dimensions CM)? If so, then selecting the "Clear the contents of the workspace" checkbox on the job configuration for the Jenkins Dimensions CM Plugin will cause a clean build that should resolve this. Let me know if it does not. You can unselect it again if you want, but leaving it unselected means that this kind of issue will never cause a problem for you (although your builds will take a little longer).

      Hope this helps. Best wishes - David.

      1. Hi David

         

        I wonder if "Overwrite any locally modified files in workspace " option can be used for the same purpose as well.

         

        I clear the problem with that option.