aboutsummaryrefslogtreecommitdiff
path: root/doc/release-process.txt
blob: ff00b121fc9245d37a38652bdf5bd7cd2aed4e72 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
* update (commit) version in sources
  src/serialize.h
  share/setup.nsi

* update (commit) version in OSX app bundle
 contrib/Bitcoin.app/Contents/Info.plist

  * CFBundleShortVersionString should have value like 0.3.23
  * CFBundleVersion should have value like 323

* tag version in git

  $ git tag -a v0.3.23

* write release notes.  git shortlog helps a lot:

  $ git shortlog --no-merges v0.3.22..

* create source-only archive

  $ git archive --format=tar --prefix=bitcoin-0.3.23/ HEAD | \
  	gzip -9c > ~/tmp/bitcoin-0.3.23-src.tar.gz 

* perform gitian builds

  * From a directory containing the bitcoin source, gitian-builder and bitcoin-gitian-sigs
  $ export VERSION=0.3.23
  $ cd ./gitian-builder
  $ ./bin/gbuild --commit bitcoin=v$VERSION ../bitcoin/contrib/gitian-descriptors/gitian.yml
  $ ./bin/gsign --signer (your gitian key, ie bluematt, sipa, etc) --release $VERSION --destination ../bitcoin-gitian-sigs/ ../bitcoin/contrib/gitian-descriptors/gitian.yml
  $ cd build/out
  $ zip bitcoin-$VERSION-linux-gitian.zip *
  $ mv bitcoin-$VERSION-linux-gitian.zip ../../
  $ ./bin/gbuild --commit bitcoin=v$VERSION ../bitcoin/contrib/gitian-descriptors/gitian-win32.yml
  $ ./bin/gsign --signer (your gitian key, ie bluematt, sipa, etc) --release $VERSION-win32 --destination ../bitcoin-gitian-sigs/ ../bitcoin/contrib/gitian-descriptors/gitian-win32.yml
  $ cd build/out
  $ zip bitcoin-$VERSION-win32-gitian.zip *
  $ mv bitcoin-$VERSION-win32-gitian.zip ../../
 
  Build output expected:
  1. linux 32-bit and 64-bit binaries + source (bitcoin-$VERSION-linux-gitian.zip)
  2. windows 32-bit binary, installer + source (bitcoin-$VERSION-win32-gitian.zip)
  3. Gitian signatures (in bitcoin-gitian-sigs/$VERSION[-win32]/(your gitian key)/

* repackage gitian builds for release as stand-alone zip/tar/installer exe

  * Windows .zip and setup.exe:
  $ mkdir bitcoin-$VERSION-win32
  $ cd bitcoin-$VERSION-win32
  $ unzip bitcoin-$VERSION-win32-gitian.zip
  $ mv bitcoin-$VERSION-win32-setup.exe ..
  $ cd ..; zip bitcoin-$VERSION-win32.zip bitcoin-$VERSION-win32

  * Linux .tar.gz:
  $ mkdir bitcoin-$VERSION-linux
  $ cd bitcoin-$VERSION-linux
  $ unzip bitcoin-$VERSION-linux-gitian.zip
  $ cd ..; tar czvf bitcoin-$VERSION-linux.tar.gz bitcoin-$VERSION-linux

* perform Mac build
  * From the bitcoin source dir
  $ cd contrib
  $ ./create_osx_dmg.sh
  $ mv Bitcoin.dmg bitcoin-$VERSION-macosx.dmg

* upload source and builds to SF

* create SHA1SUMS for builds, and PGP-sign it

* update bitcoin.org version

* update forum version

* update wiki

* update wiki download links

* release gitian-signed gitian archives

  * Collect enough gitian signatures to meet minimum_weight (see contrib/gitian-downloader/*-download-config)

  * From a directory containing bitcoin source, bitcoin-gitian-sigs and gitian zips
  $ export VERSION=0.3.23
  $ mkdir bitcoin-$VERSION-win32-gitian; cd bitcoin-$VERSION-win32-gitian
  $ unzip ../bitcoin-$VERSION-win32-gitian.zip
  $ mkdir gitian
  $ cp ../bitcoin/contrib/gitian-downloader/*.pgp ./gitian/
  $ for file in `ls ../bitcoin-gitian-sigs/$VERSION-win32/`; do
  $   cp ../bitcoin-gitian-sigs/$VERSION-win32/$file/bitcoin-build.assert ./gitian/$file-build.assert
  $   cp ../bitcoin-gitian-sigs/$VERSION-win32/$file/bitcoin-build.assert.sig ./gitian/$file-build.assert.sig
  $ done
  $ zip bitcoin-$VERSION-win32-gitian.zip *
  $ cp bitcoin-$VERSION-win32-gitian.zip ../
  $ cd ..
  $ mkdir bitcoin-$VERSION-linux-gitian; cd bitcoin-$VERSION-linux-gitian
  $ unzip ../bitcoin-$VERSION-linux-gitian.zip
  $ mkdir gitian
  $ cp ../bitcoin/contrib/gitian-downloader/*.pgp ./gitian/
  $ for file in `ls ../bitcoin-gitian-sigs/$VERSION/`; do
  $   cp ../bitcoin-gitian-sigs/$VERSION/$file/bitcoin-build.assert ./gitian/$file-build.assert
  $   cp ../bitcoin-gitian-sigs/$VERSION/$file/bitcoin-build.assert.sig ./gitian/$file-build.assert.sig
  $ done
  $ zip bitcoin-$VERSION-linux-gitian.zip *
  $ cp bitcoin-$VERSION-linux-gitian.zip ../

  * Upload gitian zips to SF