Difference between revisions of "Projects/PIM/Akonadi/Release Howto"

< Projects‎ | PIM‎ | Akonadi
Jump to: navigation, search
(Step 3: Tarball Creation)
(My brain fails to remember this...)
 
(26 intermediate revisions by 3 users not shown)
Line 1: Line 1:
 
How to do a release of the Akonadi server? I ask that myself and then Tom every time I have to do it. So, finally document that here.
 
How to do a release of the Akonadi server? I ask that myself and then Tom every time I have to do it. So, finally document that here.
  
== Step 1: Changelog, NEWS, version number ==
+
== Step 0: Make sure all unit tests pass ==
  
Run the ''makechangelog'' script in the source directory (which either is trunk or ''branches/akonadi/<version>'' depending on if you are doing a major (pre-)release or a minor one):
+
Run make test every time before committing and especially before making a release to avoid the embarassing emails from Jenkins. Seriously, how hard is it to remember this?
  
<code bash>
+
== Step 1: Changelog, NEWS, version number ==
sh makechangelog
+
</code>
+
  
That will add all revisions since the last time to the ''ChangeLog'' file.
+
First, update the NEWS file. It should contain a high-level summary of the changes since the last release.
 +
To obtain the full log of all changes since the last release, run the following command or have a look in ''gitk'':
  
 +
<syntaxhighlight lang="bash">
 +
git log vx.y.(z-1)..
 +
</syntaxhighlight>
  
Next step is to update the NEWS file, run ''svn diff ChangeLog'' and summarize the changes for that.
+
Finally, update the version number in the top-level CMakeLists.txt and Mainpage.dox and commit/push all your changes.
 
+
 
+
Finally, update the version number in the top-level CMakeLists.txt and commit all your changes.
+
 
+
  
 
== Step 2: Tagging/Branching ==
 
== Step 2: Tagging/Branching ==
  
Tagging a major (pre-)release, i.e. a release from trunk is done with the following (server side and thus fast) ''svn'' command:
+
Tagging a major (pre-)release, i.e. a release from master is done with the following commands:
 
+
<code bash>
+
svn cp $SVNPROTOCOL://$SVNUSER@svn.kde.org/home/kde/trunk/kdesupport/akonadi $SVNPROTOCOL://$SVNUSER@svn.kde.org/home/kde/tags/akonadi/x.y.z
+
</code>
+
 
+
Obviously, replace protocol, username and version with appropriate values.
+
  
 +
<syntaxhighlight lang="bash">
 +
git checkout master
 +
git tag -a vx.y.z -m "Akonadi x.y.z"
 +
git push
 +
git push --tags
 +
</syntaxhighlight>
  
 
For a stable release, that is a release from a stable branch, the command looks like this:
 
For a stable release, that is a release from a stable branch, the command looks like this:
  
<code bash>
+
<syntaxhighlight lang="bash">
svn cp $SVNPROTOCOL://$SVNUSER@svn.kde.org/home/kde/branches/akonadi/x.y $SVNPROTOCOL://$SVNUSER@svn.kde.org/home/kde/tags/akonadi/x.y.z
+
git checkout x.y
</code>
+
git tag -a vx.y.z -m "Akonadi x.y.z"
 +
git push
 +
git push --tags
 +
</syntaxhighlight>
  
 
=== Creating a new stable branch ===
 
=== Creating a new stable branch ===
Line 39: Line 40:
 
A new stable branch is created by the following command:
 
A new stable branch is created by the following command:
  
<code bash>
+
<syntaxhighlight lang="bash">
svn cp $SVNPROTOCOL://$SVNUSER@svn.kde.org/home/kde/trunk/kdesupport/akonadi $SVNPROTOCOL://$SVNUSER@svn.kde.org/home/kde/branches/akonadi/x.y
+
git checkout -b x.y
</code>
+
# do modifications as described above
 +
git push origin x.y
 +
</syntaxhighlight>
  
 
Afterwards perform the following steps:
 
Afterwards perform the following steps:
* increment the version number in trunk
+
* increment the version number in master
* adapt the SVN url in the makechangelog script in the new branch
+
  
 
== Step 3: Tarball Creation ==
 
== Step 3: Tarball Creation ==
  
You need the tarball creation script from ''kdesdk'' for that.
+
Run the following command to create the tarball:
  
<code bash>
+
<syntaxhighlight lang="bash">
cd KDE/kdesdk/scripts/createtarball
+
git archive --format=tar --prefix=akonadi-x.y.z/ vx.y.z | bzip2 -9  > akonadi-x.y.z.tar.bz2
</code>
+
</syntaxhighlight>
  
Unfortunately, the ''createtarball'' script only works for modules in trunk, not for branches. So, you need the following minor patch for it:
+
== Step 4: Upload ==
  
<code diff>
+
Upload the tarball to ftp://upload.kde.org/incoming/, using e.g. the following command:
Index: create_tarball.rb
+
===================================================================
+
--- create_tarball.rb  (revision 1056922)
+
+++ create_tarball.rb  (working copy)
+
@@ -88,7 +88,7 @@
+
  
############# START #############
+
<syntaxhighlight lang="bash">
 +
ftp -u ftp://upload.kde.org/incoming/ akonadi-x.y.z.tar.bz2
 +
</syntaxhighlight>
  
