Changes between Initial Version and Version 1 of ReleaseProcedure


Ignore:
Timestamp:
Aug 15, 2007, 10:52:26 AM (17 years ago)
Author:
Jari Häkkinen
Comment:

Creating release procedure page. This version is stolen from svndigest. Refs ticket:656

Legend:

Unmodified
Added
Removed
Modified
  • ReleaseProcedure

    v1 v1  
     1[[PageOutline(1-3,Contents,inline)]]
     2
     3= Publishing a release =
     4
     5These instructions cover how to release minor and patch releases in a
     6project that uses trac/subversion for revision control and project
     7management. How to release major releases is not covered yet since we
     8have not done that (with the exception of the first release). Release
     9numbering follows the normal convention of major.minor.patch and the
     10APR (see http://apr.apache.org/versioning.html) guidelines for
     11releases are used.
     12
     13The main development is performed in the trunk branch of the
     14repository. A new release branch is created for each minor release
     15from the trunk and patch releases are snapshots of the minor release
     16branch. This implies that patch work is performed in the minor release
     17branch, and changes made release branch is transferred to the trunk
     18every time a new patch release is made. Remember, patch work should be
     19limited to bug fixes and important fixes only leaving development of
     20new features and designs to the trunk branch.
     21
     22Releases should only be performed by an appointed member of the team,
     23the Release Manager, and merges should be performed by a Merge
     24Manager. Of course, one team member can be both managers, thus
     25becoming the Release and Merge Manager.
     26
     27
     28== Minor release procedure ==
     29
     30This section describes what to do when publishing a minor release.
     31
     32 1. Make sure that all commits are performed into to the trunk, such
     33    as bumping version number(s) ([source:trunk/configure.ac configure.ac]),
     34    acknowledge contributions ([source:trunk/THANKS THANKS]), update
     35    files [source:trunk/NEWS NEWS] and [source:trunk/ChangeLog ChangeLog].
     36    [[br]][[br]]
     37  i. Update version number in [source:trunk/configure.ac configure.ac]. Locate and change the
     38     below line
     39{{{
     40AC_INIT([svndigest],[A.B],[jari.at.thep.lu.se])
     41}}}
     42  i. Update [source:trunk/THANKS THANKS]. Remember, ego and vanity is the currency of open
     43     source projects. Well, there are other reasons for open source
     44     projects but [source:trunk/THANKS THANKS] is for boosting peoples' ego. [[br]][[br]]
     45  i. Set the date for the new release in [source:trunk/NEWS NEWS]
     46{{{
     47version A.B (released 26 June 2007)
     48}}}
     49    Make sure that the items in [source:trunk/NEWS NEWS] cover the new features of the
     50    release. [[br]][[br]]
     51  i. Finalize the links to trac in [source:trunk/ChangeLog ChangeLog]
     52{{{
     53version A.B:
     54        - http://trac.thep.lu.se/trac/svndigest/log/trunk?rev=N&stop_rev=M
     55        - http://trac.thep.lu.se/trac/svndigest/query?milestone=A.B&order=id
     56}}}
     57     where M should be current HEAD+2 (2 more commits are needed before release).
     58     [[br]][[br]]
     59  i. Commit changes to the repository, `svn ci -m "Preparing release A.B"`
     60     [[br]][[br]]
     61 1. Update copyright statements with commands
     62{{{
     63./bootstrap
     64make all
     65make check
     66./bin/svndigest --copyright
     67}}}
     68 Examine the updates and commit changes with `svn ci -m "updating copyright statements"`[[br]][[br]]
     69 1. Needless to say, make sure that the program is in a state to be
     70    released; make sure that all the tests pass, test the distribution
     71    package, and perform all other release tests you think is
     72    appropriate:
     73{{{
     74./bootstrap
     75make check
     76make distcheck
     77}}}
     78 1. Create a tag using a one liner like
     79{{{
     80svn copy http://lev.thep.lu.se/repository/svndigest/trunk \
     81    http://lev.thep.lu.se/repository/svndigest/tags/A.B \
     82    -m "Tagging version A.B"
     83}}}
     84 1. Update the version list in Trac using the
     85    [http://trac.thep.lu.se/trac/svndigest/admin trac-admin tool].
     86    [[br]][[br]]
     87 1. Create a distribution package:
     88{{{
     89svn co http://lev.thep.lu.se/repository/svndigest/tags/A.B A.B_dist
     90cd A.B_dist
     91./bootstrap
     92./configure [OPTION]...
     93make dist
     94}}}
     95    Attach the new package to the DownloadPage.  Remove `A.B_dist`
     96    directory. [[br]][[br]]
     97 1. Update DownloadPage and [wiki:WikiStart WikiStart][[br]][[br]]
     98  i. Update the section '''Latest stable release''' to reflect the new
     99     version, that is [[br]][[br]]
     100   * Change the version number [[br]][[br]]
     101   * Update the package link to the new version [[br]][[br]]
     102   * Update link to NEWS file to `source:tags/A.B/NEWS` [[br]][[br]]
     103  i. In section '''svndigest ''latest release'' ''' update link to
     104     `[source:tags/A.B/NEWS NEWS]` and modify the svn command to
     105{{{
     106svn checkout http://lev.thep.lu.se/repository/svndigest/tags/A.B svndigest-A.B
     107}}}
     108  i. In section '''svndigest ''stable'' ''' update link to
     109     `[milestone:A.B.1 A.B.1]` and modify the svn command to
     110{{{
     111svn checkout http://lev.thep.lu.se/repository/svndigest/branches/A.B-stable svndigest-A.B
     112}}}
     113  i. In section '''svndigest ''devel'' ''' update link to `[milestone:A.B+1 A.B+1]`.[[br]][[br]]
     114  i. On WikiStart update links `[source:tags/A.B/doc/readme.txt Manual]`, `[source:tags/A.B/NEWS NEWS]`, and `[source:tags/A.B/INSTALL Install]`, .[[br]][[br]]
     115 1. Create a new minor branch using a one liner like
     116{{{
     117svn copy http://lev.thep.lu.se/repository/svndigest/tags/A.B \
     118    http://lev.thep.lu.se/repository/svndigest/branches/A.B-stable \
     119    -m "New minor version A.B branch"
     120}}}
     121 1. Prepare the minor branch for the first patch release [[br]][[br]]
     122  i. Check out the new minor branch
     123{{{
     124svn co http://lev.thep.lu.se/repository/svndigest/branches/A.B-stable A.B
     125}}}
     126  i. Update version number in `configure.ac`. Locate and change the
     127     below line
     128{{{
     129AC_INIT([svndigest],[preA.B.1],[jari.at.thep.lu.se])
     130}}}
     131  i. Add an entry in `NEWS`
     132{{{
     133version A.B.1 (released DATE)
     134}}}
     135     The date is set when version A.B.1 is released. [[br]][[br]]
     136  i. Add an entry in `ChangeLog`
     137{{{
     138version A.B.1:
     139        - http://trac.thep.lu.se/trac/svndigest/log/trunk?rev=[M+1]&stop_rev=HEAD
     140        - http://trac.thep.lu.se/trac/svndigest/query?milestone=A.B.1&order=id
     141}}}
     142  i. Commit changes to the repository,
     143     `svn ci -m "Changes for future release A.B.1"` [[br]][[br]]
     144 1. Prepare the trunk for the next minor release [[br]][[br]]
     145  i. Update version number in `configure.ac`. Locate and change the
     146     below line
     147{{{
     148AC_INIT([svndigest],[preA.[B+1]],[jari.at.thep.lu.se])
     149}}}
     150  i. Add an entry in `NEWS`
     151{{{
     152version A.[B+1] (released DATE)
     153}}}
     154     The date is set when version A.[B+1] is released. [[br]][[br]]
     155  i. Add an entry in `ChangeLog`
     156{{{
     157version A.[B+1]:
     158        - http://trac.thep.lu.se/trac/svndigest/log/trunk?rev=HEAD&stop_rev=M+1
     159        - http://trac.thep.lu.se/trac/svndigest/query?milestone=A.[B+1]&order=id
     160}}}
     161  i. Commit changes to the repository,
     162     `svn ci -m "Changes for future release A.[B+1]"` [[br]][[br]]
     163 1. Close the [http://trac.thep.lu.se/trac/svndigest/roadmap milestone]
     164    associated with the release and replace `head` with appropriate revision. Add a new milestone as needed (with log link).
     165
     166
     167
     168== Patch release procedure ==
     169
     170This section describes what to do when publishing a patch release A.B.C.
     171
     172 1. Make sure that all commits are performed into to the branch, such
     173    as bumping version number(s) (`configure.ac`), acknowledge
     174    contributions (`THANKS`), update files `NEWS` and
     175    `ChangeLog`. [[br]][[br]]
     176  i. Update version number in `configure.ac`. Locate and change the
     177     below line
     178{{{
     179AC_INIT([svndigest],[A.B.C],[jari.at.thep.lu.se])
     180}}}
     181  i. Update `THANKS`. [[br]][[br]]
     182  i. Set the date for the new release in `NEWS`
     183{{{
     184version A.B.C (released 27 June 2007)
     185}}}
     186    Make sure that the items in `NEWS` cover all important bug fixes of the
     187    release. [[br]][[br]]
     188  i. Finalize the links to trac in `ChangeLog`
     189{{{
     190version A.B.C:
     191        - http://trac.thep.lu.se/trac/svndigest/log/branches/A.B-stable?rev=N&stop_rev=M
     192        - http://trac.thep.lu.se/trac/svndigest/query?milestone=A.B.C&order=id
     193}}}
     194  where `N` is given by
     195{{{
     196$ svn update
     197N-2
     198}}}
     199  and `M` should have been set at previous release.[[br]][[br]]
     200  i. Commit changes to the repository, `svn ci -m "Preparing release A.B.C"`
     201     [[br]][[br]]
     202 1. Update copyright statements with commands
     203{{{
     204./bootstrap
     205make all
     206make check
     207./bin/svndigest --copyright
     208}}}
     209 Examine the updates and commit changes with `svn ci -m "updating copyright statements"`.[[br]][[br]]
     210 1. Needless to say, make sure that the program is in a state to be
     211    released; make sure that all the tests pass, test the distribution
     212    package, and perform all other release tests you think is
     213    appropriate:
     214{{{
     215./bootstrap
     216make check
     217make distcheck
     218}}}
     219 1. Create a tag using a one liner like
     220{{{
     221svn copy http://lev.thep.lu.se/repository/svndigest/branches/A.B-stable \
     222    http://lev.thep.lu.se/repository/svndigest/tags/A.B.C \
     223    -m "Tagging version A.B.C"
     224}}}
     225 1. Update the version list in Trac using the
     226    [http://lev.thep.lu.se/trac/svndigest/admin trac-admin tool].
     227    [[br]][[br]]
     228 1. Create a distribution package:
     229{{{
     230svn co http://lev.thep.lu.se/repository/svndigest/tags/A.B.C A.B.C_dist
     231cd A.B.C_dist
     232./bootstrap
     233./configure [OPTION]...
     234make dist
     235}}}
     236    Attach the new package to the DownloadPage. Remove `A.B.C_dist`
     237    directory. [[br]][[br]]
     238 1. Update DownloadPage and [wiki:WikiStart WikiStart][[br]][[br]]
     239  i. Update the section '''Latest stable release''' to reflect the new
     240     version, that is [[br]][[br]]
     241   * Change the version number [[br]][[br]]
     242   * Update the package link to the new version [[br]][[br]]
     243   * Update link to NEWS file to `source:tags/A.B.C/NEWS` [[br]][[br]]
     244  i. In section '''svndigest ''latest release'' ''' update link to
     245     `[source:tags/A.B.C/NEWS NEWS]` and modify the svn command to
     246{{{
     247svn checkout http://lev.thep.lu.se/repository/svndigest/tags/A.B.C svndigest-A.B.C
     248}}}
     249  i. In section '''svndigest ''stable'' ''' update link to
     250     `[milestone:A.B.[C+1] A.B.[C+1]]`.[[br]][[br]]
     251  i. On WikiStart update links `[source:tags/A.B/doc/readme.txt Manual]`, `[source:tags/A.B/NEWS NEWS]`, and `[source:tags/A.B/INSTALL Install]`, .[[br]][[br]]
     252 1. Prepare the minor branch for the next patch release [[br]][[br]]
     253  i. Update version number in `configure.ac`. Locate and change the
     254     below line
     255{{{
     256AC_INIT([svndigest],[preA.B.[C+1]],[jari.at.thep.lu.se])
     257}}}
     258  i. Add an entry in `NEWS`
     259{{{
     260version A.B.[C+1] (released DATE)
     261}}}
     262     The date is set when version A.B.[C+1] is released. [[br]][[br]]
     263  i. Add an entry in `ChangeLog`
     264{{{
     265version A.B.[C+1]:
     266        - http://trac.thep.lu.se/trac/svndigest/log/branches/A.B-stable?rev=HEAD&stop_rev=[M+1]
     267        - http://trac.thep.lu.se/trac/svndigest/query?milestone=A.B.[C+1]&order=id
     268}}}
     269  i. Commit changes to the repository,
     270     `svn ci -m "Changes for future release A.B.[C+1]"` [[br]][[br]]
     271 1. Merge the patch release into the trunk. To avoid confusion and
     272    minimize the risk of loosing fixes, this step is only performed by
     273    the Merge Master. [[br]][[br]]
     274  i. Checkout a pristine version of the trunk.
     275{{{
     276svn checkout http://lev.thep.lu.se/repository/svndigest/trunk trunk_merge
     277}}}
     278  i. Merge changes into trunk. In this example the diffence between a
     279     minor release tag and the first patch release tag is merged into
     280     the trunk WC
     281{{{
     282cd trunk_merge
     283svn merge http://lev.thep.lu.se/repository/svndigest/tags/A.B \
     284          http://lev.thep.lu.se/repository/svndigest/tags/A.B.1
     285}}}
     286  i. Resolve all conflicts. Run tests and perform all other
     287     appropriate tests to make sure that the merge does not create
     288     havoc. [[br]][[br]]
     289  i. Commit changes to the trunk branch.
     290{{{
     291svn commit -m "Merged patch release A.B.1 to the trunk. Delta A.B.1 - A.B"
     292}}}
     293 1. Close the milestone associated with the release and replace `head` with appropriate revision in log link. Add a new
     294    milestone as needed (with a log link).