Skip to content

v0.2.0

Choose a tag to compare

@stevendborrelli stevendborrelli released this 30 Aug 08:19
· 15 commits to main since this release
ce76bbe

Release Notes - v0.2.0

Release Date: August 27, 2026

Overview

This release ports the repository to the Crossplane project
workflow. crossplane project build and crossplane project push replace the hand-written
Dockerfile, five shell scripts and an env file, and the composition function is now embedded
in the configuration package rather than built and published separately.

The Network API is unchanged. The XRD is byte-identical to v0.1.1, and rendering the example
produces the same sixteen composed resources. Existing Network resources need no edits.

The notable change for users is the Crossplane version floor: this release requires Crossplane
v2.0.0 or later
.

Note that to develop a Crossplane Project in typescript you must use the branch at crossplane/cli#170.

Installing

Configuration Package

apiVersion: pkg.crossplane.io/v1
kind: Configuration
metadata:
  name: configuration-aws-network-ts
spec:
  package: xpkg.upbound.io/upbound/configuration-aws-network-ts:v0.2.0

Function Package

The composition function is now embedded in the configuration package and is published and
installed along with it. There is no longer a separate function package to install or reference
yourself.

Upgrading from v0.1.1

Crossplane v2 is now required

The package metadata declares crossplane.version: ">=v2.0.0-0", up from ">=v1.17.0-0".

In practice this corrects metadata that was already understated: the XRD has been
apiextensions.crossplane.io/v2 with scope: Namespaced since v0.1.1, which Crossplane 1.x
cannot serve. The constraint now records what the package actually needs.

Namespaced managed resources must be activated

Crossplane 2 does not activate namespaced managed resources by default. Without a
ManagedResourceActivationPolicy the composed resources are created but never reconciled — they
simply sit there, which is a confusing failure to diagnose.

The package now ships one at apis/network/mrap.yaml covering every EC2 kind this configuration
composes, so a normal install needs no action. Note that crossplane composition render does not
need it, so this only shows up on a cluster.

Dependency changes

Dependency v0.1.1 v0.2.0
provider-aws-ec2 v2 >=v2.7.0
function-auto-ready xpkg.upbound.io/crossplane-contrib/… >=v0.6.0 xpkg.crossplane.io/crossplane-contrib/… >=v0.7.0

Note that function-auto-ready also moved registry, from xpkg.upbound.io to
xpkg.crossplane.io.

If you copied the Composition

The pipeline's functionRef.name changed from upbound-configuration-aws-network-ts-function to
upbound-configuration-aws-network-tsnetwork, because the function is now embedded rather than a
separately published package. This only affects you if you vendored composition.yaml into your
own repository; installing the configuration package needs no action.

What's Changed from v0.1.1

Packaging and build

  • crossplane project build produces the multi-arch configuration package with the embedded
    function image baked in, replacing the Dockerfile, scripts/, env and per-arch
    xpkg build invocations.
  • crossplane project push publishes the configuration together with the embedded function
    package it depends on.
  • crossplane-project.yaml replaces package/crossplane.yaml and
    package-function/crossplane.yaml.

Repository layout

Before After
function.ts, main.ts at the repository root functions/network/src/
package/apis/network/ apis/network/ (plus mrap.yaml)
Dockerfile, scripts/, env crossplane project build / push

Types are generated from the CRDs

The function's TypeScript types now come from a crossplane-models package generated at build
time from the CRDs of every dependency plus the XRDs in apis/, rather than the published
@crossplane-models/provider-upjet-aws package. schemas/ is generated and is not checked in.

Testing

Jest was replaced with Vitest. ts-jest caps its typescript peer below 7 while the toolchain
builds with TypeScript 7; Vitest has no typescript peer. The test cases themselves are
unchanged.

CI

  • Seven CI jobs reduced to five (version, cli, test, build, push).
  • GitHub Actions are now consistently SHA-pinned with the version in a trailing comment, and
    moved to current releases (checkout v7.0.1, setup-node v7.0.0, setup-go v7.0.0,
    download-artifact v8.0.1, upload-artifact v7.0.1, setup-qemu v4.2.0, setup-buildx
    v4.3.0, login-action v4.6.0).
  • A Renovate configuration was added.

Note for contributors

Building this project locally requires a crossplane CLI that includes
crossplane/cli#170, which is not in a released CLI
yet. CI builds the CLI from source for this reason. This affects contributors only — it has no
bearing on installing or running the released package.

What's Changed

Full Changelog: v0.1.1...v0.2.0