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.
Basic Setup
Example when using go-releaser
<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@v1
with:
go-version: 1.16
- 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: armandomeeuwenoord/krew-release-bot@v0.0.43
** You can also customize the release assets names, platforms for which build is done using .goreleaser.yml file in root of your git repo.
Examples using krew-release-bot in different ways
Testing the template file
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 armandomeeuwenoord/krew-release-bot:v0.0.43 \
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 |
Limitations of krew-release-bot
- 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
Kubernetes CLA
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.