Release infrastructure for Kubernetes and related components
Shell Go Python Dockerfile
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
build Point to latest google-cloud-sdk. Apr 10, 2018
debian Update copyright Aug 1, 2018
defs Update deb.bzl Aug 1, 2018
docs Update release-notes.md Aug 1, 2018
gcb Revert "Revert "Make use of new k8s.gcr.io alias throughout"" Apr 10, 2018
lib Update common.sh Aug 1, 2018
rpm Update kubelet.service Aug 1, 2018
toolbox Update URL for release-notes-draft.md. Dec 18, 2017
.gitignore Typo fix: commited->committed Apr 30, 2018
BUILD.bazel Golang implementation of release note generating tool. Nov 14, 2017
CONTRIBUTING.md Add CONTRIBUTING.md Jul 18, 2018
Gopkg.lock Add vendor dependency for Golang implementation of release note tool. Nov 14, 2017
Gopkg.toml Add vendor dependency for Golang implementation of release note tool. Nov 14, 2017
LICENSE Initial commit Mar 23, 2016
OWNERS create initial OWNERS file Jul 6, 2018
README.md Add CONTRIBUTING.md Jul 18, 2018
SECURITY_CONTACTS Add `SECURITY_CONTACTS` Jul 9, 2018
WORKSPACE Golang implementation of release note generating tool. Nov 14, 2017
anago Typo fix: explaination -> explanation Jun 11, 2018
branchff Fix typo "ectd" -> "etcd" Aug 15, 2018
changelog-update Typo fix in returned message: udpate->update May 25, 2018
code-of-conduct.md Add code-of-conduct.md Dec 20, 2017
find_green_build Workflow state, re-entrancy, GCB support. Nov 13, 2017
gcbmgr fix typo when passing through --rc flag to gcbmgr Jun 20, 2018
prin Remove google specifics. Fix some minor issues. Oct 11, 2016
push-build.sh Prevent release script from creating GCS buckets or modifying bucket … Apr 2, 2018
release-notify Set appropriate BUCKETs for announcement meta details. Mar 27, 2018
relnotes Update URL for release-notes-draft.md. Dec 18, 2017
script-template Workflow state, re-entrancy, GCB support. Nov 13, 2017

README.md

Kubernetes Release

This repo contains the tooling and infrastructure to create Kubernetes releases from the kubernetes/kubernetes main repository.

Intro

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.

Primary Tools

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

gcbmgr

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.

anago

The main driver for created staged builds and releases. This is what runs inside GCB after a job is submitted using gcbmgr.

branchff

The branch fast-forward tool used between after a new branch as been created.

See the [Playbook](ADD LINK) for more details.

Common Workflows

Alpha release

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>

Official release

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>

Release with --nomock

The above example workflows run mock versions of the release. To produce a fully deployed and announced release, add --nomock to the command line.

All Tools

  • 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

Release Notes Gathering

# 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

Building Linux Packages

For Debian

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.

For Fedora, CentOS, Red Hat Enterprise Linux

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.

Contributing

Please see CONTRIBUTING.md for instructions on how to contribute.