|
8 | 8 | # This script also requires `jq` https://stedolan.github.io/jq/ |
9 | 9 |
|
10 | 10 | .PHONY: build publish |
| 11 | +.PHONY: chart-package-oci chart-package-quay chart-package-all |
| 12 | +.PHONY: chart-publish-oci chart-publish-quay chart-publish-all |
11 | 13 |
|
12 | 14 | OPERATOR_NAME := airflow-operator |
13 | 15 | VERSION := $(shell cargo metadata --format-version 1 | jq -r '.packages[] | select(.name=="stackable-${OPERATOR_NAME}") | .version') |
14 | 16 |
|
15 | 17 | OCI_REGISTRY_HOSTNAME := oci.stackable.tech |
16 | 18 | OCI_REGISTRY_PROJECT_IMAGES := sdp |
17 | 19 |
|
| 20 | +OCI_REGISTRY_PROJECT_CHARTS ?= sdp/charts |
| 21 | +QUAY_REGISTRY_PROJECT_CHARTS ?= stackable/charts |
| 22 | + |
| 23 | +CHART_DIR := deploy/helm/${OPERATOR_NAME} |
| 24 | +CHART_PACKAGE_OUTPUT_DIR ?= /tmp |
| 25 | + |
18 | 26 | SHELL=/usr/bin/env bash -euo pipefail |
19 | 27 |
|
20 | 28 | render-readme: |
|
53 | 61 | chart-lint: compile-chart |
54 | 62 | docker run -it -v $(shell pwd):/build/helm-charts -w /build/helm-charts quay.io/helmpack/chart-testing:v3.5.0 ct lint --config deploy/helm/ct.yaml |
55 | 63 |
|
| 64 | +chart-package-oci: compile-chart |
| 65 | + tmp_dir="$$(mktemp -d)"; \ |
| 66 | + trap 'rm -rf "$$tmp_dir"' EXIT; \ |
| 67 | + cp -r "${CHART_DIR}" "$$tmp_dir/"; \ |
| 68 | + yq ea '. as $$item ireduce ({}; . * $$item )' \ |
| 69 | + "$$tmp_dir/${OPERATOR_NAME}/values.yaml" \ |
| 70 | + "$$tmp_dir/${OPERATOR_NAME}/values.registry-oci.yaml" \ |
| 71 | + > "$$tmp_dir/${OPERATOR_NAME}/values.yaml.new"; \ |
| 72 | + mv "$$tmp_dir/${OPERATOR_NAME}/values.yaml.new" "$$tmp_dir/${OPERATOR_NAME}/values.yaml"; \ |
| 73 | + helm package "$$tmp_dir/${OPERATOR_NAME}" --destination "${CHART_PACKAGE_OUTPUT_DIR}" |
| 74 | + |
| 75 | +chart-package-quay: compile-chart |
| 76 | + tmp_dir="$$(mktemp -d)"; \ |
| 77 | + trap 'rm -rf "$$tmp_dir"' EXIT; \ |
| 78 | + cp -r "${CHART_DIR}" "$$tmp_dir/"; \ |
| 79 | + yq ea '. as $$item ireduce ({}; . * $$item )' \ |
| 80 | + "$$tmp_dir/${OPERATOR_NAME}/values.yaml" \ |
| 81 | + "$$tmp_dir/${OPERATOR_NAME}/values.registry-quay.yaml" \ |
| 82 | + > "$$tmp_dir/${OPERATOR_NAME}/values.yaml.new"; \ |
| 83 | + mv "$$tmp_dir/${OPERATOR_NAME}/values.yaml.new" "$$tmp_dir/${OPERATOR_NAME}/values.yaml"; \ |
| 84 | + helm package "$$tmp_dir/${OPERATOR_NAME}" --destination "${CHART_PACKAGE_OUTPUT_DIR}" |
| 85 | + |
| 86 | +chart-package-all: chart-package-oci chart-package-quay |
| 87 | + |
| 88 | +chart-publish-oci: chart-package-oci |
| 89 | + helm push "${CHART_PACKAGE_OUTPUT_DIR}/${OPERATOR_NAME}-${VERSION}.tgz" "oci://${OCI_REGISTRY_HOSTNAME}/${OCI_REGISTRY_PROJECT_CHARTS}" |
| 90 | + |
| 91 | +chart-publish-quay: chart-package-quay |
| 92 | + helm push "${CHART_PACKAGE_OUTPUT_DIR}/${OPERATOR_NAME}-${VERSION}.tgz" "oci://quay.io/${QUAY_REGISTRY_PROJECT_CHARTS}" |
| 93 | + |
| 94 | +chart-publish-all: chart-publish-oci chart-publish-quay |
| 95 | + |
56 | 96 | clean: chart-clean |
57 | 97 | cargo clean |
58 | 98 | docker rmi --force '${OCI_REGISTRY_HOSTNAME}/${OCI_REGISTRY_PROJECT_IMAGES}/${OPERATOR_NAME}:${VERSION}' |
|
0 commit comments