From 0bc1a0e8774be0cafc0f69a96219a283095d40d8 Mon Sep 17 00:00:00 2001 From: Techassi Date: Fri, 22 May 2026 10:34:28 +0200 Subject: [PATCH 1/7] feat(publish-helm-chart): Split helm stdout/stderr --- publish-helm-chart/action.yaml | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/publish-helm-chart/action.yaml b/publish-helm-chart/action.yaml index 1831699..5468351 100644 --- a/publish-helm-chart/action.yaml +++ b/publish-helm-chart/action.yaml @@ -146,10 +146,17 @@ runs: # Capture the stdout output to extract the digest. It is sad that Helm doesn't provide # structured output, eg. in JSON. There is a 2-year old open issue about it: # https://github.com/helm/helm/issues/11735 - HELM_OUTPUT=$(helm push "$CHART_ARTIFACT" "oci://${CHART_REGISTRY_URI}/${CHART_REPOSITORY}" 2>&1) + # HELM_OUTPUT=$(helm push "$CHART_ARTIFACT" "oci://${CHART_REGISTRY_URI}/${CHART_REPOSITORY}" 2>&1) + helm push "$CHART_ARTIFACT" "oci://${CHART_REGISTRY_URI}/${CHART_REPOSITORY}" 2> helm.stderr 1> helm.stdout + + if [ $? -ne 0 ]; then + echo "helm push command failed" + cat helm.stderr + exit 1 + fi # Yuck - CHART_DIGEST=$(echo "$HELM_OUTPUT" | awk '/^Digest: sha256:[0-9a-f]{64}$/ { print $2 }') + CHART_DIGEST=$(cat helm.stdout | awk '/^Digest: sha256:[0-9a-f]{64}$/ { print $2 }') if [ -z "$CHART_DIGEST" ]; then echo "Could not find digest of Helm Chart" From 6fe6b2cadb742e66803510801044fade82a6a6ec Mon Sep 17 00:00:00 2001 From: Techassi Date: Fri, 22 May 2026 10:40:30 +0200 Subject: [PATCH 2/7] what the hell is going on? --- publish-helm-chart/action.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/publish-helm-chart/action.yaml b/publish-helm-chart/action.yaml index 5468351..974150f 100644 --- a/publish-helm-chart/action.yaml +++ b/publish-helm-chart/action.yaml @@ -149,6 +149,9 @@ runs: # HELM_OUTPUT=$(helm push "$CHART_ARTIFACT" "oci://${CHART_REGISTRY_URI}/${CHART_REPOSITORY}" 2>&1) helm push "$CHART_ARTIFACT" "oci://${CHART_REGISTRY_URI}/${CHART_REPOSITORY}" 2> helm.stderr 1> helm.stdout + cat helm.stdout + cat helm.stderr + if [ $? -ne 0 ]; then echo "helm push command failed" cat helm.stderr From d7bca2ce910ff1460f7ec8407b7415a05cb36290 Mon Sep 17 00:00:00 2001 From: Techassi Date: Fri, 22 May 2026 10:44:40 +0200 Subject: [PATCH 3/7] helm is such a caool piece of software --- publish-helm-chart/action.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/publish-helm-chart/action.yaml b/publish-helm-chart/action.yaml index 974150f..cf3df29 100644 --- a/publish-helm-chart/action.yaml +++ b/publish-helm-chart/action.yaml @@ -149,7 +149,9 @@ runs: # HELM_OUTPUT=$(helm push "$CHART_ARTIFACT" "oci://${CHART_REGISTRY_URI}/${CHART_REPOSITORY}" 2>&1) helm push "$CHART_ARTIFACT" "oci://${CHART_REGISTRY_URI}/${CHART_REPOSITORY}" 2> helm.stderr 1> helm.stdout + echo "stdout" cat helm.stdout + echo "stderr" cat helm.stderr if [ $? -ne 0 ]; then From 3738a4f2878770413ef5a12c10c3cc04a94ba8f9 Mon Sep 17 00:00:00 2001 From: Techassi Date: Fri, 22 May 2026 10:51:27 +0200 Subject: [PATCH 4/7] more ridiculous decisions on helm's side --- publish-helm-chart/action.yaml | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/publish-helm-chart/action.yaml b/publish-helm-chart/action.yaml index cf3df29..43f9a25 100644 --- a/publish-helm-chart/action.yaml +++ b/publish-helm-chart/action.yaml @@ -146,17 +146,13 @@ runs: # Capture the stdout output to extract the digest. It is sad that Helm doesn't provide # structured output, eg. in JSON. There is a 2-year old open issue about it: # https://github.com/helm/helm/issues/11735 - # HELM_OUTPUT=$(helm push "$CHART_ARTIFACT" "oci://${CHART_REGISTRY_URI}/${CHART_REPOSITORY}" 2>&1) - helm push "$CHART_ARTIFACT" "oci://${CHART_REGISTRY_URI}/${CHART_REPOSITORY}" 2> helm.stderr 1> helm.stdout - - echo "stdout" - cat helm.stdout - echo "stderr" - cat helm.stderr + # Helm outputs the digest on STDERR, for whatever ridiculous reason. Like, who makes these + # decisions? + HELM_OUTPUT=$(helm push "$CHART_ARTIFACT" "oci://${CHART_REGISTRY_URI}/${CHART_REPOSITORY}" 2>&1) if [ $? -ne 0 ]; then - echo "helm push command failed" - cat helm.stderr + echo "Helm push command failed" + echo "$HELM_OUTPUT" exit 1 fi From e6f14089d8098b5478a4204cf46a5bffc02799f2 Mon Sep 17 00:00:00 2001 From: Techassi Date: Fri, 22 May 2026 11:01:31 +0200 Subject: [PATCH 5/7] welp, my bad --- publish-helm-chart/action.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/publish-helm-chart/action.yaml b/publish-helm-chart/action.yaml index 43f9a25..f8b9b43 100644 --- a/publish-helm-chart/action.yaml +++ b/publish-helm-chart/action.yaml @@ -157,7 +157,7 @@ runs: fi # Yuck - CHART_DIGEST=$(cat helm.stdout | awk '/^Digest: sha256:[0-9a-f]{64}$/ { print $2 }') + CHART_DIGEST=$(cat "$HELM_OUTPUT" | awk '/^Digest: sha256:[0-9a-f]{64}$/ { print $2 }') if [ -z "$CHART_DIGEST" ]; then echo "Could not find digest of Helm Chart" From c4e5950de85c53b6ed0c1e329a721e43196ea3c3 Mon Sep 17 00:00:00 2001 From: Techassi Date: Fri, 22 May 2026 11:05:24 +0200 Subject: [PATCH 6/7] ah jeez, time for a break --- publish-helm-chart/action.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/publish-helm-chart/action.yaml b/publish-helm-chart/action.yaml index f8b9b43..88b1467 100644 --- a/publish-helm-chart/action.yaml +++ b/publish-helm-chart/action.yaml @@ -157,7 +157,7 @@ runs: fi # Yuck - CHART_DIGEST=$(cat "$HELM_OUTPUT" | awk '/^Digest: sha256:[0-9a-f]{64}$/ { print $2 }') + CHART_DIGEST=$(echo "$HELM_OUTPUT" | awk '/^Digest: sha256:[0-9a-f]{64}$/ { print $2 }') if [ -z "$CHART_DIGEST" ]; then echo "Could not find digest of Helm Chart" From e288a5a05b1596e348d801000e659eea5426cd54 Mon Sep 17 00:00:00 2001 From: Techassi Date: Fri, 22 May 2026 11:48:39 +0200 Subject: [PATCH 7/7] ci(smoke): Publish Helm Chart to quay.io --- .github/workflows/smoke-build.yaml | 13 ++++++++++++- publish-helm-chart/action.yaml | 3 ++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/.github/workflows/smoke-build.yaml b/.github/workflows/smoke-build.yaml index f081dd4..29ec200 100644 --- a/.github/workflows/smoke-build.yaml +++ b/.github/workflows/smoke-build.yaml @@ -118,7 +118,7 @@ jobs: persist-credentials: false submodules: recursive - - name: Package, Publish, and Sign Helm Chart + - name: Package, Publish, and Sign Helm Chart (oci.stackable.tech) uses: ./publish-helm-chart with: chart-registry-uri: oci.stackable.tech @@ -129,6 +129,17 @@ jobs: chart-version: ${{ matrix.versions }} app-version: ${{ matrix.versions }} + - name: Package, Publish, and Sign Helm Chart (quay.io) + uses: ./publish-helm-chart + with: + chart-registry-uri: quay.io + chart-registry-username: stackable+robot_sdp_charts_github_action_build + chart-registry-password: ${{ secrets.QUAY_ROBOT_SDP_CHARTS_GITHUB_ACTION_BUILD_SECRET }} + chart-repository: stackable/smoke + chart-directory: smoke/helm-chart + chart-version: ${{ matrix.versions }} + app-version: ${{ matrix.versions }} + notify: name: Failure Notification needs: diff --git a/publish-helm-chart/action.yaml b/publish-helm-chart/action.yaml index 88b1467..64cdf66 100644 --- a/publish-helm-chart/action.yaml +++ b/publish-helm-chart/action.yaml @@ -148,13 +148,14 @@ runs: # https://github.com/helm/helm/issues/11735 # Helm outputs the digest on STDERR, for whatever ridiculous reason. Like, who makes these # decisions? + set +e HELM_OUTPUT=$(helm push "$CHART_ARTIFACT" "oci://${CHART_REGISTRY_URI}/${CHART_REPOSITORY}" 2>&1) - if [ $? -ne 0 ]; then echo "Helm push command failed" echo "$HELM_OUTPUT" exit 1 fi + set -e # Yuck CHART_DIGEST=$(echo "$HELM_OUTPUT" | awk '/^Digest: sha256:[0-9a-f]{64}$/ { print $2 }')