krew-release-bot is a bot that automates the update of plugin manifests in krew-index when a new version of your kubectl plugin is released.
If a release is marked as a 'prerelease' in github, it will not be released to the krew index.
To trigger krew-release-bot you can use a github-action which sends the event to the bot.
- Make sure you have enabled github actions for your repo
- Add a
.krew.yamltemplate file at the root of your repo. Refer to kubectl-evict-pod repo for an example.- you could use https://rajatjindal.com/tools/krew-release-bot-helper/ for generating template for your plugin
- To setup the action, add the following snippet after the step that publishes the new release and assets:
Check out the
- name: Update new version in krew-index uses: rajatjindal/[email protected]
goreleaserexample below for details.
<your-git-root>/.github/workflows/release.yml
name: release
on:
push:
tags:
- "v*.*.*"
jobs:
goreleaser:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@master
- name: Setup Go
uses: actions/setup-go@v4
with:
go-version: '1.20'
- name: GoReleaser
uses: goreleaser/goreleaser-action@v1
with:
version: latest
args: release --rm-dist
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Update new version in krew-index
uses: rajatjindal/[email protected]** You can also customize the release assets names, platforms for which build is done using .goreleaser.yml file in root of your git repo.
You can test the template file rendering before check-in to the repo by running following command
$ docker run -v /path/to/your/template-file.yaml:/tmp/template-file.yaml ghcr.io/rajatjindal/krew-release-bot:v0.0.46 \
krew-release-bot template --tag <tag-name> --template-file /tmp/template-file.yaml| Key | Default Value | Description |
|---|---|---|
| workdir | env.GITHUB_WORKSPACE |
Overrides the GitHub workspace directory path |
| krew_template_file | .krew.yaml |
The path to template file relative to $workdir. e.g. templates/misc/plugin-name.yaml |
- only works for repos hosted on github right now
- The first version of plugin has to be submitted manually, by plugin author, to the krew-index repo
krew-release-bot is just a service to open PR on your behalf to release a new version of the krew-plugin. Your CLA agreement (that you did when submitting the new plugin to krew-index) is still applicable on these PR's.
