Continuous integration @ Keylane 1 Keylane Software for pension funds In the business since 2005 Working mostly on EU market 2 1
Teams Around 30 developers and project managers Divided in 10 teams Mostly using Scrum 3 Technical environment Legacy application written in TTY mode Modernization started using imo framework Heavily using OOABL (OpenEdge 11.x) ASP.Net introduced for the Web user-interface Development under PDS and Visual Studio 4 2
Technical environment Source code management using Accurev Atlassian Jira as a bug tracker Atlassian Confluence for documentation Developer Studio as the main development tool for OpenEdge 5 Existing continuous build process Custom procedures written internally to do the build Outside of source-code control Manually triggered at noon and 20:00 Checking out latest version from Accurev Executing a batch file located on the build server Build failures reported to all developers 6 3
Changes Dedicated build servers One Windows server One Linux server Lots of disk space 24 Gb memory Somewhat good CPU Plan for multiples builds in parallel 7 Changes Build environment Choice between Bamboo and Jenkins Winner was Bamboo Integration was clearly better Though less flexible License cost was not a problem 8 4
Bamboo 9 Bamboo 10 5
Bamboo 11 Bamboo 12 6
Changes Build script part of code repository Keep track of changes in the build Using Ant + PCT Open-source build tool Performance Keep track of full schema and rebuild local databases Minimize I/O or use RAM disk Run tasks in parallel 13 Accurev Nice source-code management system, but Expensive Hard to integrate with external tools Steep learning curve Looking for a new code repository 14 7
Moving to Git Atlassian Stash provides a very good integration with other tools Especially coming from Atlassian Existing Git knowledge in the company Very good branch support in Bamboo Smooth transition overall Don t underestimate training 15 Code reviews A good point of Stash is the ability to easily setup code reviews Workflow : Create a branch in Stash Commit changes in this branch Let Bamboo do the build and run automated tests Create the pull request to merge in the main branch A reviewer is assigned, who can validate, reject or comment the PR Once validated, code goes into the main branch 16 8
Automated deployment Multiple test environments available The outcome of the build is automatically deployed to one of the test environment Make sure appservers are correctly restarted, code is updated Work with templates in order to be able to easily generate a new environment based on a deployment config file Deployments are second-class citizens in Bamboo 17 Standard database updates Introduced conventions into the source code repository Full database schema is stored in Git Each update step is stored in Git DF file.p or.cls Standard data Dedicated update package generated during the build Consistency checks during the build 18 9
Databases are versioned Dedicated table for DB updates Each record contains an update step Upgrade package first reads this version number, and decide exactly which steps have to be executed 19 How was that written Has to be portable : Groovy calling Ant / PCT tasks Achieved in 300 lines of code (including comments and blank lines) Each step is applied sequentially CRC check executed at the end In OE 11.3+, new callback mechanism is available to intercept errors and warnings Don t forget hotfixes 20 10
Next big things Much better automated testing Currently only limited unit tests Use Docker : For development environment For test deployment PAS for easier test / prod deployment 21 Next big things 22 11
Keylane Maliebaan 50 3581 CS Utrecht The Netherlands T +31 (0)30 233 59 99 E info@keylane.com www.keylane.com 23 12