Skip to content
Latchkey

Crossplane provider/CLI version skew in CI

A provider or configuration package declares a minimum Crossplane version in crossplane: {version: ">=..."}, and the running core or CLI is older. The package will not install and CI validation reports the incompatible constraint.

What this error means

Installing a provider or running crossplane beta validate fails with an "incompatible" version message naming a Crossplane constraint the environment does not meet.

crossplane
cannot install package: incompatible Crossplane version: package requires
crossplane >=v1.15.0 but the installed version is v1.12.2

Common causes

The package requires a newer core version

The provider or function crossplane.version constraint exceeds the core Crossplane installed in the cluster.

The CLI is older than the packages it validates

A pinned CLI in CI lags behind the provider/function versions the repo now targets, so validation uses stale schemas.

How to fix it

Align the core and CLI versions

  1. Read the required constraint from the error or the package metadata.
  2. Upgrade the core Crossplane Helm release to a version that satisfies it.
  3. Bump the pinned CLI in CI to match.
Terminal
helm upgrade crossplane crossplane-stable/crossplane \
  --namespace crossplane-system --version 1.16.0

Pin provider versions to what the core supports

If you cannot upgrade the core yet, pin the provider to the last release compatible with the running Crossplane version.

provider.yaml
apiVersion: pkg.crossplane.io/v1
kind: Provider
metadata:
  name: provider-aws-s3
spec:
  package: xpkg.upbound.io/upbound/provider-aws-s3:v1.5.0

How to prevent it

  • Track the core Crossplane version alongside provider and function versions.
  • Upgrade core before adopting packages that require a newer version.
  • Keep the CI CLI version aligned with the cluster core version.

Related guides

Tired of flaky CI? Latchkey auto-heals failed jobs and retries them for you. Start free →