Skip to content
This repository was archived by the owner on May 5, 2026. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/loose-turkeys-tell.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@crossplane-models/provider-test-foo": minor
---

First release.
40 changes: 40 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,34 @@ Lint TypeScript and JavaScript files.
pnpm run lint
```

## Updating an Existing Provider to a New Version

The fastest way to bump a provider to its latest upstream release is the `update-provider` script. It updates `package.json`, rewrites the CRD input list, and creates a changeset automatically.

```sh
# Bump a specific provider to a given version
pnpm update-provider --name provider-upjet-azure --version v2.6.0

# Short form
pnpm update-provider -n provider-kubernetes -v v1.3.0
```

Set `GITHUB_TOKEN` for higher GitHub API rate limits (required for URL-based providers with many CRDs):

```sh
GITHUB_TOKEN=ghp_... pnpm update-provider -n provider-upjet-azuread -v v2.3.0
```

After running the script, commit the changes and open a PR. The changeset file in `.changeset/` ensures a new npm release is triggered automatically on merge.

### Automated Provider Updates

Provider versions are also checked automatically every Monday by the [Update Providers](.github/workflows/update-providers.yml) workflow. When a new upstream release is detected the workflow opens a PR with all version bumps pre-applied. Simply review and merge it.

To trigger the check manually, go to **Actions → Update Providers → Run workflow**.

---

## Adding a New CRD Package

Create a new CRD package. This will create a Typescript project under `models/organization/name`:
Expand All @@ -66,6 +94,18 @@ pnpm run new-crd-package \
--author 'John Doe <john.doe@gmail.com>'
```

Pass `--repository` and `--provider-version` to opt the new package into automated update checks:

```sh
pnpm run new-crd-package \
--name 'provider-upjet-foo' \
--organization 'crossplane-contrib' \
--description 'Foo Provider' \
--repository 'crossplane-contrib/provider-upjet-foo' \
--provider-version 'v1.0.0' \
--fetch-strategy clone
```

### Updating the Project File

