summaryrefslogtreecommitdiff
path: root/release_process.mdwn
diff options
context:
space:
mode:
authorDaniel Silverstone <dsilvers@digital-scurf.org>2017-02-04 09:41:13 +0000
committerDaniel Silverstone <dsilvers@digital-scurf.org>2017-02-04 09:41:13 +0000
commite7366bf41f68cfe07e9ea03fc4a398baecbae651 (patch)
tree5bb9c3cbe7eab7e70ff1ebd65d9de59a694762df /release_process.mdwn
downloadnetsurf-wiki-e7366bf41f68cfe07e9ea03fc4a398baecbae651.tar.gz
netsurf-wiki-e7366bf41f68cfe07e9ea03fc4a398baecbae651.tar.bz2
Initial conversion from MediaWiki, 20170204
Diffstat (limited to 'release_process.mdwn')
-rw-r--r--release_process.mdwn273
1 files changed, 273 insertions, 0 deletions
diff --git a/release_process.mdwn b/release_process.mdwn
new file mode 100644
index 0000000..9243a7c
--- /dev/null
+++ b/release_process.mdwn
@@ -0,0 +1,273 @@
+[[!meta title="Release Process"]]
+[[!meta author="DanielSilverstone"]]
+[[!meta date="2016-11-19T12:05:07Z"]]
+
+
+[[!toc]]
+
+Releasing a new version of NetSurf and libraries
+------------------------------------------------
+
+firstly the libraries and tool sources should be created (only if they
+need an update)
+
+Order to release components in (if they require releasing)
+
+buildsystem is first and has an extra step
+
+Then libraries using the core buildsystem
+
+- libwapcaplet
+- libparserutils
+- libcss
+- libhubbub
+- libdom
+- libnsbmp
+- libnsgif
+- librosprite
+- libnsfb
+- libsvgtiny
+- nsgenbind
+- libutf8proc
+- libnsutils
+- libnspsl
+- libpencil
+- librufl
+
+NetSurf itself is last
+
+Release of the buildsystem
+--------------------------
+
+The buildsystem follows exactly the same process as below except there
+is an additional step
+
+Because this is the buildsystem and provides the makefiles for all the
+other source builds you must go to the CI server and ensure the
+source-buildsystem job has successfully run and produced output in
+<http://ci.netsurf-browser.org/builds/sources/>
+
+Release for projects using buildsystem
+--------------------------------------
+
+We perform all releases from git simply by pushing a
+release/<version number> tag
+
+Before creating the tag you should do some basic checks
+
+check the COMPONENT\_VERSION in the root Makefile matches the version
+number you are releasing, if not change it and commit it so it does.
+
+Any files that should not be put in the distribution archive must be
+placed in the .gitattributes file, as a minimum it should contain
+attributes for the .gitignore and gitattributes files e.g.
+
+`.gitignore export-ignore`
+`.gitattributes export-ignore`
+
+in your clone do
+
+`git branch -vv`
+
+ensure the top commit looks right and is what you want to tag, for extra
+paranoia check the .git/config to ensure the origin is the correct
+server. You do **not** have to tag from master, for example if this is a
+maintenance release of an old edition and you are tagging from a branch
+etc. just **ensure** you are where you want the release to be.
+
+Create the tag with
+
+`git tag -s -m 'Official Release' release/`<version number>
+
+Ensure the version number in the tag matches the component version.
+
+Now run
+
+`make dist`
+
+if you get
+
+Makefile:45: \*\*\* Component Version "1.0" and GIT tag version "1.1" do
+not match. Stop.
+
+you did not get the tag and version numbers lined up, go back, remove
+your local tag with
+
+`git tag -d release/`<bad version>
+
+and try again
+
+when you get a buildsystem-1.0.tar.gz (with appropriate version number)
+well done
+
+Check the contents of the tar are what you intended to release and
+adjust if not (obviously you will need to remove your local tag and
+start over with fresh commits.
+
+Next do a dry run push
+
+`git push -n --tags`
+
+ensure this shown the correct repo and the release tag something like
+
+`[gitano] Welcome to the NetSurf Gitano instance.`
+`To `[`ssh://nsgit@git.netsurf-browser.org/buildsystem.git`](ssh://nsgit@git.netsurf-browser.org/buildsystem.git)
+` * [new tag]         release/1.0 -> release/1.0`
+
+If that verifies as correct
+
+`git push --tags`
+`git push`
+
+and the release tag is pushed, too late now so be careful and check!
+
+Releasing NetSurf
+-----------------
+
+ensure you are at the commit from which you want to create the release
+
+`git branch -vv`
+
+Remember that if you are releasing X.Y then amiga calls that X.Y+1 so
+don't be confused and do update amiga stuff.
+
+check the resources for the frontends you are releasing are up to date
+
+- copyright years
+- amiga/pkg/netsurf.readme and amiga/pkg/netsurf\_os3.readme
+- windows/res/installer.nsi
+
+create a branch release/<version number> and switch to it
+
+`git branch release/3.1`
+`git checkout release/3.1`
+
+update desktop/version.c to something like
+
+`#include "testament.h"`
+
+`const char * const netsurf_version = "3.6 (25th April 2016)";`
+`const int netsurf_version_major = 3;`
+`const int netsurf_version_minor = 6;`
+
+update amiga/version.c along the same lines
+
+once you are sure everything is correct, committed push it to the repo
+
+`git push origin release/3.1`
+
+finally tag the branch for release
+
+`git tag -s -m 'Official Release' release/`<version number>
+
+Next do a dry run push
+
+`git push -n --tags`
+
+ensure this shown the correct repo and the release tag something like
+
+`[gitano] Welcome to the NetSurf Gitano instance.`
+`To `[`ssh://nsgit@git.netsurf-browser.org/buildsystem.git`](ssh://nsgit@git.netsurf-browser.org/buildsystem.git)
+` * [new tag]         release/3.1 -> release/3.1`
+
+If that verifies as correct
+
+`git push --tags`
+
+and the release tag is pushed, too late now so be careful and check!
+
+Next the branch must be merged back to master.
+
+`git checkout master`
+`git merge -s ours heads/release/3.1`
+
+Then edit desktop/version.c ready for the next release cycle
+
+`git add desktop/version.c`
+`git commit -m 'update version info for next development cycle'`
+
+finally push master
+
+`git push origin master`
+
+Please do ensure you \*thoroughly\* check your work at each step as
+mistakes are hard to fix once pushed.
+
+Releasing the all source
+------------------------
+
+clone the all repo
+
+`git clone `[`ssh://nsgit@git.netsurf-browser.org/netsurf-all.git`](ssh://nsgit@git.netsurf-browser.org/netsurf-all.git)
+
+ensure ther submodules are initialised
+
+`git submodule init`
+
+output will be something like
+
+`Submodule 'buildsystem' () registered for path 'buildsystem'`
+`Submodule 'libcss' () registered for path 'libcss'`
+`Submodule 'libdom' () registered for path 'libdom'`
+`Submodule 'libhubbub' () registered for path 'libhubbub'`
+`Submodule 'libnsbmp' () registered for path 'libnsbmp'`
+`Submodule 'libnsfb' () registered for path 'libnsfb'`
+`Submodule 'libnsgif' () registered for path 'libnsgif'`
+`Submodule 'libparserutils' () registered for path 'libparserutils'`
+`Submodule 'libpencil' () registered for path 'libpencil'`
+`Submodule 'librosprite' () registered for path 'librosprite'`
+`Submodule 'librufl' () registered for path 'librufl'`
+`Submodule 'libsvgtiny' () registered for path 'libsvgtiny'`
+`Submodule 'libwapcaplet' () registered for path 'libwapcaplet'`
+`Submodule 'netsurf' () registered for path 'netsurf'`
+`Submodule 'nsgenbind' () registered for path 'nsgenbind'`
+
+ensure the submodules are updated
+
+`git submodule update`
+
+for each submodule listed above the correct revision must be set. A
+utility target is provided in the makefile
+
+`make release-checkout`
+
+This obtains the most recent release tag for each submodule and checks
+it out, equivalent to:
+
+`cd buildsystem`
+`git checkout origin/HEAD`
+`git checkout $(git describe --abbrev=0 --match="release/*" )`
+`cd ..`
+
+once each submodule has been updated in the top level netsurf-all
+directory. The modified submodules should then be added ready for commit
+
+`git add buildsystem libcss libdom libhubbub libnsbmp libnsfb libnsgif libparserutils librosprite libsvgtiny libwapcaplet netsurf nsgenbind`
+`git commit -m 'Update for 3.1 release'`
+
+finally tag the branch for release
+
+`git tag -s -m 'Official Release' release/`<version number>
+
+Next do a dry run push
+
+`git push -n --tags`
+
+ensure this shown the correct repo and the release tag something like
+
+`[gitano] Welcome to the NetSurf Gitano instance.`
+`To `[`ssh://nsgit@git.netsurf-browser.org/buildsystem.git`](ssh://nsgit@git.netsurf-browser.org/buildsystem.git)
+` * [new tag]         release/3.1 -> release/3.1`
+
+If that verifies as correct
+
+`git push --tags`
+
+and the release tag is pushed, too late now so be careful and check!
+
+Bugtracker
+----------
+
+The netsurf release version must be marked as released in mantis and the
+next development version added if its not already present
+