Document the release process steps
This commit is contained in:
		
							parent
							
								
									b9d18216ef
								
							
						
					
					
						commit
						985b0bbc48
					
				
							
								
								
									
										135
									
								
								RELEASE.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										135
									
								
								RELEASE.md
									
									
									
									
									
										Normal file
									
								
							| @ -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. | ||||||
|  | 
 | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user