[[!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/` 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/ 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/ 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!