summaryrefslogtreecommitdiff
path: root/release/corebuildsystem.mdwn
blob: 70e3d4389e873bc90907f48d74ee5845b574605d (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
[[!meta title="Releasing Core Buildsystem Components"]]
[[!meta author="VincentSanders"]]
[[!meta date="2020-05-23T10:15:07Z"]]

# Release process 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.
    Counting objects: 1, done.
    Writing objects: 100% (1/1), 800 bytes | 0 bytes/s, done.
    Total 1 (delta 0), reused 0 (delta 0)
    To ssh://nsgit@git.netsurf-browser.org/libutf8proc.git
     * [new tag]         release/1.3.1-3 -> release/1.3.1-3

If that verifies as correct

    git push --tags
    git push

and the release tag is pushed, too late now so be careful and check!