We run a time-based release cycle with two releases every year. The first release takes place in April, the second in October.
Early March / September: Feature Freeze (Decision by release team together with devel team)
release team: Create tickets for removing outdated deprecations
release team (might be done by Bug/Wishlist Review Team): Collect todo tickets for release
release team: Create changelog
release team (might be done by quality team): Run unit tests, coding standard checks, check
HTML
i18n team: Update Translation (Assume stable string set from now on)
documentation team: Update documentation (Assume stable from now on)
plugin & template team: Write plugin / template developer infos (what got deprecated, what removed, what is new)
Release / RC (Transition to this step as soon as all todo tickets are closed, ca 1 week after last transition at minimum)
If RC:
release team: Manage new tickets (Mark as todo)
release team: test upgrade last stable installation, Inform / update derivatives
release team (might be done by quality team): Run unit tests, coding standard checks, check
HTML
i18n team: Take a look at bad translations, exclude them? (Here?)
release team: inform plugin & template team, documentation team, i18n team on changes relevant to them
andi: install RC on dokuwiki.org :)
If Release:
We provide security fixes for the two most recent versions.
Removing legacy interfaces, behaviours and features is done over a period of three releases: In the first release, the object is deprecated, in the third, removed. This means that a plugin or template which only uses non-deprecated aspects should at least work in two future versions as well. Put the other way: A template or plugin older than a year is possibly broken.
The following steps have to be taken for building a new release.
find a code name
-
-
update release name and changes summary on
releases
-
push the current stable branch to the oldstable branch (only once per release cycle)
make sure the MD5 for
conf/dokuwiki.php in the
installer is correct; this includes
checking the MD5 value
checking whether the installer fails
increase the update_check msg number in doku.php
update list of deleted files
push the release preparations above to the master branch
merge git master branch into the stable branch
update the VERSION file in the stable branch
tag the release in the git stable branch
push the stable branch to gitgub:
build the .tgz (See build script below)
test-install the tarball
test-upgrade from previous stable using the tarball
push git
upload the .tgz (needs to be done by Andi or Adrian currently)
update release numbers in bugtracker (needs to be done by Andi, Adrian or Guy currently)
change message in
IRC (needs to be done by Andi, Adrian or Hakan currently)
announce in fm (needs to be done by Andi currently)
announce in wikimatrix (needs to be done by Andi or Adrian currently)
announce in mailing list, forum, weping
update update.dokuwiki.org (needs to be done by Andi, Adrian or Guy currently)
-
- build.sh
#!/bin/sh
BDIR=/home/andi/projects/buildplace
cd $BDIR || exit
rm -rf dokuwiki*
git clone git://github.com/splitbrain/dokuwiki.git dokuwiki
cd dokuwiki || exit
git checkout -b stable origin/stable
VERSION=`cat VERSION|awk '{print $1}'`
rm -rf .gitignore
rm -rf .git
rm -rf _test
rm -rf _cs
rm -f test.php
mkdir data/pages/playground
echo "====== PlayGround ======" > data/pages/playground/playground.txt
cd ..
mv dokuwiki dokuwiki-$VERSION
tar -czvf dokuwiki-$VERSION.tgz dokuwiki-$VERSION
echo "now upload: $BDIR/dokuwiki-$VERSION.tgz"
increase msg number in master (“release preparation”)
cherry pick bugfix commit in stable and old-stable
cherry pick “release preparation” commit in stable
Update VERSION file (append letter to date, starting with “a”) in stable and old-stable, commit named like the release.
tag the release in the git stable and old-stable branch
build new tarball of stable