This fall we decided to spend some time modernizing our continuous integration environment and tool chain. This effort will greatly improve code stability as well as our code delivery efficiency. Additionally, it will also make our setup more transparent to our customers. We estimate to be fully upgraded in time for the new year fireworks, meaning we can start 2020 by having our CI in great shape.
It’s no secret that we are big fans of the JetBrains tool suite and we have now upgraded to the most recent TeamCity version. We also increased our test parallelization by adding more TC agents. Having rapid test results is essential in a world where we don’t allow untested code to enter our repo. We use services of great companies like Sauce Labs and BrowserStack for our cross browser testing.
The biggest change we made this fall was our migration to GitHub. For source control, we have used Assembla for the past 10 years and it has served us well. But our needs for evergreen code meant we had to migrate to a more capable service. Previously we also had separate repos for each product, in GitHub we now use a single repo for all our pure JS components. This makes it so much easier to run tests for changes against all the affected code modules to assure a change in Grid does not break the Gantt.
Evergreen master branch
The most exciting part of our GitHub migration was to enable test results to block merge. It’s no longer possible for any of our developers to push code directly to our master/release branches. Instead all changes are manually reviewed by one of our senior “gatekeepers” using pull requests. Once reviewed, GitHub triggers a test run to execute our test suite (powered by our Siesta testing tool). If tests pass, and if branch is not behind the master branch, GitHub will allow the branch to be merged. This means that no untested or unreviewed code can enter our master branch. This is a massive improvement, and not just for us, but for anyone downloading our nightly builds.
Public issue tracker
A great improvement with GitHub is that we now have a public support repo open for anyone who wants to submit a bug report or feature request. Please note that the issues repo is just for our new pure JS component suite. Any bug reports for our other products are still handled in our existing forum.
We have put a lot of work into our test suite, continuous integration and error monitoring tools for many years now. The goal has always been to release frequently with confidence. With our latest (and ongoing) efforts, the stability of our releases will be greatly improved. We look forward to delivering even higher quality releases in 2020.