Docs: Adds documentation about the FEX monthly release process

Walks through all the steps required for a monthly release.
This commit is contained in:
Ryan Houdek 2022-01-02 21:02:51 -08:00
parent a45bc7598c
commit 7e5c561849

89
docs/ReleaseProcess.md Normal file
View File

@ -0,0 +1,89 @@
# FEX tagged version (release) process
A FEX tagged version happens near the start of each month.
The tagged versioning is `FEX-<YYMM>` with the month being the current month.
If a tagged version was being done on `Sun, 02 Jan 2022` then the FEX version would be FEX-2201
There are multiple locations that need to be updated during a release
* Github tagged release
* Github releases page
* fex-emu.org blog post
* https://launchpad.net/~fex-emu/+archive/ubuntu/fex Ubuntu PPA
* @FEX_Emu twitter account
* Optional: Update the rootfs images
## Github Steps
* Check out the commit that will be the branch
$ git checkout upstream/main
* Make local main branch be the selected commit
$ git branch -D main
$ git checkout -b main
* Run the release script
$ Scripts/generate_release.sh
* Push the branches upstream
* This requires administrative push rights
* Both the tag and the main branch needs to be committed
$ git push upstream $CURRENT
$ git push upstream main
## Github releases page Steps
* Requires administrative rights
* Go to https://github.com/FEX-Emu/FEX/releases
* Click Draft a new release
* Copy and paste the tagged changelog in to the draft release markdown
* This was generated from the generate_release.sh script
* Clean the markdown to a desired level of combining and ordering
* Fairly trivial cleanups, it's more just a developer focused changelog
* Click publish release
## fex-emu.org blog post steps
* clone https://github.com/FEX-Emu/fex-emu.org
* Copy the previous post from the _posts/ folder to a new markdown file
* Ensure correct date format in filename
* Copy github release pages markdown in to this
* Easy to forget areas:
* Title text section
* See Release notes top section, links to github release tag
* See detailed changelog at the bottom, linking to github raw revision comparison
* Short blurb in the top paragraph if desired
* push new md file to the repo. Either in direct push or PR
* Jekyll will automatically regenerate the website with a github action
* Verify that the post shows up on the site at fex-emu.org
## Launchpad PPA steps
Follow the steps in: https://github.com/FEX-Emu/FEX-ppa/blob/main/README_ppa.md
* Requires PPA GPG key signing access
* Wait the 20-30 minutes for Ubuntu PPA to build and publish the binaries
## @FEX_Emu twitter account steps
* Requires @FEX_Emu twitter account access
* Create a tweet with some small blurb/sizzle text about some relevant changes in this tagged version
* Link to the fex-emu.org blog post about the change
## RootFS image updating
* This doesn't typically need to be done on a monthly basis
* This lives in https://github.com/FEX-Emu/RootFS
* Follow the Build_Data file's information for how to generate an image using `build_image.py`
* This gives a squashfs image for the rootfs
* Use FEXRootFSFetcher <image.sqsh> to generate the xxhash for the image
* Update `https://rootfs.fex-emu.org/file/fex-rootfs/RootFS_links.txt` with the new rootfs image and hash
* This currently lives in a private FEX-Emu backblaze bucket with cloudflare servicing it.
* Never publically give the direct backblaze link to the file. Will cause BW costs to skyrocket
* Always pass through cloudflare
* Upload new image to Backblaze using the b2 upload tool
* b2 upload-file <bucketname> <image.sqsh> <Image folder name>/<image.sqsh>
* Upload the new RootFS_links.txt
* Lives in the root of the bucket
* b2 upload-file <bucketname> RootFS_links.txt RootFS_links.txt
* Once uploaded it should propagate immediately
* Might be worth thinking about the coherency problem of updating the hash versus image independently if overwriting an image
* Need to be careful about it to not break anyone in the process of downloading an image