Release procedure

General assumption: You are working on branch maintenance, the next version is a bug fix release. For feature releases it is slightly different.

Check before

  • Make sure the current state is really final ;) You can test most of the steps described here locally before doing it real.

  • Check the upgrade functions in intelmq/lib/upgrades.py.

  • Close the milestone on GitHub and move any open issues to the next one.

  • docs/user/installation.rst: Update supported operating systems.

Documentation

These apply to all projects:

  • CHANGELOG.MD and

  • NEWS.MD: Update the latest header, fix the order, remove empty sections and (re)group the entries if necessary.

  • debian/changelog: Insert a new section for the new version with the tool dch or update the version of the existing last item if yet unreleased. Don’t forget the revision after the version number!

IntelMQ

  • intelmq/version.py: Update the version.

Eventually adapt the default log levels if necessary. Should be INFO for stable releases.

IntelMQ API

  • intelmq_api/version.py: Update the version.

IntelMQ Manager

  • intelmq_manager/version.py: Update the version.

  • intelmq_manager/static/js/about.js: Update the version.

Commit, push, review and merge

Commit your changes in a separate branch, the final commit message should start with REL:. Push and create a pull request to maintenance and after that from maintenance to master. Someone else should review the changes. Eventually fix them, make sure the REL: is the last commit, you can also push that one at last, after the reviews.

Why a separate branch? Because if problems show up, you can still force-push to that one, keeping the release commit the latest one.

Tag and release

Tag the commit with git tag -s version HEAD, merge it into master, push the branches and the tag. The tag is just a.b.c, not prefixed with v (that was necessary only with SVN a long time ago…).

Go to https://github.com/certtools/intelmq/tags and enter the release notes (from the CHANGELOG) for the new tag, then it’s considered a release by GitHub.

Tarballs and PyPI

  • Build the source and binary (wheel) distribution:

rm -r build/
python3 setup.py sdist bdist_wheel
  • Upload the files including signatures to PyPI with e.g. twine: twine upload -u __token__ -p $APITOKEN dist/intelmq… (or set the API Token in .pypirc).

Documentation

Got to the version settings on readthedocs and activate build for the new version.

Packages

We are currently using the public Open Build Service instance of openSUSE: http://build.opensuse.org/project/show/home:sebix:intelmq

First, test all the steps first with the unstable-repository and check that at least installations succeed.

  • Create the tarballs with the script create-archives.sh.

  • Update the dsc and spec files for new filenames and versions.

  • Update the .changes file

  • Build locally for all distributions.

  • Commit.

Docker Image

Releasing a new Docker image is very easy.

  • Clone IntelMQ Docker Repository with git clone https://github.com/certat/intelmq-docker.git --recursive as this repository contains submodules

  • If the intelmq-docker repository is not updated yet, use git pull –recurse-submodules to pull the latest changes from their respective repository.

  • Run ./build.sh, check your console if the build was successful.

  • Run ./test.sh - It will run nosetests3 with the exotic flag. All errors/warnings will be displayed.

  • Change the build_version in publish.sh to the new version you want to release.

  • Change the namespace variable in publish.sh.

  • If no error/warning was shown, you can release with ./publish.sh.

  • Update the DockerHub ReadMe and add the latest version.

  • Commit and push the updates to the intelmq-docker repository``

Announcements

Announce the new version at the mailinglists intelmq-users, intelmq-dev. For bigger releases, probably also at IHAP, Twitter, etc. Ask your favorite social media consultant.

Prepare new version

Increase the version in intelmq/version.py and declare it as alpha version. Add the new version in intelmq/lib/upgrades.py. Add a new entry in debian/changelog with dch -v [version] -c debian/changelog.

Add new entries to CHANGELOG.md and NEWS.md.

IntelMQ

For CHANGELOG.md:

### Configuration

### Core

### Development

### Data Format

### Bots
#### Collectors

#### Parsers

#### Experts

#### Outputs

### Documentation

### Packaging

### Tests

### Tools

### Contrib

### Known issues

And for NEWS.md:

### Requirements

### Tools

### Data Format

### Configuration

### Libraries

### Postgres databases

IntelMQ API

An empty section of CHANGELOG.rst.

IntelMQ Manager

For CHANGELOG.md:

### Pages

#### Landing page

#### Configuration

#### Management

#### Monitor

#### Check

### Documentation

### Third-party libraries

### Packaging

### Known issues

And an empty section in the NEWS.md file.