KubeModCmp is a program that helps enforce specific upstream k8s versioning in projects using k8s libraries.
For example, k8s v1.28.6 depends on github.com/prometheus/client_golang v1.16.0. If your project depends on a version of github.com/prometheus/client_golang other than v1.16.0, KubeModCmp will display the difference and exit with an error.
$ kubemodcmp check path/to/repo
2024/04/24 17:22:02 Package "github.com/prometheus/client_golang" is different, local=v1.19.0 vs upstream=v1.16.0
2024/04/24 17:22:02 some dependencies are not pinned to k8s upstream's version
- 🔒 Enforce versions of dependencies in
go.mod
shared with kubernetes - 🐹 Enforce minimum Go version that is supported by kubernetes
- ⚙️ Optionally ignore dependencies for more flexibility (eg: test frameworks)
- 🔍 Auto-detect upstream k8s version
- 🤖 Dynamically adjust renovate config to prevent PRs updating dependencies to unsupported versions
- 🚀 Github Action to easily enforce in your CI
- 🔨 Auto-fix differences with the
--fix
flag
We support running KubeModCmp as a github action.
Here are the current inputs supported by the Github Action.
action
Decides which action to run.
check
will runkubemodcmp check
ignore_file
Specifies the --ignore-file
argument
k8s_version
Specifies the --k8s_version
argument
The following snippets shows an example of running the kubemodcmp check
command as a GHA step.
on: [push]
jobs:
test:
runs-on: ubuntu-latest
name: Test
steps:
- uses: actions/checkout@v4
- name: Compare kubernetes upstream go.mod
uses: tomleb/kube-mod-cmp@v0.2
with:
action: 'check'
TODO