Viewtier Parabuild 3.2

Administrator's Manual


Table of Contents

Preface
1. About This Manual
2. Audience
3. Technical Support
1. Build Statuses Page
1.1. List View Mode
1.2. Detailed View Mode
1.3. Build Control Commands
2. System Configuration
2.1. General System Settings
2.1.1. E-Mail Settings
2.1.2. Appearance Settings
2.1.3. Stability Settings
2.2. Projects
2.2.1. Adding A Project
2.2.2. Editing A Project
2.2.3. Deleting A Project
2.3. Display Groups
2.3.1. Adding A Display Group
2.3.2. Editing A Display Group
2.3.3. Deleting A Display Group
2.3.4. Built-In Display Groups
2.4. Instant Messaging Settings
2.4.1. Jabber Configuration
2.5. Entering Parabuild Licenses
2.6. Configuring LDAP Authentication
2.6.1. Connection URL
2.6.2. Connection Principal And Connection Credentials
2.6.3. Connection Security Level
2.6.4. Processing Referrals
2.6.5. User Distinguished Name Template
2.6.6. User Search Template
2.6.7. Base Element For User Searches
2.6.8. Search Entire Subtree
2.6.9. User Password Attribute Name
2.6.10. Credentials Digest Algorithm
2.6.11. User E-Mail Attribute Name
2.6.12. Add First-Time Users To Group
2.6.13. Testing LDAP Configuration
2.6.14. Integrating With Active Directory
3. Configuring a Build
3.1. Overview
3.2. General Settings Form
3.3. Naming A Build
3.4. Selecting Build Type
3.4.1. Automatic Builds
3.4.2. Scheduled Builds
3.4.3. Manual Builds
3.4.4. Parallel Builds
3.5. Selecting Build Results Access
3.6. Detailed Build Configuration
3.6.1. Adding Build Steps
3.6.2. Common Version Control Settings
3.6.3. Configuring ClearCase Access
3.6.4. Configuring CVS Access
3.6.5. Configuring Watching For File System Changes
3.6.6. Configuring Generic Version Control System Access
3.6.7. Configuring MKS Access
3.6.8. Configuring Perforce Access
3.6.9. Configuring Serena Version Manager (PVCS) Access
3.6.10. Configuring StarTeam Access
3.6.11. Configuring Subversion Access
3.6.12. Configuring Surround Access
3.6.13. Configuring Vault Access
3.6.14. Configuring Visual SourceSafe Access
3.6.15. Configuring Build Schedule
3.6.16. Configuring Build Labeling
3.7. Notification Settings Tab
3.7.1. Setting Notification Policy
3.7.2. Mapping Names of Users of a Version Control System to E-mail
3.7.3. Using E-mails Provided by Version Control System
3.7.4. Setting Default E-mail Domain
3.7.5. Notifying Other Users
3.8. Understanding Relative Paths
3.9. Build Logs Tab
3.9.1. Setting Up Build Logs Compression
3.9.2. Adding Custom Logs
3.9.3. Adding a Single Text File Log
3.9.4. Adding a Directory with Text File Logs
3.9.5. Adding a Single HTML File Log
3.9.6. Adding a HTML Directory Log
3.10. Build Results Tab
3.10.1. Setting Up Automatic Deleting Of Build Results
3.10.2. Configuring Single File Result
3.10.3. Configuring Directory Result
3.10.4. Configuring An External URL Result
3.10.5. Accessing Externally Stored Build Results
3.10.6. Debugging Build Result Path
3.11. Release Notes Tab
3.11.1. Linking Release Notes And Changes
3.11.2. Retrieving Release Notes From Bugzilla
3.12. Parameters Tab
3.12.1. Version Counter
3.12.2. Parameters
4. Managing Build Results
4.1. Managing Build Result Groups
4.1.1. Adding A Build Result Group
4.1.2. Editing A Build Result Group
4.1.3. Deleting A Build Result Group
4.2. Publishing Build Results
5. Managing Users And Groups
5.1. Simplified Security Mode
5.2. Adding a User
5.2.1. Login Name
5.2.2. Full Name
5.2.3. Login Password
5.2.4. Retype Password
5.2.5. E-Mail
5.2.6. Instant Messaging
5.2.7. Instant Messaging Address
5.2.8. Notify About
5.2.9. Accessibility
5.2.10. User Belongs to Group(s)
5.3. Modifying a User
5.4. Deleting a User
5.5. Adding a Group
5.5.1. Group Name
5.5.2. Group Description
5.5.3. Allowed to Access Builds
5.5.4. Rights
5.6. Modifying a Group
5.7. Deleting a Group
6. Remote Builds
6.1. Startup Procedure For Build Manager and Remote Builders
6.2. Shutdown Procedure For Build Manager and Remote Builders
6.3. Shutdown Procedure For Remote Builders
7. Build Script Environment Variables
7.1. PARABUILD_BUILD_DATE
7.2. PARABUILD_BUILD_DIR
7.3. PARABUILD_BUILD_NAME
7.4. PARABUILD_BUILD_NUMBER
7.5. PARABUILD_BUILD_RUN_ID
7.6. PARABUILD_BUILD_STARTED_BY_USER
7.7. PARABUILD_BUILD_TIMESTAMP
7.8. PARABUILD_CHANGE_LIST_NUMBER
7.9. PARABUILD_CLEAN_CHECKOUT
7.10. PARABUILD_CHECKOUT_DIR
7.11. PARABUILD_PREVIOUS_CHANGE_LIST_NUMBER
7.12. PARABUILD_PREVIOUS_CHANGE_LIST_DATETIME
7.13. PARABUILD_STEP_NAME
7.14. PARABUILD_VERSION
7.15. PARABUILD_SEQUENCE_NUMBER
7.16. Environment Variables For Perforce Builds
7.16.1. PARABUILD_P4CLIENT
7.16.2. PARABUILD_P4PASSWD
7.16.3. PARABUILD_P4PORT
7.16.4. PARABUILD_P4USER
7.17. Environment Variables For CVS Builds
7.17.1. PARABUILD_CVS_ROOT
7.17.2. PARABUILD_CVS_BRANCH
7.18. Environment Variables For Parallel Builds
7.18.1. PARABUILD_LEADING_BUILD_ID
7.18.2. PARABUILD_LEADING_BUILD_NAME
7.18.3. PARABUILD_LEADING_BUILD_RUN_ID
8. Managing Builds
8.1. Runtime Commands
8.1.1. Stop Command
8.1.2. Resume Command
8.1.3. Start Command
8.1.4. Deactivate Command
8.1.5. Activate Command
8.1.6. Clean Checkout Command
8.1.7. Re-Run Command
8.2. Configuration Commands
8.2.1. Edit Command
8.2.2. Copy Command
8.2.3. Delete Command
8.3. Miscellaneous Commands
8.3.1. Diff Command
8.4. Maintenance Commands
8.4.1. Cleanup Logs Command
8.4.2. Cleanup Results Command
9. Starting And Stopping Parabuild Service Under Windows
9.1. Starting Parabuild Service
9.2. Stopping Parabuild Service
9.3. Changing Parabuild Service User Under Windows
9.4. Embedding Build Status Into Web Pages
10. Backing Up Parabuild Installation
11. Build Server Security Implications
Glossary

List of Examples

