What's new in QuickBuild 7.0

QuickBuild 7.0 introduces step retrying, sortable build queue, configuration tree import/export, step/repository/variable filtering by name/inheritance, in-place upgrade script, custom statistics aggregation, stop inheriting certain objects, bullseye coverage integration, diff navigation, and many other improvements

Get QuickBuild 7.0

The free license is already included

Step retry setting to re-run step upon failure

Not only bad commits, but also some environmental issues such as intermittent networking breakage can lead to build failures. To deal with these recoverable environmental issues, QuickBuild steps can be configured to re-run for specified number of times upon failure, with specified retrying period. You may retry at different step level, or even retry the master step, which has the same effect of retrying the whole build.

Parallel workers to queue parallel steps

In case the parallel step has many child steps to execute concurrently, one can configure number of workers in advanced setting of the step to limit the concurrency level. Child step will wait until it is picked up by free workers. This helps to reduce server load while still making the setup easy.

Drag and drop to sort build requests in queue

Existing build requests in queue can now be adjusted by drag and drop. You can now move a build request to top of queue to have QuickBuild taking care of it first.

Configuration tree import and export

One can now select a configuration tree to export as an zip file, and then import it to another QuickBuild server of same version. This makes it possible to merge/split configuration tree across different servers.

Stop inheriting certain step/repository/variable

A major benefit of QuickBuild is inheritance of all kinds of settings such as steps, repositories, variables. However you may have some private settings not intended to be inherited by child configurations. Now, the inheritable flag is introduced for this purpose. Not inheritable objects will not be displayed in child configurations to make child view tidy.

Option to hide inherited steps/repositories/variables

The table listing inherited objects now has an option to hide objects defined in ancestor configurations. With this, one can check steps, repositories, variables, promotions or aggregations defined in current configuration easily.

Filter steps/repositories/variables by name

The table listing inherited objects now has a field to filter by object name. Just input any string there, and QuickBuild update the table to only show matched steps, repositories, variables, promotions or aggregations

Optionally clone inherited steps/repositories/variables

Using object inheritance appropriately, the work to add new build definitions can be minimized. However this also makes it difficult to move the child configurations to a different place, as some inherited objects used to define the build might not be available. The clone inheritance feature helps in this case to copy all inherited steps, repositories and variables to current configuration.

Auto-promote condition

QuickBuild has the option to run a promotion automatically after build finishes. Now you can tell QuickBuild to do this only when some criteria is satisfied via the newly introduced auto-promote condition.

Option to run step on same node running master step

Often there is the case to run a certain step on the same node running master step. Previously you have to do this via scripting. Now we introduce a built-in option to make this task easier.

Resource node selector to match host name

In case you need to define grid resources based on node name, the host name matcher will make your task a lot easier.

Perforce ditto mapping support

Perforce introduced ditto mapping to map same depot path to different client paths in its 2016 version. Now QuickBuild is able to deal with Perforce views using ditto mappings to make use of this feature.

Option to support Perforce parallel sync

With the newly introduced Perforce sync options, one can define parallel sync options to speed up the sync operations for large depots.

Conflict resolve option when build Perforce shelved changes

When your shelved changes and the depot tip revision touch same files, Perforce can either merge them, or use your shelved files, or use the tip files. Previously QuickBuild always tells Perforce to use the merge strategy. Now the options of ACCEPT_YOURS and ACCEPT_THEIRS are introduced to handle some special cases.

Fail build if no files in Perforce shelved changes

Occasionally you may forget to shelve files into to a Perforce change list before submitting it to QuickBuild for build verification. In this case, the option "fail if no shelved files" can fail the build to notify you of the situation.

Time out for build condition check

QuickBuild checks build condition to determine if a build is necessary. This stage might be blocked if connection to the SCM system hangs, and other builds in the same configurations will not proceed unless this stage finishes. Previously one has to cancel the build request manually in this case. Now we enhanced the build condition check stage to make it also respecting the build timeout setting.

Place builds in different sub directories by default

QuickBuild places build publish directories under the global storage directory, and this leads to file system errors and performance issues for large installations as tens of thousands of build folders can be placed into a single folder. To solve this issue, we now create sub directories using last three digits of build id, and put new builds under that sub directory. Existing builds in old places can still be located.

Condition to show custom build and request columns

Custom build and build request columns now have a condition setting to show them conditionally for different configurations. This way you have the flexibility of defining all custom columns in a parent configurations, and show/hide them conditionally on different child configurations.