Every provider has a `package.json` file that contains information about the model and a list of the CRDs that will be used to generate Typescript types.
Expand Down
6 changes: 5 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,8 +50,12 @@ console.log(dumpYaml(composition));
| CRD Source | NPM link | Local Source |
| --- | --- | --- |
| [crossplane](https://github.com/crossplane/crossplane) | [@crossplane-models/crossplane](https://www.npmjs.com/package/@crossplane-models/crossplane) | [models/crossplane/crossplane](models/crossplane/crossplane/) |
| [provider-upjet-azuread](https://github.com/crossplane-contrib/provider-upjet-azuread) | [@crossplane-models/provider-upjet-azuread](https://www.npmjs.com/package/@crossplane-models/provider-upjet-azuread) | [models/crossplane-contrib/provider-upjet-azuread](models/crossplane-contrib/provider-upjet-azuread/) |
| [provider-upjet-aws](https://github.com/crossplane-contrib/provider-upjet-aws) | [@crossplane-models/provider-upjet-aws](https://www.npmjs.com/package/@crossplane-models/provider-upjet-aws) | [models/crossplane-contrib/provider-upjet-aws](models/crossplane-contrib/provider-upjet-aws/) |
| [provider-upjet-azure](https://github.com/crossplane-contrib/provider-upjet-azure) | [@crossplane-models/provider-upjet-azure](https://www.npmjs.com/package/@crossplane-models/provider-upjet-azure) | [models/crossplane-contrib/provider-upjet-azure](models/crossplane-contrib/provider-upjet-azure/) |
| [provider-upjet-azuread](https://github.com/crossplane-contrib/provider-upjet-azuread) | [@crossplane-models/provider-upjet-azuread](https://www.npmjs.com/package/@crossplane-models/provider-upjet-azuread) | [models/crossplane-contrib/provider-upjet-azuread](models/crossplane-contrib/provider-upjet-azuread/) |
| [provider-upjet-gcp](https://github.com/crossplane-contrib/provider-upjet-gcp) | [@crossplane-models/provider-upjet-gcp](https://www.npmjs.com/package/@crossplane-models/provider-upjet-gcp) | [models/crossplane-contrib/provider-upjet-gcp](models/crossplane-contrib/provider-upjet-gcp/) |
| [provider-kubernetes](https://github.com/crossplane-contrib/provider-kubernetes) | [@crossplane-models/provider-kubernetes](https://www.npmjs.com/package/@crossplane-models/provider-kubernetes) | [models/crossplane-contrib/provider-kubernetes](models/crossplane-contrib/provider-kubernetes/) |
| [provider-helm](https://github.com/crossplane-contrib/provider-helm) | [@crossplane-models/provider-helm](https://www.npmjs.com/package/@crossplane-models/provider-helm) | [models/crossplane-contrib/provider-helm](models/crossplane-contrib/provider-helm/) |


## License
Expand Down
36 changes: 36 additions & 0 deletions models/crossplane-contrib/provider-helm/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# @crossplane-models/provider-helm

TypeScript models generated from the [provider-helm](https://github.com/crossplane-contrib/provider-helm) Crossplane provider CRDs.

## Installation

```sh
npm install @crossplane-models/provider-helm
```

## Usage

```typescript
import { Release } from "@crossplane-models/provider-helm/helm.crossplane.io/v1beta1";

const release = new Release({
metadata: {
name: "my-helm-release",
},
spec: {
forProvider: {
chart: {
name: "nginx",
repository: "https://charts.bitnami.com/bitnami",
version: "15.0.0",
},
},
},
});

release.validate();
```

## License

Apache-2.0
62 changes: 62 additions & 0 deletions models/crossplane-contrib/provider-helm/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
{
"name": "@crossplane-models/provider-helm",
"version": "1.2.0-build.1",
"description": "Helm Provider for Crossplane",
"repository": {
"type": "git",
"url": "https://github.com/upbound/typescript-models.git"
},
"homepage": "https://github.com/upbound/typescript-models/tree/master/models/crossplane-contrib/provider-helm",
"author": "Crossplane Maintainers <info@crossplane.io>",
"license": "Apache-2.0",
"main": "index.js",
"module": "index.mjs",
"types": "index.d.ts",
"sideEffects": false,
"scripts": {
"build": "crd-generate && node ../../../internal/publish-scripts/bin/publish-scripts.js build",
"prepack": "node ../../../internal/publish-scripts/bin/publish-scripts.js prepack"
},
"publishConfig": {
"access": "public",
"directory": "dist",
"linkDirectory": true
},
"keywords": [
"kubernetes",
"kubernetes-models",
"provider-helm"
],
"engines": {
"node": ">=14"
},
"dependencies": {
"@kubernetes-models/apimachinery": "2.2.0",
"@kubernetes-models/base": "5.0.1",
"@kubernetes-models/validate": "4.0.0",
"@swc/helpers": "^0.5.8"
},
"devDependencies": {
"@kubernetes-models/crd-generate": "workspace:^",
"@kubernetes-models/publish-scripts": "workspace:^",
"vitest": "^4.0.15"
},
"crossplane-provider": {
"repository": "crossplane-contrib/provider-helm",
"version": "v1.2.0",
"crdDir": "package/crds",
"fetchStrategy": "url"
},
"crd-generate": {
"input": [
"https://raw.githubusercontent.com/crossplane-contrib/provider-helm/v1.2.0/package/crds/helm.crossplane.io_providerconfigs.yaml",
"https://raw.githubusercontent.com/crossplane-contrib/provider-helm/v1.2.0/package/crds/helm.crossplane.io_providerconfigusages.yaml",
"https://raw.githubusercontent.com/crossplane-contrib/provider-helm/v1.2.0/package/crds/helm.crossplane.io_releases.yaml",
"https://raw.githubusercontent.com/crossplane-contrib/provider-helm/v1.2.0/package/crds/helm.m.crossplane.io_clusterproviderconfigs.yaml",
"https://raw.githubusercontent.com/crossplane-contrib/provider-helm/v1.2.0/package/crds/helm.m.crossplane.io_providerconfigs.yaml",
"https://raw.githubusercontent.com/crossplane-contrib/provider-helm/v1.2.0/package/crds/helm.m.crossplane.io_providerconfigusages.yaml",
"https://raw.githubusercontent.com/crossplane-contrib/provider-helm/v1.2.0/package/crds/helm.m.crossplane.io_releases.yaml"
],
"output": "./gen"
}
}
8 changes: 8 additions & 0 deletions models/crossplane-contrib/provider-helm/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"extends": "../../../tsconfig.build.json",
"compilerOptions": {
"outDir": "dist",
"sourceMap": false
},
"include": ["gen"]
}
36 changes: 36 additions & 0 deletions models/crossplane-contrib/provider-kubernetes/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# @crossplane-models/provider-kubernetes

TypeScript models generated from the [provider-kubernetes](https://github.com/crossplane-contrib/provider-kubernetes) Crossplane provider CRDs.

## Installation

```sh
npm install @crossplane-models/provider-kubernetes
```

## Usage

```typescript
import { Object as KubernetesObject } from "@crossplane-models/provider-kubernetes/kubernetes.crossplane.io/v1alpha2";

const obj = new KubernetesObject({
metadata: {
name: "my-k8s-object",
},
spec: {
forProvider: {
manifest: {
apiVersion: "v1",
kind: "ConfigMap",
metadata: { name: "my-config" },
},
},
},
});

obj.validate();
```

## License

Apache-2.0
64 changes: 64 additions & 0 deletions models/crossplane-contrib/provider-kubernetes/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
{
"name": "@crossplane-models/provider-kubernetes",
"version": "1.2.1-build.1",
"description": "Kubernetes Provider for Crossplane",
"repository": {
"type": "git",
"url": "https://github.com/upbound/typescript-models.git"
},
"homepage": "https://github.com/upbound/typescript-models/tree/master/models/crossplane-contrib/provider-kubernetes",
"author": "Crossplane Maintainers <info@crossplane.io>",
"license": "Apache-2.0",
"main": "index.js",
"module": "index.mjs",
"types": "index.d.ts",
"sideEffects": false,
"scripts": {
"build": "crd-generate && node ../../../internal/publish-scripts/bin/publish-scripts.js build",
"prepack": "node ../../../internal/publish-scripts/bin/publish-scripts.js prepack"
},
"publishConfig": {
"access": "public",
"directory": "dist",
"linkDirectory": true
},
"keywords": [
"kubernetes",
"kubernetes-models",
"provider-kubernetes"
],
"engines": {
"node": ">=14"
},
"dependencies": {
"@kubernetes-models/apimachinery": "2.2.0",
"@kubernetes-models/base": "5.0.1",
"@kubernetes-models/validate": "4.0.0",
"@swc/helpers": "^0.5.8"
},
"devDependencies": {
"@kubernetes-models/crd-generate": "workspace:^",
"@kubernetes-models/publish-scripts": "workspace:^",
"vitest": "^4.0.15"
},
"crossplane-provider": {
"repository": "crossplane-contrib/provider-kubernetes",
"version": "v1.2.1",
"crdDir": "package/crds",
"fetchStrategy": "url"
},
"crd-generate": {
"input": [
"https://raw.githubusercontent.com/crossplane-contrib/provider-kubernetes/v1.2.1/package/crds/kubernetes.crossplane.io_objects.yaml",
"https://raw.githubusercontent.com/crossplane-contrib/provider-kubernetes/v1.2.1/package/crds/kubernetes.crossplane.io_observedobjectcollections.yaml",
"https://raw.githubusercontent.com/crossplane-contrib/provider-kubernetes/v1.2.1/package/crds/kubernetes.crossplane.io_providerconfigs.yaml",
"https://raw.githubusercontent.com/crossplane-contrib/provider-kubernetes/v1.2.1/package/crds/kubernetes.crossplane.io_providerconfigusages.yaml",
"https://raw.githubusercontent.com/crossplane-contrib/provider-kubernetes/v1.2.1/package/crds/kubernetes.m.crossplane.io_clusterproviderconfigs.yaml",
"https://raw.githubusercontent.com/crossplane-contrib/provider-kubernetes/v1.2.1/package/crds/kubernetes.m.crossplane.io_objects.yaml",
"https://raw.githubusercontent.com/crossplane-contrib/provider-kubernetes/v1.2.1/package/crds/kubernetes.m.crossplane.io_observedobjectcollections.yaml",
"https://raw.githubusercontent.com/crossplane-contrib/provider-kubernetes/v1.2.1/package/crds/kubernetes.m.crossplane.io_providerconfigs.yaml",
"https://raw.githubusercontent.com/crossplane-contrib/provider-kubernetes/v1.2.1/package/crds/kubernetes.m.crossplane.io_providerconfigusages.yaml"
],
"output": "./gen"
}
}
8 changes: 8 additions & 0 deletions models/crossplane-contrib/provider-kubernetes/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"extends": "../../../tsconfig.build.json",
"compilerOptions": {
"outDir": "dist",
"sourceMap": false
},
"include": ["gen"]
}
Loading
Loading