2.1. LDAP Connection URL
2.2. LDAP User Distinguished Name Template
2.3. LDAP User Search Template
2.4. LDAP User Search Template
3.1. Composing Build Name
3.2. Path To cleartool Executable
3.3. Snapshot View Config Spec
3.4. CVS root for pserver authentication
3.5. Single line CVS repository path
3.6. Multi-line CVS repository path
3.7. Path to CVS executable field
3.8. Connecting to CVS using SSH As Remote Shell Under Unix
3.9. The Most Commonly Used Forms Of ViewVC URLs
3.10. The Most Commonly Used Forms Of FishEye URLs
3.11. Path to P4 executable field
3.12. P4 port field
3.13. Single-line P4 Client View
3.14. Multi-path P4 Client View
3.15. Advanced Mode Client View And Relative Build Directory
3.16. Path to sscm Executable
3.17. PVCS Project
3.18. Multi-path PVCS Project
3.19. Path to Subversion Executable Field
3.20. Subversion URL Field Using HTTP Protocol
3.21. Subversion URL Field using svn Protocol
3.22. Single Line Subversion Repository Path
3.23. Multi-path Subversion Repository Path
3.24. Non-Recursive Subversion Repository Path
3.25. The Most Commonly Used Forms Of ViewVC URLs
3.26. The Most Commonly Used Forms Of FishEye URLs
3.27. Path to sscm Executable
3.28. Surround Repository
3.29. Vault Repository Path
3.30. Vault Repository Path For Multi-path Vault Project
3.31. VSS database path
3.32. VSS Project Path
3.33. Multi-path VSS Project
3.34. Path to VSS Client
3.35. Path to VSS Client With Spaces In It
3.36. Composing Build Label Template
3.37. Composing an e-mail address from user name and default e-mail domain
3.38. Bugzilla Bug URL Template
9.1. Embedding Build Status Into Web Pages
9.2. Using Parameters To Alter Appearance Of Embedded Build Status Box

Preface

1. About This Manual

This manual is for Parabuild users or administrators responsible for administrative tasks such as creating and maintaining build configuration, managing remote servers, and administering user and group accounts.

Viewtier Parabuild (Parabuild) is an automated multi-platform software build management server. Parabuild provides continuous integration builds, scheduled and manual builds. Automatic builds are fired upon every check-in or a group of check-ins into a project source line. Scheduled builds are fired at a configured time. Manual build are fired upon a build manager's request.

2. Audience

This guide is intended for anyone who is responsible for administration of a Parabuild server or a remote builder on a computer running a supported version of Microsoft Windows, Linux or Unix. It assumes a basic knowledge of corresponding operating systems and their conventions.

3. Technical Support

If you have any problems with the software or documentation, please contact Viewtier Technical Support via online support forums, electronic mail, fax, or as described below. For information regarding other support information, click the Support link on the Viewtier Web site at www.viewtier.com.

Chapter 1. Build Statuses Page

Build statuses page shows the configured builds and their current statuses. This page refreshes automatically every thirty seconds. The content of the page depends on the “page view” mode. There are two view modes: list view and detailed view. To switch between the two modes click "List view" or "Detailed view" links, respectively. The differences between the modes are described below.

Build statuses page shows the configured builds and their current statuses. This page refreshes automatically every thirty seconds. The content of the page depends on the “page view” mode. There are two view modes: list view and detailed view. To switch between the two modes click "List view" or "Detailed view" links, respectively. The differences between the modes are described below.

1.1. List View Mode

This mode allows you to see the overview of all build statuses on a single page. It is suitable for ongoing surveillance of build statuses. When in the list view mode, the build statuses page shows a table with a list of builds and their current statuses (waiting, building e.t.c.) and a link to a page with the last build result, if it exists. The link is in red if the last build failed or in green if the last build was successful. The caption of the link shows the last build number and time. Control commands for each build are available only if the user has logged in as an administrator.

1.2. Detailed View Mode

This mode allows you to monitor the detailed status of a selected build. In the detailed view mode the page is split into two parts. On the left side there is a vertical navigation bar that allows you to select a particular build to view. The right side of the page contains detailed information about the current build status including:

  • Build name with the current build status.

  • Currently running build steps.

  • Links to the last build result including build logs, error quotes, and changes in the last build, such as build history, and date and time thereof.

  • Link to the last clean build, if it exists.

  • List of changes in the currently running build (or changes in the last build if the build is not running).

1.3. Build Control Commands

If a user logged in as an administrator, the build statuses page shows a list of build control commands. The following commands are available:

Start

This command starts the build if the build is idle.

Stop

This command forcefully stops the build if the build is running.

Activate

All builds are originally inactive. Use this command to activate a new build.

Edit

This command opens the build configuration page.

Add build

This command opens a new build configuration page.

Chapter 2. System Configuration

2.1. General System Settings

Parabuild server provides a set of system-wide configuration parameters. Parabuild will request you to fill the mandatory settings before builds can be created. These settings include:

  • Build administrator name

  • Build administrator e-mail

  • SMTP server

  • Build manager host

  • Date format

  • Date and time format

  • Default build status refresh rate

  • Administrator's password

In order to enter the mandatory system settings or modify optional settings, login to Parabuild as admin and select "System configuration" link on the top navigation bar. The system configuration page shows a list of links for editing system and instant messaging settings, and security. To edit general system settings, select "General Settings Link". After a system settings window shows up, edit the settings and press "Save" button. If modifications are correct, a message saying that the system configuration has been saved successfully will be displayed. The meaning of each system setting is discussed below.

2.1.1. E-Mail Settings

2.1.1.1. Build Administrator Name

Build administrator name is used for specifying a name for the e-mail notifications that Parabuild will send. The default value for this setting is "Build Administrator". This is a mandatory setting.

2.1.1.2. Build Administrator E-mail Address

Parabuild uses Build administrator e-mail setting to compose an e-mail part of a build result notification message. Parabuild will also use this e-mail to report exceptional conditions. The Build administrator e-mail should be a valid e-mail. This is a mandatory setting.

2.1.1.3. Default E-mail Domain

Parabuild uses a default e-mail domain to compose notification e-mails regarding the build results from the names of users in your version control system. If the default e-mail domain is set and the version control user name is not explicitly mapped to an e-mail through the notification settings of a particular build configuration, Parabuild will compose an e-mail by per-pending a name of the user with "@" followed by the default e-mail domain. For instance, if the version control user name were "john," and the default domain were mycompany.com, the resulting e-mail would be john@mycompany.com. Default e-mail domain is an optional setting.

2.1.1.4. SMTP Server

SMTP server setting is a DNS name of an SMTP server Parabuild uses to send notification e-mails. This is a mandatory setting.

2.1.1.5. SMTP Server Port

SMTP server port allows to set a port number the SMTP server listens on. This is a mandatory setting. A default value is port number 25.

2.1.1.6. SMTP Login Name

Enter an SMTP login name if your SMTP server requires explicit login.

2.1.1.7. SMTP Server Password

Enter an SMTP server password if your SMTP server requires explicit login.

2.1.1.8. Include Links To Results Into Messages

Parabuild supports including links to results into e-mail messages that Parabuild sends when a build step finishes. To enable including links to results, check box "Include links to results into messages". By default including links to results into e-mail messages is disabled.

2.1.1.9. System Messages Prefix

Content of this field will be added to subject lines of all system messages sent by Parabuild. The system message prefix can be used for easy filtering of system messages.

2.1.1.10. Message Subject Templates

Parabuild provides an ability to configure the content of the subject lines for messages that are sent when a build step starts and finishes through templates.

2.1.1.10.1. Build Step Started

