Skip to content

new release

Francesco Montorsi edited this page Nov 15, 2024 · 45 revisions

How to release a new version (and avoid to forget something)

IMPORTANT: despite the presence of build steps below, the GCC compiler version used is not important; the reason is that the cmonitor_collector binary is just used to regen the examples. The binary that ends up in the RPMs generated by COPR is generated using native GCC compiler for each distribution supported/enabled. The binary used for the docker image instead uses the GCC version of the Alpine distribution.

General release procedure

These steps should be run from a machine where cmonitor does build fine. But they do not require any specific Linux distro/flavor.

  1. Bump versions in Constants.mk

  2. Regenerate example JSONs and HTMLs: from top-level folder

make conan_install
make -C collector PROMETHEUS_SUPPORT=1
make -C collector cmonitor_musl
make docker_image # the docker image will be used to regen examples
make -C examples regen_all_example_jsons    # takes about 20minutes to complete
make -C examples all 
  1. Git push.

  2. From top-level folder run

make docker_image  # to regen the docker image to push in the DockerHub with updated version number
docker login && make docker_push
make docker_image DOCKER_LATEST=1 # to regen the docker image to push in the DockerHub with "latest" tag
docker login && make docker_push DOCKER_LATEST=1

COPR release procedure

Log on COPR page https://copr.fedorainfracloud.org/coprs/f18m/cmonitor/packages/ and then click "Rebuild" next to both packages "cmonitor-collector" and "cmonitor-tools". The integration where COPR will rebuild the RPMs on every single checkin has been disabled because that means removing from the RPM repo any release that was done roughly more than 10 checkins ago.

The reason is that, despite the COPR build page showing a long history, the actual RPM repository contains only the last 10 builds or so (check e.g. https://download.copr.fedorainfracloud.org/results/f18m/cmonitor/epel-7-x86_64/).

Ubuntu PPA release procedure

From an Ubuntu/Debian machine, from a non-root user account, setup all required tools and keys. This can be a VM or an Ubuntu instance running on physical HW. Docs for debian packaging can be found at debian website

  1. Prepare the changelog in a text file

  2. About GPG keys please see online guides to help with GPG setup.

apt install debhelper devscripts

# import GPG key required later on
gpg --import private-key-stored-in-safe-place.key 
gpg --list-keys
gpg --edit-key {KEY HEX CODE PRINTED BY PREVIOUS COMMAND} trust quit # choose 5
  1. git clone the cmonitor repo:
git clone https://github.com/f18m/cmonitor.git
cd cmonitor
  1. then you can actually start the upload procedure:
make clean
make deb_clean
make deb_new_changelog     # to update the debian/changelog file following very strict Debian rules
make deb_local_test        # try building the binary pkg locally for test
make deb_source_pkg_for_upload    # upload a source-only package that Ubuntu PPA will build itself
cd ..
dput ppa:francesco-montorsi/cmonitor cmonitor_ ... 

Finally go to the PPA page, choose "View package details" and choose "Copy package" to copy the binaries of the package released for "Bionic" to all other distributions. From a quick test it looks like the binary is compatible will all Ubuntu versions without the need to rebuild it on each distribution!

Final Steps

  1. go to Releases page and hit "Draft new release" and choose as new tag the version 1.X

Clone this wiki locally