12 Release Process
Benjamin Krein edited this page 2023-11-20 19:38:18 -05:00

These operations are performed on an Ubuntu 22.04 x86_64 PC. You'll need sudo access and plenty of hard disk space (20GB+ recommended) and memory (16GB recommended).

Required packages

sudo apt install git build-essentials protobuf-compiler libspdlog-dev libpcap-dev

Verify that your username and email are configured properly

# To see the current configuration
git config --global user.name
git config --global user.email

If you need to change the configuration, use the following;

git config --global user.name "Homer Simpson"
git config --global user.email homer.j@simpson.com

Update your local checkout and make sure its clean

cd ~/piscsi
git checkout develop
git pull
git reset --hard HEAD

Update the version number

vim cpp/shared/piscsi_version.cpp

Change piscsi_minor_version to the current month number. Ex: April would be 4

Change piscsi_patch_version to the release number for that month. Typically, this will be 1, unless you're doing multiple releases in a month.

Check that your changes are syntactically correct

make all -j4 -C ./cpp

Commit the version and create the tag

git commit -m "Update revision number for release" ./cpp/shared/piscsi_version.cpp
# Note that each of the tag name's numbers should be 2 characters
# Ex: the tag name for release 23.2.1 would be "v23.02.01 
git tag -a v23.04.01 -m "PiSCSI version 23.04.01"
git push origin v23.04.01

Update the version number on the develop branch

git checkout develop
vim cpp/shared/piscsi_version.cpp

Change piscsi_minor_version to the NEXT month number. Ex: In April, we would set this to "5" for May

Change piscsi_patch_version to -1. This is a flag that this is a development version.

Check that your changes are syntactically correct

make all -j4 -C ./cpp
# If this succeeds, commit to the develop branch
git commit -m "Update version for next development version" cpp/shared/piscsi_version.cpp
git push origin develop

Update main with the new release

git checkout main
git pull
# Merge in the new tag
git merge v23.04.01
# Check that there are no conflicts (there shouldn't be)
git status
git push origin main

Draft the release notes

Navigate to https://github.com/PiSCSI/piscsi/releases and click Draft New Release.

Choose the new tag you just created. image

The release name should be <> <> Release. Example: February 2023 Release

Set the previous release, then generate the release notes

image

Set this as a pre-release, then publish

image

Review the release notes

Have the development team review the release notes as appropriate.

Copy the first few sections of the previous release notes and update as appropriate. Re-generate the translation statistics, etc.

To re-generate the translation statistics

cd ~/piscsi/python/web
./translation_updates.sh

Create the RPi Image

cd ~
git clone https://github.com/piscsi/piscsi-pi-gen
cd piscsi-pi-gen

Check out the branch that matches the RPiOS Release and architecture that you want to build an image for. At the time of writing, main is 32bit Bullseye, and arm64 64bit Bullseye.

To build with future RPiOS Releases, fetch the latest sources and branches from the mother pi-gen repo and adapt it for PiSCSI.

Edit/create a configuration file

vim config

And example configuration file follows. Make sure you update the first two lines with the new version/tag ID.

Modify RELEASE with the RPiOS Release that matches the current branch.

Remove the APT_PROXY option if you do not have a local AptCacher-NG instance set up. (The apt cacher NG will cache the apt packages to make subsequent builds go MUCH faster. However, it's not required) If you want to set one up, instructions are available in the Ubuntu documentation

IMG_NAME=PiSCSI-v23.11.01
GITHUB_REF=v23.11.01
TARGET_HOSTNAME=piscsi
ENABLE_SSH=1
LOCALE_DEFAULT=en_US.UTF-8
KEYBOARD_KEYMAP=us
KEYBOARD_LAYOUT="English (US)"
APT_PROXY=http://127.0.0.1:3142
RELEASE=bullseye
USE_QEMU=0
DISABLE_FIRST_BOOT_USER_RENAME=1
FIRST_USER_NAME=pi
FIRST_USER_PASS=raspberry

Install dependencies

See the pi-gen documentation for how to install of the dependencies to run this tool

Create the build

Stop the udisks2 service to improve your chances of the build succeeding

sudo systemctl stop udisks2.service
cd ~/piscsi-pi-gen
sudo ./build.sh

Watch the build process in case it asks you for a password. (Not sure if it still does that?)

When the build is done, the artifacts will be in ~/piscsi-pi-gen/deploy/

Upload the .zip and .info files to the release. (Note that the Github page may look unresponsive while uploading a large file)

Test the build

Review the release notes

Have the development team review the release notes as appropriate.