Gadget to show running builds of configuration

A new dashboard gadget to show all running builds of specified configuration, with the ability to refresh automatically upon build status change.

Official support of MariaDB

QuickBuild now officially supports MariaDB. Since MariaDB is compatible with MySQL, you only need to copy over MySQL settings in hibernate.properties and adjust url, user name and password according to your MariaDB instance.

Custom statistics aggregation

Custom stats data now can be aggregated like other reports. And you can now use script to update some indicators based on other indicators from XPath. For example, we add an indicator named successful_rate, you can use script below to calculate the successful_rate instead of reading from your original XML report:

report.setValue("successful_rate", report.getValue("passed") / report.getValue("totals"))

Bullseye coverage integration

Bullseye is an excellent C++ code coverage tool used to improve the quality of software. This is a long-awaited feature. Now, in QuickBuild 7.0, you can publish the Bullseye coverage report just like others. QuickBuild can show you the coverage status for each file and methods, can highlight the source code with the coverage information:

Heatmap to show number of running/finished steps

QuickBuild can now show the heatmap of running steps or finished steps on a node. So you can know the load of whole grid at a glance:

Navigate between changes in diff view

QuickBuild displays diff view of changed files between builds, and it is difficult to scroll a long file to find changed blocks. To solve this, navigation buttons are added to diff view to help you navigating between changes

Build search in statistics/SCM activities/change history

Now, you can search SCM changes by build version, in this way, you can easily review all commits and modifications in statistics page.

Export SCM changes report as XML/CSV/TSV

Select two builds and QuickBuild will show SCM changes between them to help you understand what is happening. Occasionally you might want to export this change report for further processing. The new export feature makes this possible.

Option to filter build requests in audit log

QuickBuild audit log can optionally records all build requests to disclose information such as why/when/who. But large volume of build requests can easily bury other important information such as configuration setting changes. Now you can check "no build requests" to filter out build request entries.

Filter users not logged in since specified date

As time goes by, the system may have obsolete user entries you want to clean up. To do this, filter out users not logged in for specified number of days, and then remove.

Separate scroll bar for step workflow

When step workflow gets long, it is difficult to organize steps between available panel and workflow panel as drag place and drop place might be far away. Now the step workflow panel has its own scroll bar to make this task no more painful.

Auto refresh gadgets using latest build

User organizes gadgets in dashboard hoping to get an overview of system information. QuickBuild refreshes some gadgets automatically when underlying information changes to get you update-to-date view of these information. Now various gadgets displaying information for latest finished/recommended/successful builds will also be refreshed automatically if new build happens in corresponding configurations.

Scripting support for various build gadgets

Dashboard gadgets displaying various build related information can now employ power of scripting to dynamically decide which build should be used.

Run custom script before killing command

QuickBuild kills spawned build command upon build/step timeout or manual cancellation. Sometimes it is desirable to run custom logic before killing these commands to do some investigations or cleanup. The command pre-kill script serves this purpose.

Run custom script upon user registration

When new users register their accounts in the system, you may want to run some custom script to do things such as sending notification emails. The post registration script comes to aid.

RESTful API to get total and available resources across nodes

The RESTful API is enhanced to return total and available resource count across different nodes. Check http://wiki.pmease.com/display/QB70/Interact+with+Resources for more information

RESTful API to manipulate dashboards

RESTful API endpoint to reate/delete/modify dashboards is added, together with endpoints to handle associated user share and group share. For more information, please visit:

Specify priority when submit build request via RESTful API

Build priority can now be specified when request build via RESTful API. Refer to http://wiki.pmease.com/display/QB70/Interact+with+Build+Requests for more information.

Script API to flush build variables

For performance reason, QuickBuild does not save variables to database even if they are changed during build. It does so only after build finishes. Impatient users can now call "build.flushVariables()" manually via script to get web UI reflecting latest variable values even if build is running.

Default to use available group dashboard for new users

With this improvement, new members in a group will now be welcomed with group dashboard, instead of facing the default dashboard always.

Option to make path pattern case sensitive/insensitive

Path patterns are widely used in QuickBuild to match files. On case sensitive file systems (Unix etc.), this matching is done case sensitively, and on case insensitive systems (Windows) it id done case insensitively. Now you can append the pattern with ", casesensitive=yes" or ", casesensitive=no" to turn on/off case sensitive explicitly.

And many many more

Click here for a full list of enhancements and bug fixes.