-svnroot    = "#{svnbase}/trunk"
+
Afterward, create a KDE Sysadmin ticket at https://sysadmin.kde.org/tickets/ (department "download.kde.org") and fill in the following information in the form:
+svnroot    = "#{svnbase}/"
+
* Name of the tarball: akonadi-x.y.z.tar.bz2
kde_version  = `svn ls svn://anonsvn.kde.org/home/kde/tags/KDE | sort | tail -n1 | cut -d "/" -f1`.chomp
+
* SHA-256 sums for the tarball
#kde_version = '4.0.4'
+
* Intended destination is stable/akonadi/src/.
</code>
+
  
Next, edit ''config.ini'' to contain the following for releases from trunk:
+
Wait for the request to be processed (you'll get an email notification) and the mirrors to propagate the new file (~2h).
  
<code ini>
+
== Step 5: Bugzilla ==
[akonadi]
+
mainmodule  = trunk/kdesupport
+
submodule  = akonadi
+
wholeModule = yes
+
version    = x.y.z
+
translations= no
+
remove      = makechangelog
+
</code>
+
  
Note that release from trunk work without the patch, in this case you have to remove the ''trunk/'' prefix from the ''mainmodule'' entry.
+
Log into http://bugs.kde.org/, chose ''Edit Products -> Akonadi -> Add version'' and add the version you just released.
  
For releases from the branch, ''config.ini'' needs to contain the following:
+
== Step 6: Announcements ==
  
<code ini>
+
Update channel topic on #akonadi.
[akonadi]
+
mainmodule  = branches/akonadi
+
submodule  = x.y
+
wholeModule = yes
+
version    = x.y.z
+
translations= no
+
remove      = makechangelog
+
</code>
+
  
Then, run the ''create_tarball'' script:
+
TODO
 
+
<code bash>
+
./create_tarball.rb -u $SVNUSER -a akonadi
+
</code>
+
 
+
Add a ''-w'' there if you are using https instead of ssh to access subversion.
+
 
+
Wait a bit and check the tarball created in the current directory. Should be ''akonadi-x.y.z.tar.bz2''.
+
 
+
TODO: can we simplify this by e.g. using CPack?
+
 
+
== Step 4: Upload ==
+
 
+
Upload the tarball somewhere and notify Tom or Volker to move it to http://download.akonadi-project.org/ (unless you are one of those two, then upload directly).
+
 
+
== Step 5: Bugzilla ==
+
 
+
Log into http://bugs.kde.org/, chose ''Edit Products -> Akonadi -> Add version'' and add the version you just released.
+
  
== Step 6: Dirk ==
+
== Step 7: <s>Dirk</s>Albert ==
  
Finally, apologize to Dirk for being late again with the release ;-)
+
Finally, apologize to <s>Dirk</s>Albert for being late again with the release ;-)
  
 
[[Category:Akonadi]] [[Category:PIM]]
 
[[Category:Akonadi]] [[Category:PIM]]

Latest revision as of 13:53, 4 October 2013

How to do a release of the Akonadi server? I ask that myself and then Tom every time I have to do it. So, finally document that here.

Contents

[edit] Step 0: Make sure all unit tests pass

Run make test every time before committing and especially before making a release to avoid the embarassing emails from Jenkins. Seriously, how hard is it to remember this?

[edit] Step 1: Changelog, NEWS, version number

First, update the NEWS file. It should contain a high-level summary of the changes since the last release. To obtain the full log of all changes since the last release, run the following command or have a look in gitk:

git log vx.y.(z-1)..

Finally, update the version number in the top-level CMakeLists.txt and Mainpage.dox and commit/push all your changes.

[edit] Step 2: Tagging/Branching

Tagging a major (pre-)release, i.e. a release from master is done with the following commands:

git checkout master
git tag -a vx.y.z -m "Akonadi x.y.z"
git push
git push --tags

For a stable release, that is a release from a stable branch, the command looks like this:

git checkout x.y
git tag -a vx.y.z -m "Akonadi x.y.z"
git push
git push --tags

[edit] Creating a new stable branch

A new stable branch is created by the following command:

git checkout -b x.y 
# do modifications as described above
git push origin x.y

Afterwards perform the following steps:

  • increment the version number in master

[edit] Step 3: Tarball Creation

Run the following command to create the tarball:

git archive --format=tar --prefix=akonadi-x.y.z/ vx.y.z | bzip2 -9  > akonadi-x.y.z.tar.bz2

[edit] Step 4: Upload

Upload the tarball to ftp://upload.kde.org/incoming/, using e.g. the following command:

ftp -u ftp://upload.kde.org/incoming/ akonadi-x.y.z.tar.bz2

Afterward, create a KDE Sysadmin ticket at https://sysadmin.kde.org/tickets/ (department "download.kde.org") and fill in the following information in the form:

  • Name of the tarball: akonadi-x.y.z.tar.bz2
  • SHA-256 sums for the tarball
  • Intended destination is stable/akonadi/src/.

Wait for the request to be processed (you'll get an email notification) and the mirrors to propagate the new file (~2h).

[edit] Step 5: Bugzilla

Log into http://bugs.kde.org/, chose Edit Products -> Akonadi -> Add version and add the version you just released.

[edit] Step 6: Announcements

Update channel topic on #akonadi.

TODO

[edit] Step 7: DirkAlbert

Finally, apologize to DirkAlbert for being late again with the release ;-)


This page was last modified on 4 October 2013, at 13:53. This page has been accessed 6,490 times. Content is available under Creative Commons License SA 3.0 as well as the GNU Free Documentation License 1.2.
KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V.Legal