Prepare a new release
Continuous Delivery can complete the current manual from beginning to end, but it’s not configured/implemented yet and manual actions are required #786 . The document shouldn’t be abandoned on CD arrival, it should document CD behaviour instead.
Release check list๐
After a new release is build and uploaded the following list of actions must be performed to assure the the uploaded release is fully functional.
- Only release branch are packaged, not bugfix or feature branch. Currently only one release branch exists:
release-0.8 - Release version must be bumped.
- Troubleshooting allowed kernel version must be bumped. Also, please other requirements
- Changelog must be updated.
- Check for changes Wiki Page 1, Wiki Page 2
- Actual commit in the release branch used to build the package must be marked by a git tag with name equal to release version.
- Clean environment must be used to build the package.
- Build the package
- Assure that the package is fully functional: package has the correct version number, it can be successfully installed, and once installed, it normally operates (better is to run functional tests against the built artefact).
- Upload the package to Nexus ant GitHub releases page.
Instructions๐
Prerequisites๐
Install clean Ubuntu 24.04 LTS and update to the last version.
Clone the tempesta and tempesta-ci repositories:
git clone https://github.com/tempesta-tech/tempesta.git -b <release-branch>
git clone https://github.com/tempesta-tech/tempesta-ci.git
[TODO]: Configure digital signatures to sign packages after build. At the moment packages are unsigned.
Packaging Linux kernel๐
Just run release script:
tempesta-ci/scripts/kernel_release.py --tempesta_path /home/ubuntu/tempesta --release-version 0.8.0 --token <access_token>
- create access_token with owner Tempesta-Tech and request the access (token might be accepted by organization owner)
This script will create a new release on https://github.com/tempesta-tech/linux-5.10.35-tfw/releases.
We have Jenkins job to create release page for kernel repositories.
Consult the manual in the separate repo (deprecated).
Packaging Tempesta๐
-
Install the required kernel version:
sudo ./tempesta-ci/scripts/kernel_installer.py --make_default --install-only --tempesta_path=/home/ubuntu/tempesta
-
Disable graphical terminal and reboot the system for a new kernel version:
echo 'GRUB_TERMINAL="serial console"' | sudo tee -a /etc/default/grub sudo update-grub sudo reboot
- Check the kernel version –
uname -r, it should have a similar pattern –5.10.35.tfw-669c591 - Install build dependencies for Tempesta FW.
-
Build Tempesta FW:
cd tempesta make
-
Configure packager information:
export DEBEMAIL="info@tempesta-tech.com" export DEBFULLNAME="Tempesta Technologies, Inc."
- Change kernel version in
pkg/debian/controlforlinux-headersandlinux-imageto current kernel version (fromuname -r) -
Install build requirements:
sudo apt-get install devscripts build-essential lintian debhelper -y
-
Create symlink and run build:
ln -s pkg/debian/ debian debuild -us -uc cd ..
The binary package will be saved as tempesta-fw_<VERSION>_amd64.deb. Other files are required to distribute the TemestaFW through software repository.
Testing the built artefacts๐
Run installation of built package tempesta-fw_
sudo apt install ./tempesta-fw_0.8.0_amd64.deb
Install clean Ubuntu 24.04 system and follow the installation guide. Assure that the correct version is installed and it’s operational.
Uploading to Nexus๐
Navigate to Nexus and upload builded tempesta-fw package via Upload component button.
If you receive a network error and, after 5 retries, still canโt upload the build, check the upload request details in the browserโs network tab. Then, use those details to make a cURL request and upload directly from the virtual machine used to build it.
Uploading to GitHub๐
Imagine, that version 0.5.4 is build for release-0.7 branch.
Mark the commit used for the build and build the package.
git tag 0.7.0
git push --tags
Once package is built and tested, create a new release on GitHub, tag, used to publish the release must follow the scheme: <distro-version>/<release_version>:
ubuntu-22/0.7.0
Tick Pre-Release gauge for alpha releases.