Skip to content

Latest commit

 

History

History
72 lines (46 loc) · 2.26 KB

RELEASING_KREW.md

File metadata and controls

72 lines (46 loc) · 2.26 KB

Releasing Krew

(This document is intended for maintainers of Krew only.)

Build/Test the release locally

  1. Build krew release assets locally:

    hack/make-all.sh
    
  2. Try krew installation on each platform:

    krew=out/bin/krew-darwin_amd64 # assuming macOS amd64
    
    for osarch in darwin_amd64 darwin_arm64 linux_amd64 linux_arm linux_arm64 linux_ppc64le windows_amd64; do
      KREW_ROOT="$(mktemp -d --tmpdir krew-XXXXXXXXXX)" KREW_OS="${osarch%_*}" KREW_ARCH="${osarch#*_}" \
          $krew install --manifest=out/krew.yaml --archive="out/krew-${osarch}.tar.gz"
    done

Release a new version

Krew follows Semantic Versioning 2.0.0. Krew tags versions starting with v. Example: v0.2.0-rc.1.

  1. Decide on a version number: set it to $TAG variable:

    TAG=v0.3.2-rc.1 # <- change this
  2. Create a release commit:

    git commit -am "Release ${TAG:?TAG required}" --allow-empty
    git push origin master

    (Only repository administrators can directly push to master branch.)

  3. Wait until the build succeeds: Wait for CI to show green for the build of the commit you just pushed to master branch.

  4. Tag the release:

    git tag "${TAG:?TAG required}"
    
  5. Push the tag:

    git push origin "${TAG:?TAG required}"
    
  6. Verify on Releases tab on GitHub: Make sure krew.yaml, krew.tar.gz and other release assets show up on "Releases" tab.

  7. Make the new version available on krew index: Get the latest krew.yaml from

    curl -LO https://github.com/kubernetes-sigs/krew/releases/download/"${TAG:?TAG required}"/krew.yaml
    

    and make a pull request to krew-index repository. This will make the plugin available to upgrade for users using older versions of krew.

  8. Update krew-index CI: The CI tests for krew-index repository relies on tools from main krew repository, and they should use the latest version. When there's a new version, update .github/workflows/ci.yml in krew-index repo.

Release artifacts

When a tag is pushed to the repository, GitHub workflow will make a release on GitHub, and upload the release artifacts as files on the release.