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
The free license is already included
- Step retry setting to re-run step upon failure
- Parallel workers to queue parallel steps
- Drag and drop to sort build requests in queue
- Configuration tree import and export
- Stop inheriting certain step/repository/variable
- Option to hide inherited steps/repositories/variables
- Filter steps/repositories/variables by name
- Optionally clone inherited steps/repositories/variables
- Auto-promote condition
- Option to run step on same node running master step
- Resource node selector to match host name
- Perforce ditto mapping support
- Option to support Perforce parallel sync
- Conflict resolve option when build Perforce shelved changes
- Fail build if no files in Perforce shelved changes
- Time out for build condition check
- Place builds in different sub directories by default
- Condition to show custom build and request columns
- Gadget to show running builds of configuration
- Official support of MariaDB
- Custom statistics aggregation
- Bullseye coverage integration
- Heatmap to show number of running builds
- Navigate between changes in diff view
- Build search in statistics/SCM activities/change history
- Export SCM changes report as XML/CSV/TSV
- Option to filter build requests in audit log
- Filter users not logged in since specified date
- Separate scroll bar for step workflow
- Auto refresh gadgets using latest build
- Scripting support for various build gadgets
- Run custom script before killing command
- Run custom script upon user registration
- RESTful API to get total and available resources by nodes
- RESTful API to manipulate dashboards
- Specify priority when submit build request via RESTful API
- Script API to flush build variables
- Default to use available group dashboard for new users
- Option to make path pattern case sensitive/insensitive
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.
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
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.