Automated packaging

The automated packaging process is governed by file build.xml in the software, which also governs the continuous integration process. These processes are two sides of the same medal.

The continuous integration process works by creating a set of packages and delivering it to the internal staging environment. This set, as byproduct of the continuous integration process, is then made available to developers in the same folder where the continuous integration process writes its automated test reports.

This folder is currently \\qkfil0001\hudson\_packages

The set of packages currently contains two packages, one for the public server 6081 and one for the extranet server 6082. They are named myenrd.*****.zip and public.*****.zip, where ** is the timestamp.

The automated packaging rules can be found in the build.xml file. An extract of this file is:

        <zip destfile="${auto.dir}/deployPUBLIC.zip">
             <fileset dir="." 
                 includes="**/app_templates/**" 
                 excludes="**/myenrd/**,(...)" 
             >
                 <date when="after"  pattern="yyyy-MM-dd HH:mm:ss"  datetime="${auto.timestamp}" />

(...)

        <zip destfile="${auto.dir}/deployMYENRD.zip">
             <fileset dir="." 
                 includes="**/app_templates/**" 
                 excludes="**/public/**, (...)" 
             >
                 <date when="after"  pattern="yyyy-MM-dd HH:mm:ss"  datetime="${auto.timestamp}" />

From this extract, it is clear that the packaging includes all files contained under folder app_templates in both packages, excluding any folder named myenrd and its offspring from the public package and excluding any folder named public and its offspring from the myenrd package.

It is the developers' responsibility to respect this formal rule when writing the code to ensure the correct functioning of the differential automated packaging process.

An additional detail that can be deducted from line

                 <date when="after"  pattern="yyyy-MM-dd HH:mm:ss"  datetime="${auto.timestamp}" />

is the date control mechanism. All packages contain all files changed after the date of the last package. The date of the last package is updated by the same ant script, and can be found in variable ${auto.timestamp} which is currently written in file
    <!-- Properties -->
    <target name="dev.properties">
        (...)
        <property file="build/properties.dev" />
        (...)
    </target>