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.
.krew.yaml
template file at the root of your repo. Refer to kubectl-evict-pod repo for an example.
- name: Update new version in krew-index
uses: rajatjindal/krew-release-bot@v0.0.46
Check out the goreleaser
example 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/krew-release-bot@v0.0.46
** 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 |
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.