-
Notifications
You must be signed in to change notification settings - Fork 1.3k
F´ Release Guide
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.
The access a user requires to release F´ includes:
- Administrator access to this repo, fprime
- Administrator access to the tools repo, fprime-tools
- Administrator access to the GDS repo, fprime-gds
- Administrator access to the fprime-fpp repo, fprime-fpp
- Administrator access to the fpp repo, fpp
- PyPi ownership of the following repos: fprime, fprime-tools, fprime-gds, and fprime-pip
In order to perform an F´ release the following tools are strictly required.
- Linux (e.g. Ubuntu) and macOS machine running x86_64 architecture
- GraalVM Community Edition (https://www.graalvm.org/) with native-image installed (
gu install native-image
). -
java
andsbt-1.5.5
- Python packages installed via
pip
: setuptools_scm
twine
- F´ requirements
git
,python
, etc. - Github login and access as documented above.
WARNING: all tools must be on PATH.
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 using Github Release
- Select Releases and Draft new release
- Type in description of release
- Choose a tag and type in desired tag
- Save as Draft
- 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
- Edit release on Github (click pencil icon)
- Attach artifacts and select:
native-fpp-Darwin-x86_64.tar.gz
from macOS build - Attach artifacts and select:
native-fpp-Linux-x86_64.tar.gz
from Linux build - Publish/Update Release
WARNING: used below is the same tag used above when releasing FPP tools.
- 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>
- Build source distribution package. WARNING:
git clean -xdf .
above must have been run first. Only build sourcesdist
.
python3 setup.py sdist
- Publish source distribution package. WARNING: this cannot be undone
twine upload dist/*
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.
- Release fprime-tools using Github Release
- Select Releases and Draft new release
- Type in description of release
- Choose a tag and type in desired tag
- Checkout new fprime-tools tag
git fetch upstream
git checkout <tag>
git clean -xdf .
- Build source and binary distribution package. WARNING:
git clean -xdf .
above must have been run first.
python3 setup.py sdist bdist_wheel
- Publish source and binary distributions. WARNING: this cannot be undone
twine upload dist/*
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.
- Release fprime-gds using Github Release
- Select Releases and Draft new release
- Type in description of release
- Choose a tag and type in desired tag
- Checkout new fprime-gds tag
git fetch upstream
git checkout <tag>
git clean -xdf .
- Build source and binary distribution package. WARNING:
git clean -xdf .
above must have been run first.
python3 setup.py sdist bdist_wheel
- Publish source and binary distributions. WARNING: this cannot be undone
twine upload dist/*
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.
- Updated
fprime/setup.py
to include updated versions of the three packages published withtwine
above - Create PR for step 1 and merge into
devel
- Create PR from
devel
intomaster
and get it merged. - Repeat step 3 until CI passes and
master
is stable - Ensure clean
master
anddevel
branches by deleting local copies. This will scrub outstanding changes onmaster
anddevel
branches.
git fetch upstream
git checkout upstream/master
git branch -d master devel
- 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>"
- Tag master, and rebase
devel
. WARNING: only use rebase in this step. Usingmerge
orpull
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
- Push coherent F´ repository state
git push upstream <tag> master devel
- Release through Github UI selecting tag created here.
- 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
- Publish source and binary distributions. WARNING: this cannot be undone
twine upload dist/*
Hurrah!
Update the F´ submodule and release each of the tutorials and reference repositories