I’ve long been a fan of automated builds and continuous integration. Manual build processes are error-prone and tedious. When I’m rushing to get a build out to deliver an important feature or fix a critical issue, it’s easy to miss a step in a manual build process, and that’s when I can least afford to make a mistake.
StoreCI is a continuation of work I’ve been doing in this area for many years. I’ve presented on the topic at Smalltalk Solutions (now the STIC conference).
Recently, our team has started migrating from Cruisecontrol to Jenkins, so I took the opportunity to clean up and re-release some of our tools.
StoreCI consists of four pieces:
StoreCI-Polling is a bridge between a CI system and Store. It allows the CI system to poll a Store repository for changes so that it can then kick off a build.
visualworks-store-plugin is a Jenkins plugin that runs a Visualworks image and polls for changes to a Store repository using StoreCI-Polling.
StoreCI-Building loads a set of pundles (packages or bundles) from a Store repository into an image and optionally deploys them as parcels. This is a reworked version of my previous ParcelBuilder package, which is now obsolete.
StoreCI-Testing runs a set of SUnitToo test cases and writes the results to a file in the JUnit-compatible XML format that most or all CI systems understand. This is a reworked version of my previous TestLogger package, which is now obsolete.
StoreCI-Polling could also work with Cruisecontrol, but the current version of the Cruisecontrol store plugin would need some API and XML parsing changes. I don’t have plans to update that plugin since we’re migrating away from Cruisecontrol. If you’re using Cruisecontrol, I have an older Visualworks package called CruiseControl that continues to work, but doesn’t support bundles.
The three Smalltalk pieces of StoreCI can be used independently, so you can mix and match with what you’re already using if you’re happy with your current solution.
StoreCI’s primary home is the Cincom Public Store Repository. Check there for the latest version. I’ve also put a snapshot of the current version of StoreCI on GitHub. The Readme file on GitHub includes high-level documentation of the components of StoreCI if you’d like more information before diving in. I’ve also submitted it for inclusion as a contributed package in the forthcoming Visualworks 7.10 release.
StoreCI was developed in VW 7.9.1, but is intended to be compatible with VW 7.7 and later. It uses the newer Glorp-based Store implementation, so will not work in 7.6 or earlier.
StoreCI is licensed under the MIT license.
Thanks to Travis Griggs who wrote the initial version of much of this code, and also contributed improvements to it over time.