FEX/docs/ReleaseProcess.md
Ryan Houdek bc2840e4a7 FEXRootFSFetcher: Update and fix xxhash file hashing
The final tail of the file reading was incorrect, so our hashing was
"correct" but it was using stale data from the previous block size read.

Noticed this while wiring up the CI rootfs fetching since the hashing is
a lot simpler there.

Now instead of reading a tail, just attempt to read the full block size
and use the resulting data size instead. Confirmed it matches expected
results now.

In the process we are going to need to update hyperlinks and hashes
anyway, change the hash to XXH3 so it is faster to run.
2022-06-09 20:20:43 -07:00

4.2 KiB

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 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

Termux package update steps

@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_XXH3.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 <image.sqsh> /<image.sqsh>
  • Upload the new RootFS_links_XXH3.txt

    • Lives in the root of the bucket
    • b2 upload-file RootFS_links_XXH3.txt RootFS_links_XXH3.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