diff options
author | Daniel Silverstone <dsilvers@digital-scurf.org> | 2017-02-04 09:41:13 +0000 |
---|---|---|
committer | Daniel Silverstone <dsilvers@digital-scurf.org> | 2017-02-04 09:41:13 +0000 |
commit | e7366bf41f68cfe07e9ea03fc4a398baecbae651 (patch) | |
tree | 5bb9c3cbe7eab7e70ff1ebd65d9de59a694762df /release_process.mdwn | |
download | netsurf-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.mdwn | 273 |
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 + |