Skip to content

F´ Release Guide

Thomas Boyer-Chammard edited this page Nov 22, 2023 · 9 revisions

This document will record the steps necessary to perform an F´ release. This will include all the steps so that it is done correctly, in the right order, and captures the important details. This can be done in parts by multiple users if necessary.

Required Access

The access a user requires to release F´ includes:

  1. Administrator access to this repo, fprime
  2. Administrator access to the tools repo, fprime-tools
  3. Administrator access to the GDS repo, fprime-gds
  4. Administrator access to the fprime-fpp repo, fprime-fpp
  5. Administrator access to the fpp repo, fpp
  6. PyPi ownership of the following repos: fprime, fprime-tools, fprime-gds, and fprime-pip

Required Tools

In order to perform an F´ release the following tools are strictly required.

  1. Linux (e.g. Ubuntu) and macOS machine running x86_64 architecture
  2. GraalVM Community Edition (https://www.graalvm.org/) with native-image installed (gu install native-image).
  3. java and sbt-1.5.5
  4. Python packages installed via pip:
  5. setuptools_scm
  6. twine
  7. F´ requirements git, python, etc.
  8. Github login and access as documented above.

WARNING: all tools must be on PATH.

FPP Release

Run this section if the FPP tools need to be updated for a given release. This section can be skipped if FPP will remain at the current tag/version.

Release FPP Tools with Native Image Builds

  1. Release fpp using Github Release
  2. Select Releases and Draft new release
  3. Type in description of release
  4. Choose a tag and type in desired tag
  5. Save as Draft
  6. Build Graal Native Images. Must be performed on all development architecture (currently Linux and macOS)
git fetch upstream
git checkout <tag>
cd fpp/compilers
./release
  1. Edit release on Github (click pencil icon)
  2. Attach artifacts and select: native-fpp-Darwin-x86_64.tar.gz from macOS build
  3. Attach artifacts and select: native-fpp-Linux-x86_64.tar.gz from Linux build
  4. Publish/Update Release

Release FPP Installation Package

WARNING: used below is the same tag used above when releasing FPP tools.

  1. Update fpp-pip version to match FPP tools version
git fetch upstream
git checkout upstream/devel
git clean -xdf .
git tag -a -m "updating FPP tools version to <tag>" <tag>
git push upstream <tag>
  1. Build source distribution package. WARNING: git clean -xdf . above must have been run first. Only build source sdist.
python3 setup.py sdist
  1. Publish source distribution package. WARNING: this cannot be undone
twine upload dist/*

Release F´ Tools

Run this section if the F´ tools need to be released. This section can be skipped if F´ tools will remain at the current tag/version.

  1. Release fprime-tools using Github Release
  2. Select Releases and Draft new release
  3. Type in description of release
  4. Choose a tag and type in desired tag
  5. Checkout new fprime-tools tag
git fetch upstream
git checkout <tag>
git clean -xdf .

  1. Build source and binary distribution package. WARNING: git clean -xdf . above must have been run first.
python3 setup.py sdist bdist_wheel
  1. Publish source and binary distributions. WARNING: this cannot be undone
twine upload dist/*

Release F´ GDS

Run this section if the F´ GDS need to be released. This section can be skipped if F´ GDS will remain at the current tag/version.

  1. Release fprime-gds using Github Release
  2. Select Releases and Draft new release
  3. Type in description of release
  4. Choose a tag and type in desired tag
  5. Checkout new fprime-gds tag
git fetch upstream
git checkout <tag>
git clean -xdf .

  1. Build source and binary distribution package. WARNING: git clean -xdf . above must have been run first.
python3 setup.py sdist bdist_wheel
  1. Publish source and binary distributions. WARNING: this cannot be undone
twine upload dist/*

Release F´

This process will create and F´ release. Ensure that all necessary above releases have been accomplished. Ensure that all PRs have been merged into devel with the exception of those made in this section.

  1. Updated fprime/setup.py to include updated versions of the three packages published with twine above
  2. Create PR for step 1 and merge into devel
  3. Create PR from devel into master and get it merged.
  4. Repeat step 3 until CI passes and master is stable
  5. Ensure clean master and devel branches by deleting local copies. This will scrub outstanding changes on master and devel branches.
git fetch upstream
git checkout upstream/master
git branch -d master devel
  1. Update FALLBACK_VERSION on master and commit
git checkout upstream/master
git checkout -b master
-- change version --
git commit -m "bumping fallback version to <tag>"
  1. Tag master, and rebase devel. WARNING: only use rebase in this step. Using merge or pull will destroy F´.
git checkout master
git tag -a -m "fprime release <tag>`
git checkout upstream/devel
git checkout -b devel
git rebase upstream/master
  1. Push coherent F´ repository state
git push upstream <tag> master devel
  1. Release through Github UI selecting tag created here.
  2. Build source and binary distribution package. WARNING: git clean -xdf . above must have been run first.
git checkout <tag>
python3 setup.py sdist bdist_wheel
  1. Publish source and binary distributions. WARNING: this cannot be undone
twine upload dist/*

Hurrah!

Release tutorial and reference repositories

Update the F´ submodule and release each of the tutorials and reference repositories