...
1. Build initiated under designated JDK, on designated build server (currently JDK 1.5.0 on dev-tools2)
2. Build has required inputs: name of release, and name of existing module to be released
3. Build workspace is empty
Script = bleu/build-system/util/release_build.sh
Scripts used by build system are up-to-date (for correctness) and labeled (for repeatability):
1. Release is assigned a version, independent of the release name: a timestamp, suffixed by -release (e.g. 20070604134307-release)
2. Build system is tagged with the same timestamp, prefixed by Release- (e.g. Release-20070604134307), then checked out of CVS repository using the tag
Script = bleu/init.xml
Tools and properties used by build system are set up
...
4. Module source is tagged, then checked out of CVS repository using the tag
5. Invoke publish-release target of bleu/modules/category-name/module-name/build.xml
...
2. Recursive Release: Release main module and all the modules it depends on
...
2. Trigger the recursive release process, using the resolved ivy file, because the module may have dependencies which need to be released.
Scripts
bleu/modules/<category>/<module>/build.xml
bleu/modules/<category>/category.xml
bleu/build-system/module/common.xml
bleu/build-system/module/common-ivy.xml
Install
Checkout bootstrap script for install and invoke it, passing it the module name, version, branch, and instance (if instance=test). Upon completion of install, copy release metadata to Ivy repository.
/apps/registry/build-system/staging/<module>-test-install.sh
(on build host) installs a TEST instance of <module>
/apps/registry/build-system/staging/<module>-install.sh
(on build host) installs a UAT or PROD instance of <module>
These files are generated by bleu/ build-system/module/common-ivy.xml
Bootstrap: Check install host, set CVS options, load release metadata, start install of module
Install module:
1. Checkout module
...
2. Note: 2a, 2b, and 2c are interleaved (not sequential)
...
- Start logging install activity
- Get instance (uat or prod)
- Use Ivy to download zip containing resources necessary for the installation: install properties, configurations files, jsps, htmls, ... depending on the application type
- Extract the zip in the module directory
- Load install properties: since properties are immutable, loading in order of increasing scope allows specific cases to override general defaults.
Some properties are set dynamically during the install, using Ant's token filtering mechanism. For details, see Install Tokens. - Use Ivy to download jars required by module (including the jar published by the module itself) directly in destination jar dir
- Stop logging
Script = bleu/build-system/install/common.xml
2b. Perform install steps specific to this category
Files shared by modules in the category are collected in a shared module. That shared module, declared as an Ivy install dependency, is installed in this step.
Category | Shared module |
---|---|
regis | regis_admin |
slog | slog_admin |
web | web_configuration_tomcat6 |
xmldoc | web_configuration_tomcat6 |
Script = bleu/module/<category>/category-install.xml
2c. Perform install steps specific to this module
...