Hi all, I have been codifying the recent discussions on team-cellml into a shell script which can be used to control the build process. This shell script will be sourced into the scripts used launch automated builds, and also into the scripts which package snapshots and put them onto the FTP server in the snapshot directory.
I propose the following process for releases: 1) Any major outstanding bugs on the trunk are fixed, and the latest snapshot is tested. 2) The trunk directory in Subversion is copied to a branches/versionnumber subdirectory in the relevant Suversion tree, with svn cp. 3) The branch configuration script (below) is updated specify the new versions (this implies there will only ever be one branch open at the same time as the trunk). 4) Automated builds (which also run the unit tests) with BRANCH=yes are enabled in cron, in addition to the standard non-branch builds. 5) The documentation on the branch is updated to specify the version number as being a stable version, instead of the text on the trunk, which claims the code is an unstable trunk release. 6) Snapshots are also put out periodically, by running the snapshot release scripts with BRANCH=yes. The filename for these snapshots will have the date on them, as with the other builds, but will also have the suffix "branch" followed by the name of the branch (with _ replacing . in the version number). As with other snapshots, these releases will automatically be put on the FTP server. 7) Snapshots will be put through an informal functional tests. Any community feedback on snapshots will also be looked into. Any resulting patches will be applied to the trunk, and if the bug is serious enough, and the patch worked out properly on the trunk, it will also be applied to the branch. 8) When a snapshot which passes the functional tests has been created, the snapshot will be renamed (but not modified), and put into the applicable Plone software centre as a release candidates. Notifications of the release candidate will be sent to [EMAIL PROTECTED] 9) Should any bugs in the release candidate by the community be reported, they will be looked into, and any resulting patch will be applied to the trunk. If the bug is serious enough, it will be put onto the branch, and the process will go back to step 7. 10) The CellML team will discuss and vote on whether to release the release candidate at the next CellML meeting. If the vote is in favour of a release, the release candidate will be put in the Plone software centre as a stable release. If the vote is not to release it, members of the team opposed to the release will give a reason why it should not be released. If the reason is that they need more time to review the release, or that the community should have more time to review the release, this step will repeat at the next meeting. Otherwise, any identified issues will be corrected on the trunk, and once the patch works on the trunk, will be moved onto the branch. The process will then go back to step 7. The proposed script controlling version numbers (with step 3 already incorporated for the next release) is below... REPO_PREFIX="https://svn.physiomeproject.org/svn/physiome/" if [[ x$BRANCH == xyes ]]; then VERSION_CELLML_API=1.0 VERSION_XPCELLML_API=1.0 VERSION_PCENV=0.1 VERSION_XPCORBA=0.1 REPO_CELLML_API="${REPO_PREFIX}CellML_DOM_API/branches/$VERSION_CELLML_API" REPO_XPCELLML_API="${REPO_PREFIX}xpcellml_api/branches/$VERSION_XPCELLML_API" REPO_PCENV="${REPO_PREFIX}pcenv/branches/$VERSION_PCENV" REPO_XPCORBA="${REPO_PREFIX}XPCORBA/branches/$VERSION_XPCORBA" SUF_CELLML_API=branch$(echo $VERSION_CELLML_API | tr . _) SUF_XPCELLML_API=branch$(echo $VERSION_XPCELLML_API | tr . _) SUF_PCENV=branch$(echo $VERSION_PCENV | tr . _) SUF_XPCORBA=branch$(echo $VERSION_XPCORBA | tr . _) else VERSION_CELLML_API=trunk VERSION_XPCELLML_API=trunk VERSION_PCENV=trunk VERSION_XPCORBA=trunk REPO_CELLML_API="${REPO_PREFIX}CellML_DOM_API/trunk" REPO_XPCELLML_API="${REPO_PREFIX}xpcellml_api/trunk" REPO_PCENV="${REPO_PREFIX}pcenv/trunk" REPO_XPCORBA="${REPO_PREFIX}XPCORBA/trunk" SUF_CELLML_API="" SUF_XPCELLML_API="" SUF_PCENV="" SUF_XPCORBA="" fi if [[ x$DEBUG_BRANCH == xyes ]]; then echo "VERSION_CELLML_API=$VERSION_CELLML_API" echo "VERSION_XPCELLML_API=$VERSION_XPCELLML_API" echo "VERSION_PCENV=$VERSION_PCENV" echo "VERSION_XPCORBA=$VERSION_XPCORBA" echo "REPO_CELLML_API=$REPO_CELLML_API" echo "REPO_XPCELLML_API=$REPO_XPCELLML_API" echo "REPO_PCENV=$REPO_PCENV" echo "REPO_XPCORBA=$REPO_XPCORBA" echo "SUF_CELLML_API=$SUF_CELLML_API" echo "SUF_XPCELLML_API=$SUF_XPCELLML_API" echo "SUF_PCENV=$SUF_PCENV" echo "SUF_XPCORBA=$SUF_XPCORBA" fi The output of this script when DEBUG_BRANCH=yes BRANCH=yes is: VERSION_CELLML_API=1.0 VERSION_XPCELLML_API=1.0 VERSION_PCENV=0.1 VERSION_XPCORBA=0.1 REPO_CELLML_API=https://svn.physiomeproject.org/svn/physiome/CellML_DOM_API/branches/1.0 REPO_XPCELLML_API=https://svn.physiomeproject.org/svn/physiome/xpcellml_api/branches/1.0 REPO_PCENV=https://svn.physiomeproject.org/svn/physiome/pcenv/branches/0.1 REPO_XPCORBA=https://svn.physiomeproject.org/svn/physiome/XPCORBA/branches/0.1 SUF_CELLML_API=branch1_0 SUF_XPCELLML_API=branch1_0 SUF_PCENV=branch0_1 SUF_XPCORBA=branch0_1 Note: 1) The proposed version number for the next CellML API stable release is version 1.0. This version number has been chosen because there has been concern that the version number of the previous stable release, 0.1, suggested that the API wasn't ready for general use. 2) xpcellml_api has been given a version number paired with the CellML API, because xpcellml_api must always correspond to the exact same version of the CellML API (as it is a wrapper around the CellML API). It would cause confusion if it was given a different number. 3) PCEnv and XPCORBA are versioned at 0.1, because this is the first release branch ever to be made. Please let me know if you can suggest any improvements to the release process (or the choice of version numbers). Best regards, Andrew _______________________________________________ cellml-discussion mailing list [email protected] http://www.cellml.org/mailman/listinfo/cellml-discussion