This field may contain a template for a subject line of a message that Parabuild sends when a build step is started. The following template parameters are supported: build.name, build.number, build.host and build.step. The default template is ${build.step} for ${build.name} (#${build.number}) started on ${build.host}.

2.1.1.10.2. Build Step Finished

This field may contain a template for a subject line of a message that Parabuild sends when a build step finishes. The following template parameters are supported: build.name, build.number, build.host, build.step, result.string, and result.description. The default template is ${build.step} for ${build.name} (#${build.number}) on ${build.host} ${result.string}: ${result.description}.

2.1.1.10.3. Email Message Priority

Parabuild allows setting the priority of e-mail messages that Parabuild sends when a build is broken or critical system errors occur. The priority can be set to either "Normal" or "High" using drop-down lists "Failed builds" and "System errors"

2.1.2. Appearance Settings

2.1.2.1. Build Manager Host

Parabuild uses value entered in the "Build manager host" to form a URL used in e-mail and instant messages. This value overrides default host name detection.

If this field is left blank Parabuild will try to detect the host name it runs on automatically. If the host name cannot be detected Parabuild will use numeric IP address.

2.1.2.2. Generated URL Protocol

Parabuild uses value entered in the "Generated URL protocol" to form the protocol part of a URL used in e-mail and instant messages.

2.1.2.3. Date Format

Parabuild uses Date format to present dates on various screens and in notification messages. Select a format that is appropriate for your country. The following formats are available through a drop-down menu on "General system settings" screen. Consider a date of December 24th, 2003:

  • MM/dd/yyyy format will render to 12/24/2003

  • dd/MM/yyyy format will render to 24/12/2003

  • dd-MM-yyyy format will render to 24-12-2003

  • dd MMM yyyy format will render to 24 Dec 2003

  • MMM dd yyyy format will render to Dec 24 2003

2.1.2.4. Date And Time Format

Parabuild uses Date and time format to present times on various screens and in notification messages. Select a format that is appropriate for your country. The following formats are available through a drop-down menu on "General system settings" screen. Consider a date and time of December 24th, 2003, 12:00 PM:

  • "MM/dd/yyyy hh:mm a" format will render to 12/24/2003 12:00 pm

  • "hh:mm a MM/dd/yyyy" format will render to 12:00 pm 12/24/2003

  • "dd/MM/yyyy HH:mm" format will render to 24/12/2003 24:00

  • "HH:mm dd-MM-yyyy" format will render to 24:00 24-12-2003

2.1.2.5. Default Build Status Refresh Rate

This setting defines the default rate for automatic refresh of build status pages. The refresh rate is set in seconds and applied to all anonymous users and to users who have not set the refresh rate in their personal preferences.

2.1.2.6. Output Encoding

Output encoding can be used in multi-lingual environments to set encoding of pages and e-mail messages produced by Parabuild. For instance, if Parabuild runs under an operating system that uses Cyrillic locale, this field can be set to Cp1251 to allow Parabuild to present descriptions of change lists properly.

2.1.2.7. Change List Description Quote

This field contains maximum length of a change list description that will be used in notification messages sent by Parabuild.

2.1.2.8. Error Line Quote Length

When a build step fails, Parabuild will send a notification message. Subject line of the message may include a error line from the main build log that was used by Parabuild to make a decision about the build failure. It is possible that the line is long so that it is inconvenient to use it, for example, when responding to the message. Error line quote length defines a number of characters to that Parabuild will truncate the quoted error line. The default value is 60 characters. Setting this value to zero will disable quoting error line in the subject line of the message. This is an optional parameter.

2.1.2.9. Error Log Quote Size

When a build step fails, Parabuild will send a notification message. It will include lines from a build log at and around a line matching the build failure pattern. This allows for a quick view at the build failure line and preceding lines so it is possible to find a source of the error from the notification message without looking into the whole build log. Error log quote size defines a number of lines of the build log that will be included in the notification message. The optimal value depends on your project build script and should be identified experimentally. The default value is 50 lines. Setting this value to zero will disable quoting log lines in the build failure notification message. This is an optional parameter.

2.1.2.10. Branding

Branding is a title that Parabuild shows at every page header. Use it to display your company name, your department name or whatever you feel is appropriate. For example, if your company name is "MyCompany," you may want to change the branding setting to "MyCompany Build Server". If not set, "Viewtier Parabuild 2.0" will be displayed. This is an optional parameter.

2.1.2.11. Show Link To Projects

Check this box to enable displaying a link to projects on the top navigation bar. The default is not to show the link to projects. The project list is also available through Administration menu.

2.1.2.12. Show RSS Links

Check this box to enable displaying links to RSS feeds containing information about build status changes.

2.1.2.13. Enable Advanced Settings

By default Parabuild uses a simplified configuration mode. The simplified mode hides advanced configuration items in order to reduce complexity of the user interface. Check this box if advanced build configuration is required. Following chapters explicitly mention if a particular item requires advanced configuration.

2.1.2.14. Show Parallel Builds in List View

By default Parabuild includes parallel builds into the list view of build statuses. Unchecking this box hides excludes parallel builds from the list view. The helps reduce clutter on the screen and simplify monitoring. Parallel builds are always shown on the detailed status view page along with their leader build. Parabuild uses indentation to mark parallel builds on the detailed view page.

2.1.2.15. Allow Anonymous Access To Protected Feeds

By default Parabuild protects access to build statuses through RSS feeds and Windows tray client. Check this box to allow anonymous users unrestricted access to build statuses through RSS feeds and Windows tray client.

2.1.2.1. Security Settings

2.1.2.1.1. Allow Anonymous Users

Check this box to allow anonymous users accessing build statuses through web user interface. Built-in security group "Anonymous" allows to configure what builds can be accessed by anonymous users.

Important

To secure your Parabuild installation, change the default password immediately after completing installation and starting Parabuild for the first time.

To change the admin password, enter a new password and re-type it in the "Confirm password" entry field.

2.1.2.1.2. Hide Change List Descriptions

Check this box to hide descriptions of change lists from anonymous users.

2.1.3. Stability Settings

2.1.3.1. Schedule Gap

Schedule gap defines a system-wide interval when Parabuild will not try to access a version control system or to launch a build. This feature can be used to define time intervals when a scheduled back up is performed on the version control system.

2.1.3.2. Default Version Control Timeout

Default version control timeout defines a system-wide timeout in minutes for executable commands that Parabuild uses to access version control systems. A command will be terminated and Parabuild administrator will receive a warning message if execution time for a version control client exceeds this timeout.

2.1.3.3. Default Build Step Timeout

Parabuild uses default build step timeout when you create new build steps through the user interface.

2.1.3.4. Maximum Change List Size

Maximum change list size defines how many files per change list will be recorded. The default value is 500 files per change list.

2.1.3.5. Initial Number Of Change Lists

Initial number of change lists defines how many change lists may be retrieved from a version control system for the first build run. The default value is 1 change list.

2.1.3.6. Maximum Number Of Change Lists

Maximum number of change lists defines how many changes lists may be retrieved from a version control system between two builds. By default this field is not set which means that the number is unlimited.

2.1.3.7. Maximum Cool Down Attempts

Maximum cool down attempts define number of times Parabuild will try to wait for quiet in a code base being watched for changes. Parabuild considers this setting only if a cool down period set for a build configuration.

2.1.3.8. Minimum Build Results Retention

Minimum build results retention defines minimum number of days Parabuild will allow to enter in the build configuration field for automatic deletion of old build results. This value serves as a safety guard preventing accidental deleting of archived build results by entering too short expiration intervals.

2.1.3.9. Enable Debug Logging

Check this box to enable debug logging. Parabuild will send debug output to a file named parabuid_debug.log under logs directory if debug logging is enabled. Debug logs may be useful when communicating with Viewtier support. During normal operation debug logging should be disabled.

2.2. Projects

To manage projects select link "Projects" in "System settings" section of the system configuration. Parabuild will display a list of projects and corresponding controls.

2.2.1. Adding A Project

To add a project click on link "Add new project". An entry form for a new project will appear. Fill fields "Project name", "Project key" and "Project description". Click on "Save" button to save the new project. Click on "Cancel" button to discard the edits.

2.2.2. Editing A Project

To edit a project click on link "Edit" for the selected project. An entry form for the selected project will appear. Modify fields "Project name", "Project key" and "Project description". Click on "Save" button to save the changes in this project. Click on "Cancel" button to discard the edits.

2.2.3. Deleting A Project

To delete a project click on link "Delete" for the selected project. After receiving a confirmation Parabuild will delete the project and the associated users, groups and build configurations.

2.3. Display Groups

As number of build configurations managed by Parabuild grows it may become inconvenient to monitor and to control the significant number of builds while they are all presented on a single build status page. Parabuild provides a convenient way to limit number of build shown on the build status pages. This is done by using display groups. A display group is a list of builds grouped together under a group name.

Once the display groups are configured they are available for selection in the right top corner of build status pages

To manage display groups select link "Display Groups" in "System settings" section of the system configuration. Parabuild will display a list of display groups and corresponding controls.

2.3.1. Adding A Display Group

To add a display group click on link "Add new display group". An entry form for the new display group will appear. Fill fields "Display group name" and "Display group description". Check boxes for build configurations that should be included in this display group. Click on "Save" button to save the new display group. Click on "Cancel" button to discard the edits.

2.3.2. Editing A Display Group

To edit a display group click on link "Edit" for the selected display group. An entry form for the selected display group will appear. Modify fields "Display group name" and "Display group description". Check boxes for build configurations that you would like to be included in this display group. Click on "Save" button to save the changes in this display group. Click on "Cancel" button to discard the edits.

2.3.3. Deleting A Display Group

To delete a display group click on link "Delete" for the selected display group. After receiving a confirmation Parabuild will delete the display group.

2.3.4. Built-In Display Groups

Parabuild provides built-in display groups.

2.3.4.1. Displaying Broken Builds Only

Often a build administrator is mostly concerned about broken builds only. Parabuild provides a built-in display group that is appears as "BROKEN" in the group selection list. If this group is selected Parabuild will show only broken builds on the build status pages. This allows a build administrator to spot broken builds quickly.

2.4. Instant Messaging Settings

Parabuild supports sending notifications about build results using instant messaging. Parabuild can also send system errors notification to build administrators. Parabuild accesses the following instant messaging systems:

  • Jabber (XMPP)

In order to enter or modify the instant messaging settings, login to Parabuild as admin and select "Administration" link on the top navigation bar. The system configuration page shows a list of system configuration links. To edit instant messaging settings, select "Instant Messaging Settings" link. After a instant messaging settings window shows up, edit the settings and press "Save" button. The meaning of each instant messaging setting is discussed below.

2.4.1. Jabber Configuration

Use the "Jabber Configuration" group to enter settings for a Jabber server. Parabuild will use these setting to send instant messages about build results and system notifications.

Parabuild uses user's e-mail address to find an instant messaging address of a user. When Parabuild is ready to send a message, it will use user's e-mail address to look up a user in the list of Parabuild users. If a user is found and instant messaging is enabled for the user, Parabuild will send the message.

Note

To enable sending instant messages to a user, a user should be entered into the list of Parabuild users as described in User Management section, and user's e-mail address should be matched user's name used to access version control system for a build. The match is configured under the "Notification" tab for a particular build configuration.

The following settings are available to configure access to a Jabber server. All these settings are mandatory:

  • "Jabber server address" is a DNS name of the Jabber server.

  • "Jabber server port" is a port number used to access the jabber server with the configured server address. The default port number is 5222.

  • "Jabber login name" is a name used to log in into the Jabber server. This is a name part of an instant messaging address.

  • "Jabber password" is a password used to log in into the Jabber server.

  • Check box "Send if no presence" if Parabuild should send a message even if presence of Jabber client cannot be confirmed.

To disable Jabber instant messaging, check "Disabled" check box.

2.5. Entering Parabuild Licenses

You receive a license file after ordering Parabuild. In order to install your Parabuild license login to Parabuild as admin and select "Administration" link on the top navigation bar. The system configuration page shows a list of links. To install Parabuild licenses system settings, select "Parabuild licenses" link. After a license window shows up, copy into clipboard the content of the license file and paste it into the license entry field. To save the changes click on "Save" button. If modifications are correct, a message saying that the license has been saved successfully will be displayed.

Note

To obtain an evaluation license, please visit http://www.viewtier.com/downloads.htm.

2.6. Configuring LDAP Authentication

Parabuild supports authentication of its users through LDAP. To enable authentication through LDAP go to system configuration at "LDAP" and check box "Enable LDAP authentication".

The following entry fields are available to configure access to LDAP:

  • Connection URL

  • Connection principal

  • Connection credentials

  • Connection security level

  • User distinguished name template

  • User search template

  • Base element for user searches

  • Search entire subtree

  • User password attribute name

  • Credentials digest algorithm

  • User e-mail attribute name

  • Add first-time users to group

Meaning of each fields is discussed below.

2.6.1. Connection URL

Connection URL defines Parabuild's connection to the directory. The format of the URL is defined by the JNDI provider. This URL specifies the DNS name or the IP address of the directory server. You may also specify server port number and distinguished name (DN) of the root naming context. The default port number is 389.

Example 2.1. LDAP Connection URL

ldap://ldapserver:389

2.6.2. Connection Principal And Connection Credentials

If necessary Parabuild authenticates itself to the directory with the user name and password specified by the Connection Principal and Connection Credentials. Often the anonymous connection is sufficient and these properties don't have to be set.

2.6.3. Connection Security Level

This field specifies the security level to use. Its value is one of the following strings: "none", "simple", "strong". If this field is not set, the behaviour is determined by the directory service provider. The default value is "simple".

2.6.4. Processing Referrals

This field that holds the value that specifies how referrals encountered by the service provider are to be processed. It can be one of the following strings: "follow" - follow referrals automatically; "ignore" - ignore referrals; "throw" - throw an exception when a referral is encountered. If this field is set to "Default", the default is determined by the provider.

2.6.5. User Distinguished Name Template

Parabuild supports selecting user's entry in the directory by using a template for the distinguished name (DN) of the user's directory entry. This is a recommend approach. The ${user.id} template field should be used to mark where the actual user name should inserted. Multiple lookup locations can be entered by separating each location with parentheses. Use this setting when the DN contains the user name and is the same for all users.

Example 2.2. LDAP User Distinguished Name Template

uid=${user.id},ou=Test Organizational Unit,dc=test,dc=com

2.6.6. User Search Template

As alternative to using a DN template, Parabuild supports searching unique user's entry in the directory by using a template for the LDAP search filter. The ${user.id} template field should be used to mark where the actual user name should inserted. The following example shows an LDAP filter for the case when user should enter her e-mail address to be authenticated.

Example 2.3. LDAP User Search Template

(mail=${user.id})

Parabuild will not authenticate a user if the LDAP filter returns multiple entries.

2.6.7. Base Element For User Searches

The base element for user searches may be used if user search is selected. If not specified, the top level element in the directory context will be used. The following example requests Parabuild to limit search to the context "ou=Test Organizational Unit,dc=test,dc=com"

Example 2.4. LDAP User Search Template

ou=Test Organizational Unit,dc=test,dc=com

Parabuild will not authenticate a user if the LDAP filter returns multiple entries.

2.6.8. Search Entire Subtree

Setting "Search entire subtree" may be used if user search is selected. Check this box if you want Parabuild to search the entire subtree of the element specified by the "Base Element For User Searches" field for the user's entry. If not checked (default) only the top level will be searched.

2.6.9. User Password Attribute Name

By default Parabuild authenticates a user by binding to the directory with the DN of the entry for the user and the password presented by the user. If binding succeeds the user is considered to be authenticated. The directory performs password digesting transparently. This mode is used if "User password attribute name" is not set. This is a recommended method.

If "User password attribute name" is set Parabuild will retrieve the stored password from the directory and compare it explicitly with the value provided by the user. This field should be set to the name of an attribute of the user's entry that contains the password.

2.6.10. Credentials Digest Algorithm

The selected credentials digest algorithm is used to digest clear text passwords. This field may be used in conjunction with using the user password attribute name and should be set to the algorithm used by your LDAP server. The supported digest algorithms are MD5 and SHA-1.

2.6.11. User E-Mail Attribute Name

This mandatory field should be set to the name of an attribute of the user's entry that contains user's e-mail address.

2.6.12. Add First-Time Users To Group

Parabuild will add to the selected Parabuild group users if they log to Parabuild first time.

2.6.13. Testing LDAP Configuration

Parabuild allows you to test created LDAP configuration. Fill the entry field "Test user name" and "Test password" with valid values and click on "Test" button. Parabuild will display a success message if the configuration is correct Parabuild will display a error message if the configuration is invalid or provided combination of the test user name and password does not exist.

2.6.14. Integrating With Active Directory

To successfully integrate with Active Directory please follow these instructions: Set the Connection Principal and Connection Credentials to a user and password in Active Directory. Set Processing Referrals to "follow". Set User Search Template to sAMAccountName=${user.id}. Select Search Entire Subtree.

Chapter 3. Configuring a Build

Table of Contents

3.1. Overview
3.2. General Settings Form
3.3. Naming A Build
3.4. Selecting Build Type
3.4.1. Automatic Builds
3.4.2. Scheduled Builds
3.4.3. Manual Builds
3.4.4. Parallel Builds
3.5. Selecting Build Results Access
3.6. Detailed Build Configuration
3.6.1. Adding Build Steps
3.6.2. Common Version Control Settings
3.6.3. Configuring ClearCase Access
3.6.4. Configuring CVS Access
3.6.5. Configuring Watching For File System Changes
3.6.6. Configuring Generic Version Control System Access
3.6.7. Configuring MKS Access
3.6.8. Configuring Perforce Access
3.6.9. Configuring Serena Version Manager (PVCS) Access
3.6.10. Configuring StarTeam Access
3.6.11. Configuring Subversion Access
3.6.12. Configuring Surround Access
3.6.13. Configuring Vault Access
3.6.14. Configuring Visual SourceSafe Access
3.6.15. Configuring Build Schedule
3.6.16. Configuring Build Labeling
3.7. Notification Settings Tab
3.7.1. Setting Notification Policy
3.7.2. Mapping Names of Users of a Version Control System to E-mail
3.7.3. Using E-mails Provided by Version Control System
3.7.4. Setting Default E-mail Domain
3.7.5. Notifying Other Users
3.8. Understanding Relative Paths
3.9. Build Logs Tab
3.9.1. Setting Up Build Logs Compression
3.9.2. Adding Custom Logs
3.9.3. Adding a Single Text File Log
3.9.4. Adding a Directory with Text File Logs
3.9.5. Adding a Single HTML File Log
3.9.6. Adding a HTML Directory Log
3.10. Build Results Tab
3.10.1. Setting Up Automatic Deleting Of Build Results
3.10.2. Configuring Single File Result
3.10.3. Configuring Directory Result
3.10.4. Configuring An External URL Result
3.10.5. Accessing Externally Stored Build Results
3.10.6. Debugging Build Result Path
3.11. Release Notes Tab
3.11.1. Linking Release Notes And Changes
3.11.2. Retrieving Release Notes From Bugzilla
3.12. Parameters Tab
3.12.1. Version Counter
3.12.2. Parameters

Note

Subsequent chapters will use "build configuration" and "build" interchangeably.

3.1. Overview

To add a new build configuration, follow these steps:

  1. Open a web browser of your preference and enter URL of your Parabuild server. If Parabuild ran on a host named "build", the URL would be "http://build:8080.

  2. Login in as "admin" user.

  3. Go to the list of builds by clicking "Builds" menu item on the top navigation bar.

  4. In the build list, select link "Add new build". A general build settings form will show up. Fill in general settings fields and click the "Continue" button.

  5. Detailed build configuration form will show up. Complete build configuration and click the "Save" button. Parabuild will save new build configuration and redirect you to the build statuses page.

Following sections discuss the process of configuring a build in detail.

3.2. General Settings Form

General build settings form is displayed when a new build added. It allows to set the general build configuration parameters. These parameters include:

  1. Build name.

  2. Build results access.

  3. Builder host name (optional).

  4. Version control.

  5. Runner type.

  6. Build type.

3.3. Naming A Build

Parabuild requires each build configuration to have a name. A build name should be short, simple, and self-explanatory. We recommend to apply the following simple rules when naming a build:

  • Initially, a build name should start with one of the following: a product name, a project code name or a project home directory name in a version control system.

  • Add to the build name a product version if there is one.

  • For scheduled builds use one of the following suffixes: "qa", "nightly" or "daily" to reflect the timed nature of the build.

    Example 3.1. Composing Build Name

    Consider a product named "MyProduct". The current version of the product is 2.3. Possible names for an automatic (integration) build for the product would be: "myprod_23", "myprd_23" and "myproduct_23". Name QA, nightly or daily builds accordingly: "myprod_23_qa" or "myprd_23_dayly".

Oftentimes, the name of a project or product is considerably long, so it may be rather convenient to shorten it when naming a build. For example, the project name "MyNewProject Version 2.0" could be shortened to "mnp_20".

We do not recommend using strictly generic names like "build", "qa", "nightly", etc. Even if you are currently developing a single product with no specific version, over time the product will have different versions, maintenance branches, and/or platforms. The build name will quickly become an internal brand, and therefore it is reasonable to name the build to reflect its association with a particular product or source line. Generic names are not suitable for this purpose.

3.4. Selecting Build Type

Parabuild offers three types of build configurations: automatic continuous integration builds, scheduled builds and manual builds. Automatic builds are fired upon every check-in or a series of check-ins into the version control system. Scheduled builds are fired at a configured time. Manual build are fired per a build manager's request. Once the build type is selected, it cannot be changed.

3.4.1. Automatic Builds

Automatic builds are also known as integration builds. Parabuild initiates an automatic build at every check-in (or a series of check-ins) into the version control system.

The main goal of an automatic build is to ensure that new changes to the project source line do not break it, and that the product can be built cleanly. If a product cannot be built cleanly, then the project source line is broken. In either case, Parabuild will send e-mail notifications about the results of each build.

Notifications about successful builds inform that the project source line is in a clean state and that the team members may perform the check-out to integrate into the new changes safely. Owners of changes that were built would know that their changes did not break the build.

Automatic builds are ideal for setting up Continuous Integration for your projects.

Important

Notifications about failed builds inform the owners of the changes that their changes possibly have broken the project source line. This gives them an opportunity to check-in the changes that fix the build immediately. Other members of the team then know that the project source line is broken, and that it is better not to check it out until the build is fixed.

3.4.2. Scheduled Builds

Parabuild runs scheduled builds at configured times. Scheduled builds can be used to run builds that are timed by their nature such as nightly, daily, or QA builds.

It is important that scheduled builds run cleanly. Stable QA builds allow for uninterrupted QA and testing process. Failed QA or nightly builds prevent the QA teams from doing their job. Parabuild ensures that scheduled builds run against the last known clean state of the product source line. An automatic integration build backs every scheduled build. Scheduled builds use source control settings of the referenced automatic builds.

Important

In order for a scheduled build to be created, an automatic (integration) build that backs it should be already configured.

3.4.3. Manual Builds

Manual builds do not have a schedule and run only when a build administrator requests it. Manual builds can be used to run builds to produce results from short-living patch branches.

3.4.4. Parallel Builds

Parabuild runs parallel builds simultaneously with a leading build. Parallel builds can be used to run builds that require parallel execution of multiple build configurations. Good examples of such builds are those requiring building and testing on multiple platforms. Parallel builds can be also used to deliver build acceleration.

If any of parallel builds fail Parabuild will mark a leading build run as failed. If the leading build run has a finalizer step, Parabuild will execute dependent builds fully before executing the finalizer step. This allows gathering and processing results from parallel builds in the finalizer step.

Parallel builds use version control settings of the referenced leading build. Select "Build reference" as a version control system when creating a parallel build.

Important

In order for a parallel build to be created, a leading build should be already configured.

3.5. Selecting Build Results Access

Parabuild allows you to set two types of access to the build results:

  • Public access - Build results are available for general access. Everybody will have access to the build results and will receive e-mail notifications according to security settings of the server.

  • Private access - Only the build administrator will have access to the build results and will receive build results notifications. Private access may be used to test new builds or to set up system builds that are visible only to the build administrator.

Note

New builds are created with private access. Build administrator can change this setting to public at any time. We recommend to test a new build to make sure it runs cleanly before making it public.

3.6. Detailed Build Configuration

Detailed build configuration is performed through various tabs.

"Version Control" and "Build configuration" tabs are used to configure mandatory build parameters including version control system, build steps, build schedule properties, and labeling.

"Notification settings" tab is used to configure various notification policies, to map e-mails to version control users and to set up build watchers.

Parabuild maintains an archive of logs available for viewing by the team, and an archive of build results, also known as build artifacts, that can be downloaded via Parabuild Web UI. "Build logs" and "Build results" tabs are used to configure locations of the logs and results accordingly.

3.6.1. Adding Build Steps

A build configuration must have at least one build step. Build steps are configured by modifying a build sequence table. Parabuild supports multi-step builds.

3.6.1.1. Build Sequence Table

The build sequence table holds definitions of build steps. To add a build step, click on the "Add row" link. Each row in the build sequence table consists of the following entry fields: "Step name", "Build commands", "Success patterns", "Failure patterns", "Respect error code" check box and "Step timeout". Meaning of each field is discussed below.

3.6.1.1.1. Step Name

Enter a name of the build step in this field. The step name should reflect nature of the build step. "BUILD", "TEST", "DEPLOY" are good examples. Each step name should be unique in the build configuration. "Step name" is a mandatory field.

3.6.1.1.2. Shell Commands

Enter shell commands that are used to perform the build step in this field. Parabuild will generate and execute a wrapper shell script that contains all commands entered in this field.

For example, if your project is built using NAnt under Windows, the build commands may look as following:

rem Display build environment variables
set
rem Run build
nant all.clean

Tip

Though Parabuild supports ad-hock build scripting using the "Shell commands" field, we recommend placing build scripts under control of a version control system if they take more than one line. This will allow keeping track of changes made to you build scripts.

"Shell commands" is a mandatory field.

3.6.1.1.3. Success Patterns

Enter step success patterns, one per line, in this field. Parabuild will try to find one of entered success patterns in the main build log to decide if the build step was successful. For example, for a build configuration using ANT tool, a success pattern would be "BUILD SUCCESSFUL".

Success patterns should be entered if "Respect error code" check box is not checked.

Success patterns are case sensitive.

Success patterns can be regular expressions. A regular expression should begin with '^' and end with '$'.

3.6.1.1.4. Failure Patterns

Enter step failure patterns, one per line, in this field. Parabuild will try to find one of entered failure patterns in the main build log to decide if the build step failed. For example, for a build configuration using ANT tool, a failure pattern would be "BUILD FAILED".

Failure patterns should be entered if "Respect error code" check box is not checked. Parabuild searches the build log for failure patterns before checking if success patterns are present. If neither failure nor success patterns are present, Parabuild considers the build step failed.

Failure patterns are case sensitive.

Failure patterns can be regular expressions. A regular expression should begin with '^' and end with '$'.

3.6.1.1.5. Respecting Error Code

If "Respect error code" check box is checked, Parabuild considers a build step failed if the build step commands return non-zero error code. Checking error code and searching the build log for failure patters have priority over searching for success patterns.

Tip

Use error code respecting if a build scripting tool used by your project cannot provide stable success and failure patterns.

3.6.1.1.6. Timeout

Enter a step timeout in minutes in this field. Parabuild will stop execution of the build step forcefully if elapsed build step time exceeds the timeout value.

"Timeout" is a mandatory field.

3.6.1.1.7. Continue If Failed

Sometimes it is necessary to continue running the build if a particular build step has filed. For instance, you Quality Control team may still want build results even if a step that runs automated unit tests failed. Check "Continue if failed" box if you'd like to continue running the build if the selected step failed

3.6.1.1.8. Disabled

Check "Disabled" box to temporarily disable this build step.

3.6.1.1.9. Initializer Step

Check "Initializer step" box to make this step an initializer step. The initializer step runs before any dependent parallel build runs.

3.6.1.1.10. Finalizer Step

Check "Finalizer step" box to make this step a finalizer step. The finalizer step always runs. It allows performing work upon completion of a build run without regard to success or failure of previous build steps. The finalizer step of a leading parallel build runs after completion of dependent parallel builds.

3.6.2. Common Version Control Settings

The following settings are available to all version systems:

  • Custom checkout directory

  • Ignore list

3.6.2.1. Custom Checkout Directory

This setting allows to overwrite the default checkout directory for the build. It can be either a fully qualified path such as /opt/build/my_build or a template. The template supports fields ${build.id} and {build.name}. Template example is /opt/builds/build_${build.id}.

Important

"Custom checkout directory" is an advanced setting. It should be used with caution and only if the default value is not suitable. This setting is available only when an advanced build configuration is enabled using the system settings page.

3.6.2.2. Ignore List

This setting may contain a list of paths for that changes in a version control system should be ignored. Changes in the files included into the ignore-list will not trigger the build. Parabuild compares this list against endings of fully qualified paths of changed files.

To use a regular expression, start the line with character "^" and end it with character "$". Regular expressions are applied to the whole change path.

Important

"Ignore list" is an advanced setting. This setting is available only when an advanced build configuration is enabled using the system settings page.

3.6.3. Configuring ClearCase Access

In order to access ClearCase, Parabuild should be installed on a box that has a working ClearCase client. Under Unix and Linux systems user "parabuild" and group "parabuild" should be allowed access to VOB explicitly.

To configure access to ClearCase LT version control system, fill in the following fields:

  • Path to cleartool executable

  • Snapshot view config spec

  • Branches

  • Relative build dir

  • Change window

The following fields are available only when advanced build settings are enabled via system settings:

  • View storage location (-stgloc)

  • View name template

  • Ignore error lines

The meaning of each field discussed below.

3.6.3.1. Path To cleartool Executable

Path to cleartool executable is a mandatory field. This field should be set to a fully qualified path to cleartool executable. The path should be wrapped in double quotes if it contains spaces.

Example 3.2. Path To cleartool Executable

Unix:

/opt/clearcase/bin/cleartool

Windows:

C:\Rational\ClearCase\bin\cleartool.exe

3.6.3.2. Snapshot View Config Spec

Snapshot view config spec is a mandatory field. Enter a config spec for a snapshot view that Parabuild will use to access your project code base. It should correspond the notation for ClearCase configuration specs for snapshot views. Please refer ClearCase documentation for detailed discussion of configuration specs.

Example 3.3. Snapshot View Config Spec

element * CHECKEDOUT element * /main/LATEST load \project_vob\3rdparties\lib load \project_vob\version20\myproj

3.6.3.3. Branch

Branch is an optional field. If this field is set, Parabuild will limit watching for changes to the given branch. This field allows entering multiple branch names. Use the following characters: space, comma or semicolon to separate one branch name from another.

3.6.3.4. Relative Build Dir

Parabuild should be provided a path to the build directory (project home). Parabuild will start build step scripts using this directory as a current directory. The relative build directory is a directory that is relative to a working directory provided by Parabuild. Using the example in the previous section, the relative build dir path could be project_vob\version20\myproj.

3.6.3.5. Change Window

Parabuild maintains synthetic change lists for ClearCase. The change list is a set of logically connected changes in multiple files. An example of a change list can be adding to ClearCase a C++ class and a supporting binary library that the class makes use of.

ClearCase itself does not support change lists. If a logically connected group of files is checked in, and the process takes longer than a minute, it is possible that Parabuild might detect the presence of changes before all files make it to the ClearCase repository and fire a build against an incomplete submission time stamp. To avoid this problem Parabuild uses "change window" for the advanced detection of the member files of a change list. The change window is the maximum time in seconds a check-in of a group of files may take.

Entering zero value in the change window field turns off the advanced detection of members of change lists that are taking a long time to process.

3.6.3.6. View Name Template

An optional field "View name template" may contain a custom template that Parabuild will use to compose a ClearCase view tag name. The template may include alphanumeric characters, characters "-" and "_". The template must include a template parameter ${build.id} and may include ${cc.user} parameter. ${build.id} parameter will be replaced with a unique build configuration ID during runtime. ${cc.user} parameter will be replaced with the name of a user account that runs Parabuild server.

If "View name template" is not filled, Parabuild will use a default value. The default value is "parabuild_${build.id}".

Important

"View name template" is an advanced setting. It should be used with caution and only if the default value is not suitable. This setting is available only when an advanced build configuration is enabled using the system settings page.

3.6.3.7. View Storage Location

An optional field "View Storage Location" may specify a name of a server storage location to hold the view storage directory or a path to the local view storage.

To enter server the name of the server storage location, select "-stgloc" from the view storage location drop down.

To enter the path to the local view storage, select "-vws" from the view storage location drop down list. Certain ClearCase configurations may require providing the path to the local view storage. Parabuild provides a template parameter ${build.id} that can be used as a path name space that uniquely defines the path to the local view storage for an integration build and for dependant scheduled builds. Example: \\ComputerName\ViewStorage\parabuild_${build.id}.vws

If not set, the server storage location is selected automatically by ClearCase. By default this field is not set.

Important

"View Storage Location" is an advanced setting. It should be used with caution and only if the default value is not suitable. This setting is available only when an advanced build configuration is enabled using the system settings page.

3.6.3.8. Ignore Error Lines

An optional field "Ignore error lines" may specify a list of strings that define what lines in standard error output should be ignored if they contain one of the strings.

Important

"Ignore error lines" is an advanced setting. This setting is available only when an advanced build configuration is enabled using the system settings page. It should be used with caution and only if the default value is not suitable.

3.6.4. Configuring CVS Access

To configure access to CVS, fill the following mandatory fields:

  • CVS Root

  • CVS Repository path

  • Path to CVS client executable

  • Change window

The following fields are optional:

  • CVS password

  • Path to external rsh

  • Branch name

  • Change pre-check

  • Fast change detection

  • Compression level

  • Repository browser

  • Custom Relative Build Directory

Meaning of each field discussed below.

3.6.4.1. CVS Root

CVS root is a mandatory field. The entry for this field should conform with the format for the CVS root.

Example 3.4. CVS root for pserver authentication

:pserver:my_user_name@192.168.1.2:/home/cvs/data/CVSroot

3.6.4.2. CVS Repository Path

Repository path is a mandatory field. It defines the location of the home of the project source line relative to the CVS root.

Example 3.5. Single line CVS repository path

mycompany/myproject20

Parabuild supports multiple path projects. For multiple path projects each path should be entered one per line.

Example 3.6. Multi-line CVS repository path

mycompany/myproject20/3rdparty/libs

All build scripts are executed with a project source line home as the current directory. The project source line home is the first line defined in the CVS repository path. For example, if the CVS repository path is mycompany/myproject20, and the build script is stored in mycompany/myproject20/make, the build command may look like

make all.clean

3.6.4.3. Path To CVS Client Executable

Path to CVS client executable is a mandatory field. This field should be set to a fully qualified path to a CVS client executable. The path should be wrapped in double quotes if it contains spaces.

Example 3.7. Path to CVS executable field

Unix:

/usr/bin/cvs

Windows:

C:\cvs\cvs.exe

3.6.4.4. CVS Password

CVS password is an optional field. If needed, enter a password that will be required to access CVS in this field.

3.6.4.5. Path To External rsh

This optional field defines a fully qualified path to a remote shell binary for usage. Usually this field is used to configure access to CVS via SSH.

3.6.4.6. Configuring Access To CVS Via SSH

Configuring access to CVS via SSH includes consists of generating public and private DSA keys and listing the generated public key at the CVS server. The following discussion assumes that Parabuild is installed on a Unix-like system and OpenSSH client is used. Please consult with the documentation for the corresponding SSH client if it is different from the above.

First, login to the server as user parabuild and ensure that the current directory is parabuild's home:

su - parabuild
cd ~

Generate public and private keys. When asked for passphrase, hit Enter (no passphrase):

ssh-keygen -t dsa

The typical console output produced by ssh-keygen is the following:

Generating public/private dsa key pair.
Enter file in which to save the key (/home/parabuild/.ssh/id_dsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/parabuild/.ssh/id_dsa.
Your public key has been saved in /home/username/.ssh/id_dsa.pub.
The key fingerprint is:
e2:eb:aa:23:0b:0f:15:6a:f6:39:eb:0f:3a:37:96:20 parabuild@hostname

Set the correct permissions for the generated keys:

chmod 600 ~/.ssh/id_dsa
chmod 644 ~/.ssh/id_dsa.pub

E-mail the public key, ~/.ssh/id_dsa.pub, to your CVS administrator.

If you are an administrator of the system where CVS is installed, add the public key to file ~/.ssh/authorized_keys for the user that parabuild will use to access CVS via SSH and make this file read-only:

chmod go-w ~ ~/.ssh ~/.ssh/authorized_keys

Once the keys are installed, edit the build configuration in Parabuild and fill the fields "CVS root" and "Path to external rsh". See the example below.

Example 3.8. Connecting to CVS using SSH As Remote Shell Under Unix

CVS root:

:ext:my_user_name@192.168.1.2:/home/cvs/data/CVSroot

Path to external rsh:

/usr/bin/ssh

3.6.4.7. Change Window

Parabuild maintains synthetic change lists for CVS. The change list is a set of logically connected changes in multiple files. An example of a change list can be adding to CVS a C++ class and a supporting binary library that the class makes use of.

CVS itself does not support change lists. If a logically connected group of files is checked in, and the process takes longer than a minute, it is possible that Parabuild might detect the presence of changes before all files make it to the CVS repository and fire a build against an incomplete submission time stamp. To avoid this problem Parabuild uses "change window" for the advanced detection of the member files of a change list. The change window is the maximum time in seconds a check-in of a group of files may take.

Entering zero value in the change window field turns off the advanced detection of members of change lists that are taking a long time to process.

3.6.4.8. Change Pre-check

If Change Pre-check is on, Parabuild will issue a cvs history command for a quick detection of the presence of changes after periods of inactivity.

Using change pre-check may speed up the detection of changes that need to be built. It is beneficial predominantly for CVS servers hosting large standalone source lines.

Change pre-check is not beneficial if a CVS server hosts multiple projects under active development.

A default setting is not to use change pre-check.

3.6.4.9. Fast Change Detection

If Fast Change Detection is checked, Parabuild will use option "-S" when running cvs log command. This may reduce amount of information passed from CVS to Parabuild and speed up detecting of changes as a result. Using fast change detection requires CVS starting version 1.4 and on. This option should be disabled for prior versions of CVS.

3.6.4.10. Compression Level

Compression level drop down allows to set a compression level used to transfer files over the network from CVS to Parabuild. The default setting for compression level is zero (no compression).

While higher compression levels may reduce network traffic between Parabuild and the CVS server, they are very likely to increase the CPU load on both servers. We recommend leaving the compression level set at zero if both Parabuild and CVS are connected over a high-speed intranet, which is usually the case.

3.6.4.11. Branch Name

Branch name is an optional field. Use this field to enter a name of a branch if the build being configured will be performed against a branched source line.

3.6.4.12. Repository Browser

Parabuild allows selecting ViewVC or Cenqua FishEye as a repository browser. Parabuild integrates with repository browsers by providing direct links to repository browser pages when displaying changes participated in a given build run. Configuration for repository browsers in discussed in the following sections.

3.6.4.13. Integration With ViewVC

ViewVC (formerly known as ViewCVS) is a browser interface for CVS and Subversion version control repositories. It generates HTML to present navigable directory, revision, and change log listings. To enable integration with ViewVC, fill ViewVC URL and ViewVC root fields. The meaning and use of each field is discussed below.

3.6.4.13.1. ViewVC URL

ViewVC URL should contain a base part of the URL that would be used to access ViewVC. The content of this field depends on an how access to ViewVC is configured. The most common forms look like the following. The bold font marks the base part of the URL:

Example 3.9. The Most Commonly Used Forms Of ViewVC URLs

http://mycvshost/viewcvs/myproject/README?rev=6881&view=markup

http://mycvshost/cgi-bin/viewcvs.cgi/myproject/tags?rev=1033&view=log

http://mycvshost/viewcvs.py/myprojectREADME?rev=6881&view=markup

Identify your base URL and enter in the ViewVC URL field.

3.6.4.13.2. ViewVC Root

Enter ViewVC root in this field if applicable.

3.6.4.14. Integration With FishEye

FishEye is a browser interface for CVS and Subversion version control repositories. It generates HTML to present navigable directory, revision, and change log listings. To enable integration with FishEye, fill FishEye URL and FishEye root fields. The meaning and use of each field is discussed below.

3.6.4.14.1. FishEye URL

FishEye URL should contain a base part of the URL that would be used to access FishEye. The content of this field depends on an how access to FishEye is configured. The most common forms look like the following. The bold font marks the base part of the URL:

Example 3.10. The Most Commonly Used Forms Of FishEye URLs

http://myfisheyehost/fisheye/myproject/README?rev=6881&view=markup

Identify your base URL and enter in the FishEye URL field.

3.6.4.14.2. FishEye Root

Enter FishEye root in this field if applicable.

3.6.4.15. Custom Relative Build Directory

An optional field Custom relative build dir" may contain a custom relative path to a build directory. You will have to set this field if CVS repository path consists of CVS module names. Parabuild will start build step scripts using this directory as a current directory. The relative build directory is a directory that is relative to a working directory provided by Parabuild. For instance, if a module named "my_proj" consisted of a repository path projects/release/my_proj and a build script were stored under projects/release/my_proj/build directory, the relative build dir field would have to contain value "projects/release/my_proj/build".

Important

"Custom relative build dir" is an advanced setting. It should be used with caution and only if the default value is not suitable. This setting is available only when an advanced build configuration is enabled using the system settings page.

3.6.5. Configuring Watching For File System Changes

Parabuild provides an ability to configure a surrogate "File system" VCS to support watching file system for changes. This ability can be used to trigger builds when changes are detected. To configure watching for file system changes, fill in the following mandatory fields:

  • User name

  • Paths

The following fields are optional:

  • Command to sync to change list

  • Command to label/tag a build

  • Command to remove a tabel/tag

The meaning of each field discussed below.

3.6.5.1. User name

User name is a mandatory field. Parabuild will use this field to fill "user" part of detected change lists.

3.6.5.2. Path

Path is a mandatory field. This field should contain a list of directories, files or URLs that Parabuild should watch for changes.

3.6.5.3. Command To Sync To Change List

"File system" VCS allows running arbitrary shell scripts as a part of the change detection and build cycles. Such commands serve as points of extensibility. Field "Sync to change list" may contain a command that can be used to alter content of the file system. The content may represent certain state of the file system that is considered "in sync" with state of the file system or an external VCS at given time.

Parabuild supplies parameters of the build configuration to the shell scripts. The parameters are passed in form of shell variables. The following shell variables are available to the "Sync To Change List" shell script:

  • PARABUILD_CHANGE_LIST_TIMESTAMP contains number of milliseconds passed since midnight, January 1, 1970 UTC.

  • PARABUILD_CHANGE_LIST_DATETIME contains a string representation of the change list time stamp in "yyyyMMddHHmmss" format.

  • PARABUILD_CONFIGURATION_ID contains a unique system-wide identifier assigned to this build configuration.

  • PARABUILD_BUILD_NAME contains a name assigned to this build configuration.

3.6.5.4. Command To Label Build

Field "Command To Label Build" may contain a command that can be used to label or to tag content of an external VCS at given time. This command may be called if a build run was successful and if labeling is enabled. The following shell variables are available to the "Command To Label Build" shell script:

  • PARABUILD_LABEL_TO_CREATE contains the name of the label that should be applied to the state of an external VCS at the given time.

  • PARABUILD_LABEL_TIMESTAMP contains number of milliseconds passed since midnight, January 1, 1970 UTC.

  • PPARABUILD_LABEL_DATETIME contains a string representation of the time stamp that a label should be applied to in "yyyyMMddHHmmss" format.

  • PARABUILD_CONFIGURATION_ID contains a unique system-wide identifier assigned to this build configuration.

  • PARABUILD_BUILD_NAME contains a name assigned to this build configuration.

3.6.5.5. Command To Delete Label

Field "Command To Delete Label" may contain a command that can be used to delete a label or a tag that was previously created by Parabuild in the external VCS. This command may be called if label cleanup is configured. The following shell variables are available to the "Command To Delete Label" shell script:

  • PARABUILD_LABEL_TO_DELETE contains the name of the label that should be deleted.

  • PARABUILD_CONFIGURATION_ID contains a unique system-wide identifier assigned to this build configuration.

  • PARABUILD_BUILD_NAME contains a name assigned to this build configuration.

3.6.5.6. Error Handling

The shell command discussed in the previous sections should return a non-zero error code if something goes wrong. If a command returns a non-zero code, Parabuild will collect a limited number of lines from the tail of stderr output. The output will be sent to the build administrator to notify about the error condition.

3.6.6. Configuring Generic Version Control System Access

Parabuild provides an ability to configure access to a generic version control system. A generic version control system can be used to integrate Parabuild with a version control system that Parabuild does not integrate with yet. Also, this feature can be used to deliver a custom integration if once included into Parabuild does not fit your needs. Using this feature requires extensive knowledge of other languages such as bash, Perl, Java and alike.

Parabuild integrates with a generic version control system by calling shell scripts according to a defined protocol of access to a version control system as it is seen by Parabuild.

Parabuild supplies parameters of the build configuration to the shell scripts. The parameters are passed in form of shell variables.

Shell command should be called according to the OS-specific rules: Example for bash call: bash /op/sripts/get_changes.sh. Example for cmd call: call C:\scripts\get_changes.bat

The protocol, commands and their parameters are discussed below.

3.6.6.1. Command To Get Changes

Parabuild issues this command every time it has to poll a version control system for new changes according to build schedule. If changes are present this command should output a string-delimited set of change records to stdout. Parabuild will parse the output according to the parser parameters. The parameters are entered in the corresponding entry fields. The meaning of each field is discussed below.

3.6.6.1.1. Parser Parameters