This repo contains the tooling and infrastructure to create Kubernetes releases from the kubernetes/kubernetes main repository.
There are several scripts and helpers in this repository a release manager will find useful when managing all kinds of releases (alpha, beta, official, rc) across branches.
Most tools in this repo run by default in mock mode to allow for ease in development and testing.
The tools also include a familiar *nix-style man
page as the header of the file, accessed via the command-line via -man
.
Ex.
$ gcbmgr -man
Stage and release via GCB (Google Cloud Builder). This is the main entry point for release managers for producing releases in the cloud. All release types can be staged and later released using this method.
The main driver for creating staged builds and releases. This is what runs
inside GCB after a job is submitted using gcbmgr
.
The branch fast-forward tool used between after a new branch as been created.
See the [Playbook](ADD LINK) for more details.
Stage it
$ gcbmgr stage master
Release it (The complete invocation below is output at the end of the staging log)
$ gcbmgr release master --buildversion=<staged version>
Announce it (The complete invocation below is output at the end of the release log)
$ release-notify <release version>
Stage it
$ gcbmgr stage release-1.10 --official
Release it (The complete invocation below is output at the end of the staging log)
$ gcbmgr release release-1.10 --buildversion=<staged version>
Announce it (The complete invocation below is output at the end of the release log)
$ release-notify <release version>
The above example workflows run mock versions of the release. To produce
a fully deployed and announced release, add --nomock
to the command line.
- gcbmgr : GCB manager - find status and initiate builds
- anago : Release Tool
- branchff : Fast-forward branching helper
- find_green_build : Ask Jenkins for a good build to use
- relnotes : Scrape github for release notes (See below for more info)
- prin : What tags/releases is my PR IN?
- changelog-update : Update CHANGELOG.md version entries by rescanning github for text and label changes
- push-build.sh : Push a developer (or CI) build up to GCS
- script-template : Generate a script template in the kubernetes/release ecosystem
# get details on how to use the tool
$ relnotes -man
$ cd /kubernetes
# Show release notes from the last release on a branch to HEAD
$ relnotes
# Show release notes from the last release on a specific branch to branch HEAD
$ relnotes --branch=release-1.10
# Show release notes between two specific releases
$ relnotes v1.10.0..v1.10.1 --branch=release-1.10
You can build the deb packages in a Docker container like this:
docker build --tag=debian-packager debian
docker run --volume="$(pwd)/debian:/src" debian-packager
The build runs for a while, after it's done you will find the output in debian/bin
.
You can build the rpm packages in a Docker container with:
cd rpm
./docker-build.sh
Resulting rpms, and a pre-generated yum repository will be generated in rpm/output/x86_64.
Please see CONTRIBUTING.md for instructions on how to contribute.