further NEWS/todos
[elektra-initiative:libelektra.git] / doc / todo / RELEASE
1 This describes what to do for an release!
2
3
4 == Cleanup ==
5
6
7 For the first few steps you have to work on branch master:
8  git-checkout master
9
10 If any feature branch is left over merge it:
11  git-merge --no-ff feature
12
13 And now commit everything:
14  git-commit -a
15
16 Clean up the mess left over:
17  git-clean -df
18
19
20 == Check ==
21
22 Try to move as much as possible from this manual checks to build-server!
23
24 Before release is done, following must be checked:
25 - Everything blue on http://community.markus-raab.org:8080/
26 - Version number in CMakeLists.txt
27 - if tests cases do not remove existing config
28 - if external compilation works
29 - if API/ABI compatible
30 - using installed debian packages, run:
31  - executeable tests
32  - API/ABI compatible by running old tests
33  - shell tests
34
35
36 == Preperation ==
37
38 Set environment variable VERSION to current version to make the
39 commands below work for copy&paste:
40
41  export VERSION=0.x.y
42
43
44 == Source Package ==
45
46 Now lets merge that to the release branch:
47  git-checkout release
48  git-merge --no-ff master
49  git-commit --amend -m "Release $VERSION"
50
51 Build tar.gz and tag version and make hashsum:
52  cd ~build && make source-package
53
54 TODO: write script for that (+ merge with source-package)
55 Unpack + compile (with all available plugins) + test those sources (using valgrind!):
56 tar xvzf elektra-$VERSION.tar.gz && mkdir build && cd build && cmake -DPLUGINS=ALL ../elektra-$VERSION && make && ctest -T memcheck
57
58 Now copy the packages to ftp (stay in same folder):
59  cp ~build/elektra-$VERSION.tar.gz ~elektra-ftp/releases
60  cp ~build/elektra-$VERSION.tar.gz.hashsum ~elektra-ftp/releases
61
62 Commit elektra-ftp to gitorious:
63  cd ~elektra-ftp
64  git-add releases/elektra-$VERSION.tar.gz
65  git-add releases/elektra-$VERSION.tar.gz.hashsum
66  git-commit -a -m "Release $VERSION"
67
68
69 == Documentation ==
70
71 And the API docu (stay in same folder):
72  mkdir ~elektra-doc/api/$VERSION/
73  cd ~build && make doc && cp -ra doc/html doc/latex doc/man ~elektra-doc/api/$VERSION/
74
75 Symlink current to latest version and add everything:
76  cd ~elektra-doc/api/ && rm current && ln -s $VERSION current && git-add current $VERSION
77
78
79
80 == Debian Package ==
81
82
83 Build deb:
84  git-checkout debian
85  git-merge --no-ff release
86
87  dch --newversion $VERSION-1 "New upstream version."
88  git-add debian/changelog
89  git-commit -m "Debian Package $VERSION-1"
90  git-tag $VERSION-1
91  cp ~elektra-ftp/releases/elektra-$VERSION.tar.gz ~elektra/elektra_$VERSION.orig.tar.gz
92  git-buildpackage -rfakeroot -k00B86A15 -sa
93  reprepro --ignore=wrongdistribution include wheezy elektra_$VERSION-1_amd64.changes
94
95
96 Now install package + run some basic commands:
97  kdb --version
98
99 Debian packages in chroot + publish in reprepro
100
101 You might want to run lintian:
102  lintian -EI --color=auto --pedantic elektra_$VERSION-1_i386.changes
103
104 And also run piuparts:
105  sudo piuparts elektra_$VERSION-1_i386.changes
106
107 And run adequate (combined with piuparts or after installation)
108
109
110 == Publish ==
111
112
113 Now we know that everything worked well:
114
115 Now push release branch with tags to gitorious:
116  cd ~e && git-pull && git-push && git-push --tags
117
118 Push elektra-ftp to gitorious:
119  cd ~elektra-ftp && git-push && git-push gitorious
120
121 Push elektra-doc to gitorious:
122  cd ~elektra-doc && git-commit -a -m "$VERSION Release" && git-push
123
124
125 == Announce ==
126
127 Write NEWS for new release (do not forget to add links where to download release):
128  editor doc/NEWS
129
130 Finally increment version number in CMakeLists.txt:
131  editor CMakeLists.txt
132  git-commit -m "Ready for release $VERSION" CMakeLists.txt
133
134 Maybe also generate a ChangeLog?
135  git log --first-parent master > ChangeLog
136
137
138 Finally check links and send out mail to list
139 (Personal notice: see also NOTIFY)