How can you automate the build process for your application based on Software AG’s Adabas and Natural? I talk about our journey towards a completely automated build from scratch after each push to Git in the second episode of the Legacy Coder Podcast.
Podcast: Play in new window | Download
How to automate the build process for an Adabas/Natural application
- Why would I want to automate the build process?
- What hurts should be done more often!
- No more long integration phases before each release!
- You’ll get a faster time to market for new features.
- You can get rid of knowledge silos concerning the release of your application.
- What steps may need to be automated?
- Upload (transfering the Natural source code to the server)
- Compile (CATALOG, STOW, CATALL etc.)
- Unit Tests (e.g. with NatUnit, see Unit Testing Natural Applications)
- Deployment (the actual release of the new version on the target stage)
- Restarting RPC servers or whatever individual steps might be necessary in your environment
- What tools are available for automating the Natural build process?
- It all starts with Git or any other versioning control system (Subversion, TFS, CVS).
- You can use Jenkins for Continuous Integration.
- Software AG’s command line tools (ftouch etc.) can be scripted.
- Even the CATALL can be scripted by calling into Natural BATCHMODE.
- NaturalONE’s ant scripts for uploading and compiling Natural sources.
- Any additional tool that you might need (Bash scripts etc.)
- How can I get started?
- Make your project fully compilable. There can be no compile errors whatsoever.
- Start with a single step, e.g. automate only the compile step first.
- Script everything (e.g. with Bash) right from the beginning. You can easily call these scripts from Jenkins later on.
- Hook Jenkins up to your source code repository. It provides plugins for every major system (e.g. Git, Subversion).
- Try to automate the build with Jenkins. It’s completely free and easy to setup. Perhaps ask a Java colleague if he can help you.
- How can you go even further than what’s possible today?
- Try to automate imports of Adabas data that’s important for your application.
- Try to automate Adabas schema migrations.
- Implement feature toggles for more fine grained control over your application’s functionality at runtime.
Recommended reading
- Continuous Integration (introduction to CI by Martin Fowler)
- Active Record Migrations (see how Rails handles database migrations)