Home

Awesome

release-tool

Build Status

A release tool for generating detailed release notes

The release-tool utility is maintained as a separate repository to reduce duplication across the various release branches of the main containerd/containerd repository where it is used to cut release notes and project data to aid release engineers.

The release tool is designed to be project agnostic and useful for any project.

How to use

Run release-tool from the project root directory with the release commit checked out. Prepare and provide a template file to generate the release notes, it is recommended that each release have its own file containing the release notes.

Command line

Use the following command to generate release notes for v1.0.0 using the recommended location for the template. The release notes will be outputted to stdout.

$ release-tool -l -d -n -t v1.0.0 ./releases/v1.0.0.toml

This command uses the -n, or dry run mode, option to generate the release notes to stdout rather than create the release tag.

Also -l converts the changelog commits to markdown style links to Github.

To create the tag, use git tag with the output from the previous command

git tag --cleanup=whitespace -s v1.0.0 -F /tmp/release-tool-ouput

Use --cleanup=whitespace to prevent the git tag command from treating # generated for the markdown as comments.

NOTE: It is recommended to use dry run mode, review the output, then create the tag in git. Currently the tool does not support creating the tag, so -n is required.

Template

The template file uses TOML, here is a basic example

# commit to be tagged for new release
commit = "HEAD"

# project_name is used to refer to the project in the notes
project_name = "release tool"

# github_repo is the github project, only github is currently supported
github_repo = "containerd/release-tool"

# match_deps is a pattern to determine which dependencies should be included
# as part of this release. The changelog will also include changes for these
# dependencies based on the change in the dependency's version.
match_deps = "^github.com/(containerd/[a-zA-Z0-9-]+)$"

# previous release of this project for determining changes
previous = "v0.9.0"

# pre_release is whether to include a disclaimer about being a pre-release
pre_release = false

# preface is the description of the release which precedes the author list
# and changelog. This description could include highlights as well as any
# description of changes. Use markdown formatting.
preface = """\
This is the first release"""

Project details

release-tool is a containerd sub-project, licensed under the Apache 2.0 license. As a containerd sub-project, you will find the:

information in our containerd/project repository.