Skip to content

Prepare a new release

Roman edited this page Apr 22, 2025 · 14 revisions

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.
  • Changelog must be updated.
  • 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>

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

  1. Install the required kernel version:
    sudo ./tempesta-ci/scripts/kernel_installer.py --make_default --install-only --tempesta_path=/home/ubuntu/tempesta
  2. 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
  3. Check the kernel version - uname -r, it should have a similar pattern - 5.10.35.tfw-669c591
  4. Install build dependencies for TempestaFW.
  5. Build TempestaFW:
    cd tempesta
    make
  6. Configure packager information:
    export DEBEMAIL="info@tempesta-tech.com"
    export DEBFULLNAME="Tempesta Technologies, Inc."
  7. Change kernel version in pkg/debian/control for linux-headers and linux-image to current kernel version (from uname -r)
  8. Install build requirements:
    sudo apt-get install devscripts build-essential lintian debhelper -y
  9. 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__amd64.deb on clean Ubuntu24

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

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.

Clone this wiki locally