Melissa for VA Smalltalk

Melissa is a simple tool that can help in building development and runtime images in a continous integration environment. It is being used extensively to create daily builds for Smalltalk images. This post describes the steps to use Melissa for VA Smalltalk 8+.

The intended way to use Melissa is to start with a clean VA image, load the Melissa config app and save it as melissa.im. In order to tell Melissa what to build, you need to start that image passing the command line parameter “-melissa buildscript.ws” like:

"C:\Program Files\vast80\bin\abt.exe" -imelissa.icx  -melissaE:\Melissacoolest-server-headless.ws

The build script must contain Smalltalk code that creates the MelissaBuilder and instruct it to load components (Maps,Apps), test components (Maps,Apps) and finally produce a runtime based on your prepared PackagingInstructions. The following is a basic example that loads the latest configuration map and produces a runtime image. The build and test results are logged on a file.

| melissa |
melissa := MelissaBuilder new.
melissa logFile: 'c:tempcoolest-server-headless-' , AbtTimestamp now printString , '.build.log'.
melissa loadMap: 'PHW Coolest Server Runtime'.
melissa reporter reportAll.
melissa tester runTestsInMap: 'PHW Coolest Server Test'.
melissa reduceAndDumpUsing: #PhwCoolestHeadlessPackagingInstructions asClass.
melissa exit.

Features

  • can load (specific editions of) Apps and Configuration Maps
  • can notify developers by email about success|failure of the build (see MelissaNotifier)
  • can run Unit tests found in an App or Configuration map
  • increments a build number that can be used to initialize a class variable in the runtime image
  • the build is run in a background process so you can interrupt the build at any time
  • when holding the Shift-button when starting the Melissa image, the image will not exit when completed (this is useful to inspect the freshly loaded image)
  • do simple file distribution

This is open-source software (MIT-license) and its configuration map is available on VastGoodies.com to download. In one of the next posts, I will introduce Melissa for VisualWorks. This package is available in the Cincom Public Store.