diff --git a/.github/workflows/image.yaml b/.github/workflows/image.yaml index 7f232e012..ebcb11902 100644 --- a/.github/workflows/image.yaml +++ b/.github/workflows/image.yaml @@ -1,7 +1,8 @@ name: Image -# Build and push the konnector + backend images. Pushes only on tags: +# Build and push the konnector + backend images and Helm charts on tags: # - tags v* -> ghcr.io//konnector:, ghcr.io//backend: +# - tags v* -> oci://ghcr.io/kbind/charts/{konnector-v2,backend-v2}: # No :latest or : tags — the image repo is shared with v1/main images. on: push: @@ -47,3 +48,21 @@ jobs: --push \ . done + + publish-chart: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + + - name: Install Helm + uses: azure/setup-helm@9bc31f4ebc9c6b171d7bfbaa5d006ae7abdb4310 # v5.0.1 + + - name: Log in to GHCR for Helm + run: echo "${{ secrets.GITHUB_TOKEN }}" | helm registry login ghcr.io --username ${{ github.actor }} --password-stdin + + - name: Version from tag + id: v + run: echo "version=${GITHUB_REF_NAME#v}" >> "$GITHUB_OUTPUT" + + - name: Package and push Helm charts (OCI) + run: make helm-push VERSION=${{ steps.v.outputs.version }} diff --git a/Makefile b/Makefile index 27e3b7c02..71beadca7 100644 --- a/Makefile +++ b/Makefile @@ -19,8 +19,8 @@ CONTROLLER_GEN ?= go run sigs.k8s.io/controller-tools/cmd/controller-gen@v0.17.2 GOLANGCI_LINT ?= golangci-lint ENVTEST_K8S_VERSION ?= 1.34.1 SETUP_ENVTEST ?= go run sigs.k8s.io/controller-runtime/tools/setup-envtest@release-0.21 -CHART ?= deploy/charts/konnector -BACKEND_CHART ?= deploy/charts/backend +CHART ?= deploy/charts/konnector-v2 +BACKEND_CHART ?= deploy/charts/backend-v2 IMAGE ?= ghcr.io/kbind/konnector:dev .PHONY: all @@ -150,3 +150,25 @@ tilt-ci: tilt-down: kind delete cluster --name kbind-provider || true kind delete cluster --name kbind-consumer || true + +# Helm publishing parameters +HELM ?= helm +HELM_REPO ?= ghcr.io/kbind/charts +VERSION ?= 0.0.0-dev +CHART_VERSION ?= $(VERSION) +IMAGE_VERSION ?= $(VERSION) +HELM_CHARTS ?= konnector-v2 backend-v2 + +## helm-push: Package and push Helm charts to $(HELM_REPO) as OCI artifacts +.PHONY: helm-push +helm-push: + mkdir -p bin/charts + @for chart in $(HELM_CHARTS); do \ + echo "==> packaging $$chart $(CHART_VERSION)"; \ + $(HELM) package deploy/charts/$$chart \ + --version $(CHART_VERSION) \ + --app-version $(IMAGE_VERSION) \ + --destination bin/charts || exit 1; \ + echo "==> pushing $$chart-$(CHART_VERSION).tgz to oci://$(HELM_REPO)"; \ + $(HELM) push bin/charts/$$chart-$(CHART_VERSION).tgz oci://$(HELM_REPO) || exit 1; \ + done diff --git a/deploy/charts/backend/.helmignore b/deploy/charts/backend-v2/.helmignore similarity index 100% rename from deploy/charts/backend/.helmignore rename to deploy/charts/backend-v2/.helmignore diff --git a/deploy/charts/backend/Chart.yaml b/deploy/charts/backend-v2/Chart.yaml similarity index 95% rename from deploy/charts/backend/Chart.yaml rename to deploy/charts/backend-v2/Chart.yaml index da8e1b1a7..02ac9d56d 100644 --- a/deploy/charts/backend/Chart.yaml +++ b/deploy/charts/backend-v2/Chart.yaml @@ -1,5 +1,5 @@ apiVersion: v2 -name: backend +name: backend-v2 description: kbind v2 backend — the optional provider-side service layer (gateway, issuer, reaper). type: application diff --git a/deploy/charts/backend/files/crds/catalog.kbind.io_collections.yaml b/deploy/charts/backend-v2/files/crds/catalog.kbind.io_collections.yaml similarity index 100% rename from deploy/charts/backend/files/crds/catalog.kbind.io_collections.yaml rename to deploy/charts/backend-v2/files/crds/catalog.kbind.io_collections.yaml diff --git a/deploy/charts/backend/files/crds/catalog.kbind.io_exports.yaml b/deploy/charts/backend-v2/files/crds/catalog.kbind.io_exports.yaml similarity index 100% rename from deploy/charts/backend/files/crds/catalog.kbind.io_exports.yaml rename to deploy/charts/backend-v2/files/crds/catalog.kbind.io_exports.yaml diff --git a/deploy/charts/backend/files/crds/iam.kbind.io_grants.yaml b/deploy/charts/backend-v2/files/crds/iam.kbind.io_grants.yaml similarity index 100% rename from deploy/charts/backend/files/crds/iam.kbind.io_grants.yaml rename to deploy/charts/backend-v2/files/crds/iam.kbind.io_grants.yaml diff --git a/deploy/charts/backend/templates/NOTES.txt b/deploy/charts/backend-v2/templates/NOTES.txt similarity index 100% rename from deploy/charts/backend/templates/NOTES.txt rename to deploy/charts/backend-v2/templates/NOTES.txt diff --git a/deploy/charts/backend/templates/_helpers.tpl b/deploy/charts/backend-v2/templates/_helpers.tpl similarity index 100% rename from deploy/charts/backend/templates/_helpers.tpl rename to deploy/charts/backend-v2/templates/_helpers.tpl diff --git a/deploy/charts/backend/templates/clusterrole.yaml b/deploy/charts/backend-v2/templates/clusterrole.yaml similarity index 100% rename from deploy/charts/backend/templates/clusterrole.yaml rename to deploy/charts/backend-v2/templates/clusterrole.yaml diff --git a/deploy/charts/backend/templates/clusterrolebinding.yaml b/deploy/charts/backend-v2/templates/clusterrolebinding.yaml similarity index 100% rename from deploy/charts/backend/templates/clusterrolebinding.yaml rename to deploy/charts/backend-v2/templates/clusterrolebinding.yaml diff --git a/deploy/charts/backend/templates/crds.yaml b/deploy/charts/backend-v2/templates/crds.yaml similarity index 100% rename from deploy/charts/backend/templates/crds.yaml rename to deploy/charts/backend-v2/templates/crds.yaml diff --git a/deploy/charts/backend/templates/deployment.yaml b/deploy/charts/backend-v2/templates/deployment.yaml similarity index 100% rename from deploy/charts/backend/templates/deployment.yaml rename to deploy/charts/backend-v2/templates/deployment.yaml diff --git a/deploy/charts/backend/templates/role.yaml b/deploy/charts/backend-v2/templates/role.yaml similarity index 100% rename from deploy/charts/backend/templates/role.yaml rename to deploy/charts/backend-v2/templates/role.yaml diff --git a/deploy/charts/backend/templates/rolebinding.yaml b/deploy/charts/backend-v2/templates/rolebinding.yaml similarity index 100% rename from deploy/charts/backend/templates/rolebinding.yaml rename to deploy/charts/backend-v2/templates/rolebinding.yaml diff --git a/deploy/charts/backend/templates/service.yaml b/deploy/charts/backend-v2/templates/service.yaml similarity index 100% rename from deploy/charts/backend/templates/service.yaml rename to deploy/charts/backend-v2/templates/service.yaml diff --git a/deploy/charts/backend/templates/serviceaccount.yaml b/deploy/charts/backend-v2/templates/serviceaccount.yaml similarity index 100% rename from deploy/charts/backend/templates/serviceaccount.yaml rename to deploy/charts/backend-v2/templates/serviceaccount.yaml diff --git a/deploy/charts/backend/values.yaml b/deploy/charts/backend-v2/values.yaml similarity index 100% rename from deploy/charts/backend/values.yaml rename to deploy/charts/backend-v2/values.yaml diff --git a/deploy/charts/konnector/.helmignore b/deploy/charts/konnector-v2/.helmignore similarity index 100% rename from deploy/charts/konnector/.helmignore rename to deploy/charts/konnector-v2/.helmignore diff --git a/deploy/charts/konnector/Chart.yaml b/deploy/charts/konnector-v2/Chart.yaml similarity index 94% rename from deploy/charts/konnector/Chart.yaml rename to deploy/charts/konnector-v2/Chart.yaml index 99b54e3c7..15cf9bf7a 100644 --- a/deploy/charts/konnector/Chart.yaml +++ b/deploy/charts/konnector-v2/Chart.yaml @@ -1,5 +1,5 @@ apiVersion: v2 -name: konnector +name: konnector-v2 description: kbind v2 slim-core konnector — the consumer-side sync engine. type: application diff --git a/deploy/charts/konnector/files/crds/core.kbind.io_bindings.yaml b/deploy/charts/konnector-v2/files/crds/core.kbind.io_bindings.yaml similarity index 100% rename from deploy/charts/konnector/files/crds/core.kbind.io_bindings.yaml rename to deploy/charts/konnector-v2/files/crds/core.kbind.io_bindings.yaml diff --git a/deploy/charts/konnector/files/crds/core.kbind.io_clusterbindings.yaml b/deploy/charts/konnector-v2/files/crds/core.kbind.io_clusterbindings.yaml similarity index 100% rename from deploy/charts/konnector/files/crds/core.kbind.io_clusterbindings.yaml rename to deploy/charts/konnector-v2/files/crds/core.kbind.io_clusterbindings.yaml diff --git a/deploy/charts/konnector/files/crds/core.kbind.io_connections.yaml b/deploy/charts/konnector-v2/files/crds/core.kbind.io_connections.yaml similarity index 100% rename from deploy/charts/konnector/files/crds/core.kbind.io_connections.yaml rename to deploy/charts/konnector-v2/files/crds/core.kbind.io_connections.yaml diff --git a/deploy/charts/konnector/templates/NOTES.txt b/deploy/charts/konnector-v2/templates/NOTES.txt similarity index 100% rename from deploy/charts/konnector/templates/NOTES.txt rename to deploy/charts/konnector-v2/templates/NOTES.txt diff --git a/deploy/charts/konnector/templates/_helpers.tpl b/deploy/charts/konnector-v2/templates/_helpers.tpl similarity index 100% rename from deploy/charts/konnector/templates/_helpers.tpl rename to deploy/charts/konnector-v2/templates/_helpers.tpl diff --git a/deploy/charts/konnector/templates/clusterrole.yaml b/deploy/charts/konnector-v2/templates/clusterrole.yaml similarity index 100% rename from deploy/charts/konnector/templates/clusterrole.yaml rename to deploy/charts/konnector-v2/templates/clusterrole.yaml diff --git a/deploy/charts/konnector/templates/clusterrolebinding.yaml b/deploy/charts/konnector-v2/templates/clusterrolebinding.yaml similarity index 100% rename from deploy/charts/konnector/templates/clusterrolebinding.yaml rename to deploy/charts/konnector-v2/templates/clusterrolebinding.yaml diff --git a/deploy/charts/konnector/templates/crds.yaml b/deploy/charts/konnector-v2/templates/crds.yaml similarity index 100% rename from deploy/charts/konnector/templates/crds.yaml rename to deploy/charts/konnector-v2/templates/crds.yaml diff --git a/deploy/charts/konnector/templates/deployment.yaml b/deploy/charts/konnector-v2/templates/deployment.yaml similarity index 100% rename from deploy/charts/konnector/templates/deployment.yaml rename to deploy/charts/konnector-v2/templates/deployment.yaml diff --git a/deploy/charts/konnector/templates/role.yaml b/deploy/charts/konnector-v2/templates/role.yaml similarity index 100% rename from deploy/charts/konnector/templates/role.yaml rename to deploy/charts/konnector-v2/templates/role.yaml diff --git a/deploy/charts/konnector/templates/rolebinding.yaml b/deploy/charts/konnector-v2/templates/rolebinding.yaml similarity index 100% rename from deploy/charts/konnector/templates/rolebinding.yaml rename to deploy/charts/konnector-v2/templates/rolebinding.yaml diff --git a/deploy/charts/konnector/templates/serviceaccount.yaml b/deploy/charts/konnector-v2/templates/serviceaccount.yaml similarity index 100% rename from deploy/charts/konnector/templates/serviceaccount.yaml rename to deploy/charts/konnector-v2/templates/serviceaccount.yaml diff --git a/deploy/charts/konnector/values.yaml b/deploy/charts/konnector-v2/values.yaml similarity index 100% rename from deploy/charts/konnector/values.yaml rename to deploy/charts/konnector-v2/values.yaml diff --git a/hack/e2e.sh b/hack/e2e.sh index 3a8787314..3b64c6e5f 100755 --- a/hack/e2e.sh +++ b/hack/e2e.sh @@ -52,7 +52,7 @@ NO_BUILD=${NO_BUILD:-0} HERE="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" ROOT="$(cd "${HERE}/.." && pwd)" SAMPLES="${ROOT}/config/samples" -CHART="${ROOT}/deploy/charts/konnector" +CHART="${ROOT}/deploy/charts/konnector-v2" PROVIDER_KC="$(mktemp -t kbind-e2e-provider.XXXXXX)" CONSUMER_KC="$(mktemp -t kbind-e2e-consumer.XXXXXX)" # Kubeconfig reachable from inside the consumer cluster (server = provider node's