diff --git a/.github/workflows/on-pr.yaml b/.github/workflows/on-pr.yaml index f4c70ab..5de68ba 100644 --- a/.github/workflows/on-pr.yaml +++ b/.github/workflows/on-pr.yaml @@ -10,7 +10,8 @@ on: - reopened - synchronize paths: - - ".github/workflows/on-pr.yaml" + - 'renovate.json' + - ".github/workflows/**" - "apis/**" - "examples/**" - "tests/**" diff --git a/README.md b/README.md index 0f59ca4..e59269c 100644 --- a/README.md +++ b/README.md @@ -55,8 +55,8 @@ The chart's `appVersion` tracks the upstream Gateway API release. Bump `chartVer | Kind | Package | Version | |---|---|---| -| Function | `crossplane-contrib/function-auto-ready` | `>=v0.6.3` | -| Provider | `crossplane-contrib/provider-helm` | `>=v1` | +| Function | `crossplane-contrib/function-auto-ready` | `^v0` | +| Provider | `crossplane-contrib/provider-helm` | `^v1` | ## Development diff --git a/apis/gatewayapistacks/configuration.yaml b/apis/gatewayapistacks/configuration.yaml index 2176b5e..aa65be0 100644 --- a/apis/gatewayapistacks/configuration.yaml +++ b/apis/gatewayapistacks/configuration.yaml @@ -9,6 +9,6 @@ metadata: spec: dependsOn: - function: xpkg.crossplane.io/crossplane-contrib/function-auto-ready - version: '>=v0.7.0' + version: '^v0' - provider: xpkg.crossplane.io/crossplane-contrib/provider-helm - version: '>=v1' + version: '^v1' diff --git a/examples/gatewayapistacks/standard.yaml b/examples/gatewayapistacks/standard.yaml index 4350c74..aeb393f 100644 --- a/examples/gatewayapistacks/standard.yaml +++ b/examples/gatewayapistacks/standard.yaml @@ -9,4 +9,5 @@ spec: team: platform namespace: gateway-api releaseName: gateway-api-crds + # renovate: datasource=helm depName=gateway-api-crds registryUrl=https://wiremind.github.io/wiremind-helm-charts chartVersion: "1.5.1" diff --git a/functions/render/000-state-init.yaml.gotmpl b/functions/render/000-state-init.yaml.gotmpl index a15070f..a848097 100644 --- a/functions/render/000-state-init.yaml.gotmpl +++ b/functions/render/000-state-init.yaml.gotmpl @@ -14,6 +14,7 @@ {{- $clusterName := $spec.clusterName | default $name }} {{- $namespace := $spec.namespace | default "gateway-api" }} {{- $releaseName := $spec.releaseName | default "gateway-api-crds" }} +# renovate: datasource=helm depName=gateway-api-crds registryUrl=https://wiremind.github.io/wiremind-helm-charts {{- $chartVersion := $spec.chartVersion | default "1.5.1" }} {{- $managementPolicies := $spec.managementPolicies | default (list "*") }} diff --git a/renovate.json b/renovate.json index 820ceb8..58675e2 100644 --- a/renovate.json +++ b/renovate.json @@ -12,27 +12,57 @@ }, "packageRules": [ { - "description": "Automerge minor and patch updates that pass all checks", - "matchUpdateTypes": ["minor", "patch"], + "description": "Automerge minor and patch updates after all checks pass", + "matchUpdateTypes": [ + "minor", + "patch" + ], "automerge": true }, + { + "description": "Require manual review for major updates", + "matchUpdateTypes": [ + "major" + ], + "automerge": false + }, { "description": "Disable automatic updates for all hops-ops Docker images", - "matchDatasources": ["docker"], + "matchDatasources": [ + "docker" + ], "enabled": false, - "matchPackageNames": ["/^hops-ops//"] + "matchPackageNames": [ + "/^hops-ops//" + ] + }, + { + "description": "Group AWS provider-family packages", + "matchPackageNames": [ + "/provider-family-aws/", + "/provider-aws-.*/" + ], + "groupName": "aws-providers" }, { "description": "Use feat(deps): commit prefix for hops-ops Crossplane packages (github-releases datasource)", - "matchManagers": ["custom.regex"], - "matchDatasources": ["github-releases"], + "matchManagers": [ + "custom.regex" + ], + "matchDatasources": [ + "github-releases" + ], "semanticCommitType": "feat", "semanticCommitScope": "deps" }, { "description": "Use feat(deps): commit prefix for other Crossplane packages from Docker registries", - "matchManagers": ["custom.regex"], - "matchDatasources": ["docker"], + "matchManagers": [ + "custom.regex" + ], + "matchDatasources": [ + "docker" + ], "semanticCommitType": "feat", "semanticCommitScope": "deps" } @@ -41,30 +71,65 @@ { "customType": "regex", "description": "hops-ops Crossplane configurations (tracked via GitHub Releases)", + "matchStringsStrategy": "recursive", "managerFilePatterns": [ "apis/**/configuration.yaml", "upbound.yaml" ], "matchStrings": [ - "\\s*(configuration|function|package|provider):\\s*ghcr\\.io/hops-ops/(?.*?)\\s*version:\\s*(\"|')>=(?.*?)(\"|')\\s*" + "\\s*(configuration|function|package|provider):\\s*ghcr\\.io/hops-ops/(?.*?)\\s*version:\\s*(\"|')\\^v?[0-9]+(\"|')\\s*", + "(?\\^v?[0-9]+)" ], "datasourceTemplate": "github-releases", - "packageNameTemplate": "hops-ops/{{depName}}" + "versioningTemplate": "npm", + "packageNameTemplate": "hops-ops/{{depName}}", + "autoReplaceStringTemplate": "^v{{{newMajor}}}" }, { "customType": "regex", - "description": "Crossplane packages from other registries (tracked via Docker tags)", + "description": "Crossplane packages from xpkg registries (tracked via Docker tags)", + "matchStringsStrategy": "recursive", "managerFilePatterns": [ "apis/**/configuration.yaml", "upbound.yaml" ], "matchStrings": [ - "\\s*(configuration|function|package|provider):\\s*(?[^/]+)\\/(?[^/]+)\\/(?[^/\\s]+)\\s*version:\\s*(\"|')>=(?.*?)(\"|')\\s*" + "\\s*(configuration|function|package|provider):\\s*(?xpkg\\.[^/]+)\\/(?[^/]+)\\/(?[^/\\s]+)\\s*version:\\s*(\"|')\\^v?[0-9]+(\"|')\\s*", + "(?\\^v?[0-9]+)" ], "datasourceTemplate": "docker", + "versioningTemplate": "npm", "registryUrlTemplate": "https://{{registryUrl}}", "depNameTemplate": "{{orgName}}/{{repoName}}", - "packageNameTemplate": "{{orgName}}/{{repoName}}" + "packageNameTemplate": "{{orgName}}/{{repoName}}", + "autoReplaceStringTemplate": "^v{{{newMajor}}}" + }, + { + "customType": "regex", + "description": "Annotated runtime dependencies in schemas, templates, examples, and tests", + "managerFilePatterns": [ + "apis/**/*.yaml", + "examples/**/*.yaml", + "functions/**/*.yaml.gotmpl", + "tests/**/*.k" + ], + "matchStrings": [ + "# renovate: datasource=(?\\S+) depName=(?\\S+)(?: registryUrl=(?\\S+))?\\s+[^\\n]*?(?:default\\s+|:=\\s*|[\"']?(?:version|chartVersion|tag|default)[\"']?\\s*(?:[=:]\\s*|\\s+))[\"']?(?v?[0-9][^\\s\"'}]*)", + "# renovate: datasource=(?\\S+) depName=(?\\S+)(?: registryUrl=(?\\S+))?\\s+[^\\n]*?(?:default\\s*:\\s*|[\"']?image[\"']?\\s*[=:]\\s*)[\"']?[A-Za-z0-9._/-]+:(?v?[A-Za-z0-9][^\\s\"'}]*)", + "# renovate: datasource=(?\\S+) depName=(?\\S+)(?: registryUrl=(?\\S+))?\\s+[^\\n]*?package\\s*=\\s*\"xpkg\\.[^/]+/[^\"]+:(?[^\"]+)\"" + ] } - ] + ], + "ignorePaths": [ + "**/node_modules/**", + "**/bower_components/**", + "**/vendor/**", + "**/__tests__/**", + "**/test/**", + "**/__fixtures__/**", + "**/fixtures/**" + ], + "automergeType": "pr", + "platformAutomerge": false, + "ignoreTests": false } diff --git a/tests/test-render/main.k b/tests/test-render/main.k index 9df3cc3..4f1e129 100644 --- a/tests/test-render/main.k +++ b/tests/test-render/main.k @@ -34,6 +34,7 @@ _items = [ chart = { name = "gateway-api-crds" repository = "https://wiremind.github.io/wiremind-helm-charts" + # renovate: datasource=helm depName=gateway-api-crds registryUrl=https://wiremind.github.io/wiremind-helm-charts version = "1.5.1" } namespace = "gateway-api" diff --git a/upbound.yaml b/upbound.yaml index e5a3f42..7eb1dd8 100644 --- a/upbound.yaml +++ b/upbound.yaml @@ -7,11 +7,11 @@ spec: - apiVersion: pkg.crossplane.io/v1 kind: Function package: xpkg.crossplane.io/crossplane-contrib/function-auto-ready - version: '>=v0.7.0' + version: '^v0' - apiVersion: pkg.crossplane.io/v1 kind: Provider package: xpkg.crossplane.io/crossplane-contrib/provider-helm - version: '>=v1' + version: '^v1' description: Installs Kubernetes Gateway API CRDs (gateway.networking.k8s.io) onto a target cluster as a Helm release. Cloud-neutral, prereq for any Gateway API based controller (Istio Ambient, Envoy Gateway, etc.) or integration (knative