Feature Release Process

This document describes the process for creating a major or minor feature release of Cilium.

On Freeze date

  1. Fork a new release branch from master:

    git checkout master; git pull origin master
    git checkout -b v1.2
    git push
  2. Protect the branch using the GitHub UI to disallow direct push and require merging via PRs with proper reviews. Direct link

  3. Update the contents of the CODEOWNERS file to reduce code reviews to essential approvals:

    1. Keep * @cilium/tophat fallback entry.

    2. Keep /.github/workflows/ entry for CI/CD security.

    3. Keep all @cilium/api assignments for API stability on the release branch.

    4. Remove everything else so that it is handled by the Top Hat.

  4. Delete the stable.txt file.

    git rm stable.txt
  5. Create a new project named “X.Y.Z” to automatically track the backports for that particular release. Direct Link:

  6. Copy the .github/maintainers-little-helper.yaml from the previous release vX.Y-1 change the contents to be relevant for the release vX.Y and set the project: to be the generated link created by the previous step. The link should be something like: https://github.com/cilium/cilium/projects/NNN

  7. Set the right version for the CustomResourceDefinitionSchemaVersion in the pkg/k8s/... by following these instructions:

    Run ./Documentation/check-crd-compat-table.sh vX.Y

  8. Update install/kubernetes/Makefile.values for the new branch.

  9. Commit changes, open a pull request against the new v1.2 branch, and get the pull request merged

    git checkout -b pr/prepare-v1.2
    git add [...]
    git commit
    git push
  10. Create the following GitHub labels:

    1. backport-pending/1.2

    2. backport-done/1.2

    3. backport/1.2

    4. needs-backport/1.2

  11. Checkout to master and update the .github/maintainers-little-helper.yaml to have all the necessary configurations for the backport of the new vX.Y branch. Specifically, ensure that:

    • The project at the top of the file points to the “next” release,

    • A new section is added for the upcoming release that is being prepared, and

    • The section for the oldest release is removed.

    $ git checkout -b pr/master-cilium-actions-update origin/master
    $ # modify .github/maintainers-little-helper.yaml
    $ git add .github/maintainers-little-helper.yaml
    $ git commit
    $ git push
  12. Continue with the next step only after the previous steps are merged into master.

  13. Mark all open PRs with needs-backport/x.y that have the milestone x.y

  14. Change the VERSION file to contain the next rc version. For example, if we are branching v1.2 and still in the RC phase we need to change the VERSION file to contain the v1.2.0-rcX

  15. Set the branch as “Active” and the “Privacy Level” to “Private” in the readthedocs Admin page. (Replace v1.2 with the right branch) https://readthedocs.org/dashboard/cilium/version/v1.2/

  16. Since this is the first release being made from a new branch, please follow the Generic Release Process to release v1.2.0-rc1.

  17. Alert in the testing channel that a new jenkins job needs to be created for this new branch.

  18. Prepare the master branch for the next development cycle:

    git checkout master; git pull
  19. Update the VERSION file to contain v1.2.90

  20. Add the VERSION file using git add and create & merge a PR titled Prepare for 1.3.0 development.

  21. Update the release branch on

    Jenkins to be tested on every change and Nightly.

  22. (Only 1.0 minor releases) Tag newest 1.0.x Docker image as v1.0-stable and push it to Docker Hub. This will ensure that Kops uses latest 1.0 release by default.

  23. Update Grafana dashboards in Grafana. Install the dashboards available in ./examples/kubernetes/addons/prometheus and use them to upload them to Grafana.

For the final release

  1. Follow the Generic Release Process to create the final replace and replace X.Y.0-rcX with X.Y.0.

  2. Announce to Slack with a more thorough release text. Sample text:

    @channel :cilium-new: **Announcement:** Cilium 1.7.0 is out! :tada:
    <Short summary of major features pulled from Blog, eg:>
    *Amazing Technology*: Just some of the great work the community has
    been working on over the past few months.
    For more information, see the blog post:
  3. Update SECURITY.md to represent the security support for the most recent three release series.

  4. Set the branch for the oldest release (now EOL) as “Active” and “Hidden” in the readthedocs Admin page. (Replace v1.2 with the right branch) https://readthedocs.org/dashboard/cilium/version/v1.2/