diff --git a/RELEASE.md b/RELEASE.md new file mode 100644 index 00000000..2a0dac3b --- /dev/null +++ b/RELEASE.md @@ -0,0 +1,135 @@ +How to release a new version of Lorax for Fedora +================================================ + +Install `tito` and `podman` on your system. + +Optionally patch `tito` to support signing the tags with your gpg key. If you +do this your key should be available on the public gpg keyservers so that +people can verify your signature. + +The upstream `tito` PR can be found [here](https://github.com/dgoodwin/tito/pull/328). + +You will need to have permission to push to the lorax repository, and to the +Fedora dist-git repository. If your FAS name isn't listed on the [lorax package +page](https://src.fedoraproject.org/rpms/lorax/) members list then you need to +contact one of the project admins and ask to be added. + + +Run the tests +------------- +You can run the tests using `podman` instead of `docker` by running this from the +top level of the checked-out lorax repo: + + DOCKER=podman RUN_TESTS="ci test_cli" make test-in-docker + +If they fail, fix them and submit a PR :) + +You can also run the cockpit CI tests locally: + + make vm + ./test/check-cli + +See the `./test/README.md` documentation for more details about the cockpit CI +tests. + + +Update the documentation +------------------------ +If there are changes to the code that would effect the documentation you should +rebuild the `sphinx` based documents: + + DOCKER=podman make docs-in-docker + git add docs/ + git commit -m "New lorax documentation - x.y" + +The documentation is accessible [from here](https://weldr.io/lorax), and the +source for those pages is stored in the `gh-pages` branch of lorax. I have a +second `lorax` repository checked out that I use for updating the `gh-pages` +branch: + + git clone git@github.com:weldr/lorax.git lorax-gh-pages + cd lorax-gh-pages + git checkout gh-pages + git pull + +And then I rsync the new documentation over from the current lorax build +directory: + + rsync -aP --exclude .git --exclude .nojekyll ../lorax/docs/html/ ./ + git add . + git commit -m "Add lorax x.y documentation" + git push + +After a few minutes the online version of the documentation should appear. + +Tag and build the release tar.gz +-------------------------------- +We use the `tito` tool to handle incrementing the version number and updating +the `lorax.spec` file changelog section using the git commits since the last +tag. `tito tag` will open an editor, allowing you to edit the changelog. Make +sure it looks clean, entries starting with '- ' and no wrapped lines: + + tito tag + git push --follow-tags origin + +Build the release tarball: + + tito build --tgz + +The release tarball will be placed into /tmp/tito/lorax-x.y.z.tar.gz + + +Build the Fedora lorax package +------------------------------ +The first time you do this you need to clone the Fedora dist-git repository +[from here](https://src.fedoraproject.org/rpms/lorax/) using your ssh key: + +git clone URL lorax-fedora + +After that the steps are the same each time, make sure your `lorax-fedora` repo +is up to date: + + git co master + git pull + +Copy the `lorax.spec` that tito modified from your `lorax` project repo: + + cp /path/to/lorax/repo/lorax.spec . + +Make sure you have a current fedoraproject kerberos ticket, you can use +`kswitch -p FEDORAPROJECT.ORG` to switch to it if you need to, or `kinit` to +get one. See [the Fedora +wiki](https://fedoraproject.org/wiki/Infrastructure/Kerberos) for more details +and debugging tips. + +Upload the new release's tar to build system, making sure you pick the right +one. The `/tmp/tito/` directory is only cleared out when you reboot, so it may +have several versions in there: + + fedpkg new-sources /tmp/tito/lorax-x.y.tar.gz + +Update the changelog. Yes, fedpkg changes the formatting and it is annoying. +Make sure the lines start with '- ' and that any wrapped lines are un-wrapped. +Usually the committer email address is what will get bumped to the next line: + + fedpkg clog + vim clog + +Add all the updated files, make sure nothing has been forgotten (lorax.spec, sources, .gitignore): + + git add -u + git status (just to be sure you have all the files added ) + git commit -F clog + git show + +Examine the commit with care. Make sure the sources have changed, that the NVR +is correct, and that it contains the %changelog + +At this point anything can be changed, either reset the checkout to the last +commit and start over, or fix the problems and squash the changes together into +the commit you just made. There should be one commit per-release. + + fedpkg push && fedpkg build + +If there are errors in the build, check the logs in koji at the link provided by fedpkg. +