From 44e711ccc95b29669f89f85cb9094df90b640008 Mon Sep 17 00:00:00 2001 From: Nick Larsen Date: Wed, 3 Jun 2026 10:40:47 +0200 Subject: [PATCH 1/8] chore(shared/statsd-exporter): Initialize patchable ```sh cargo patchable init product shared/statsd-exporter --upstream https://github.com/prometheus/statsd_exporter.git --default-mirror https://github.com/stackabletech/statsd_exporter.git cargo patchable init version "shared/statsd-exporter" "0.28.0" --base="v0.28.0" --mirror ``` --- shared/statsd-exporter/stackable/patches/0.28.0/patchable.toml | 2 ++ shared/statsd-exporter/stackable/patches/patchable.toml | 2 ++ 2 files changed, 4 insertions(+) create mode 100644 shared/statsd-exporter/stackable/patches/0.28.0/patchable.toml create mode 100644 shared/statsd-exporter/stackable/patches/patchable.toml diff --git a/shared/statsd-exporter/stackable/patches/0.28.0/patchable.toml b/shared/statsd-exporter/stackable/patches/0.28.0/patchable.toml new file mode 100644 index 000000000..abdd1c61b --- /dev/null +++ b/shared/statsd-exporter/stackable/patches/0.28.0/patchable.toml @@ -0,0 +1,2 @@ +mirror = "https://github.com/stackabletech/statsd_exporter.git" +base = "c0a390a2c43f77863278615b47d46e886bdca726" diff --git a/shared/statsd-exporter/stackable/patches/patchable.toml b/shared/statsd-exporter/stackable/patches/patchable.toml new file mode 100644 index 000000000..4b567d257 --- /dev/null +++ b/shared/statsd-exporter/stackable/patches/patchable.toml @@ -0,0 +1,2 @@ +upstream = "https://github.com/prometheus/statsd_exporter.git" +default-mirror = "https://github.com/stackabletech/statsd_exporter.git" From 6841bbe7f1afa9b8a00036a5e71cb058ba7563bb Mon Sep 17 00:00:00 2001 From: Nick Larsen Date: Wed, 3 Jun 2026 11:33:23 +0200 Subject: [PATCH 2/8] chore(shared/statsd-exporter): Build from explicit golang version This is part of a series of changes so I can step through each and validate the small change. --- shared/statsd-exporter/Dockerfile | 10 +++++----- shared/statsd-exporter/boil-config.toml | 7 +++++++ 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/shared/statsd-exporter/Dockerfile b/shared/statsd-exporter/Dockerfile index 3840fc0f9..e6d2c6478 100644 --- a/shared/statsd-exporter/Dockerfile +++ b/shared/statsd-exporter/Dockerfile @@ -1,7 +1,9 @@ # syntax=docker/dockerfile:1.16.0@sha256:e2dd261f92e4b763d789984f6eab84be66ab4f5f08052316d8eb8f173593acf7 -# check=error=true +# check=error=true;skip=InvalidDefaultArgInFrom + +ARG GOLANG_VERSION +FROM oci.stackable.tech/sdp/library/golang:${GOLANG_VERSION} AS golang-image -FROM local-image/stackable-base ARG PRODUCT_VERSION ARG STACKABLE_USER_UID @@ -11,13 +13,11 @@ RUN --mount=type=cache,id=go-statsd-exporter,uid=${STACKABLE_USER_UID},target=/g microdnf update # Tar and gzip are used to unpack the statsd_exporter source -# Golang is used to build statsd_exporter # Git is needed by the cyclonedx-gomod tool to determine the version of statsd_exporter microdnf install \ tar \ gzip \ - git \ - golang + git microdnf clean all rm -rf /var/cache/yum diff --git a/shared/statsd-exporter/boil-config.toml b/shared/statsd-exporter/boil-config.toml index 408235597..3a7010b44 100644 --- a/shared/statsd-exporter/boil-config.toml +++ b/shared/statsd-exporter/boil-config.toml @@ -1,5 +1,12 @@ [metadata] "oci.stackable.tech" = { namespace = "sdp" } +[versions."0.28.0".build-arguments] +# Find this in https://github.com/prometheus/statsd_exporter/blob/v0.28.0/go.mod +# You can find the latest patch version at: https://go.dev/doc/devel/release +# Mirror golang (no `v` prefix) via https://github.com/stackabletech/docker-images/actions/workflows/mirror.yaml +# Note: currently mirrored to the `sdp` project, but should probably move elsewhere. +golang-version = "1.22.12" + [versions."0.28.0".local-images] stackable-base = "1.0.0" From ec9bacb406512d03c66c48da275c93ca34572c53 Mon Sep 17 00:00:00 2001 From: Nick Larsen Date: Wed, 3 Jun 2026 17:08:45 +0200 Subject: [PATCH 3/8] chore(shared/statsd-exporter): Build in the stackable-devel image I used opa for inspiration. --- shared/statsd-exporter/Dockerfile | 20 +++++++++++++++++--- shared/statsd-exporter/boil-config.toml | 4 +++- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/shared/statsd-exporter/Dockerfile b/shared/statsd-exporter/Dockerfile index e6d2c6478..928a42573 100644 --- a/shared/statsd-exporter/Dockerfile +++ b/shared/statsd-exporter/Dockerfile @@ -4,12 +4,21 @@ ARG GOLANG_VERSION FROM oci.stackable.tech/sdp/library/golang:${GOLANG_VERSION} AS golang-image +FROM local-image/stackable-devel AS statsd-exporter-builder + ARG PRODUCT_VERSION +ARG CYCLONEDX_GOMOD_VERSION ARG STACKABLE_USER_UID +ARG TARGETARCH +ARG TARGETOS + +ENV CYCLONEDX_GOMOD_VERSION=$CYCLONEDX_GOMOD_VERSION +ENV GOARCH=$TARGETARCH +ENV GOOS=$TARGETOS WORKDIR /statsd_exporter -RUN --mount=type=cache,id=go-statsd-exporter,uid=${STACKABLE_USER_UID},target=/go_cache <= 1.23.1) -go install github.com/CycloneDX/cyclonedx-gomod/cmd/cyclonedx-gomod@v1.7.0 +go install "github.com/CycloneDX/cyclonedx-gomod/cmd/cyclonedx-gomod@v${CYCLONEDX_GOMOD_VERSION}" curl "https://repo.stackable.tech/repository/packages/statsd_exporter/statsd_exporter-${PRODUCT_VERSION}.src.tar.gz" | tar -xzC . ( diff --git a/shared/statsd-exporter/boil-config.toml b/shared/statsd-exporter/boil-config.toml index 3a7010b44..7cd02d650 100644 --- a/shared/statsd-exporter/boil-config.toml +++ b/shared/statsd-exporter/boil-config.toml @@ -7,6 +7,8 @@ # Mirror golang (no `v` prefix) via https://github.com/stackabletech/docker-images/actions/workflows/mirror.yaml # Note: currently mirrored to the `sdp` project, but should probably move elsewhere. golang-version = "1.22.12" +# We use version 1.7.0, since a newer version of cyclonedx-gomod is not compatible with the version of Golang (>= 1.23.1) +cyclonedx-gomod-version = "1.7.0" [versions."0.28.0".local-images] -stackable-base = "1.0.0" +stackable-devel = "1.0.0" From 3d2033831b72ac066f78009483dbbb78f66f1ad2 Mon Sep 17 00:00:00 2001 From: Nick Larsen Date: Wed, 10 Jun 2026 11:20:59 +0200 Subject: [PATCH 4/8] feat(shared/statsd-exporter): Build from source using Patchable --- shared/statsd-exporter/Dockerfile | 16 ++++++++++++---- shared/statsd-exporter/README.md | 18 ++++++++++++++++++ 2 files changed, 30 insertions(+), 4 deletions(-) diff --git a/shared/statsd-exporter/Dockerfile b/shared/statsd-exporter/Dockerfile index 928a42573..5b0210b4b 100644 --- a/shared/statsd-exporter/Dockerfile +++ b/shared/statsd-exporter/Dockerfile @@ -36,22 +36,30 @@ EOF COPY --from=golang-image /usr/local/go/ /usr/local/go/ ENV PATH="/usr/local/go/bin:${PATH}" +COPY --chown=${STACKABLE_USER_UID}:0 shared/statsd-exporter/stackable/patches/patchable.toml /statsd_exporter/src/shared/statsd-exporter/stackable/patches/patchable.toml +COPY --chown=${STACKABLE_USER_UID}:0 shared/statsd-exporter/stackable/patches/${PRODUCT_VERSION} /statsd_exporter/src/shared/statsd-exporter/stackable/patches/${PRODUCT_VERSION} + RUN --mount=type=cache,id=go-statsd-exporter,uid=${STACKABLE_USER_UID},target=/go_cache < [!CAUTION] +> Check the changes since the last version, eg: +> + +```shell +STATSD_VERSION=0.29.0 +cargo patchable init version "shared/statsd-exporter" "$STATSD_VERSION" --base="v$STATSD_VERSION" --mirror +``` + +Apply any necessary patches (see previous version's patch set). From 7c1159cff924d4afa81d9ba65001c0a062824213 Mon Sep 17 00:00:00 2001 From: Nick Larsen Date: Wed, 10 Jun 2026 11:38:47 +0200 Subject: [PATCH 5/8] chore: Remove unused script --- .../upload_new_statsd_exporter_version.sh | 53 ------------------- 1 file changed, 53 deletions(-) delete mode 100755 .scripts/upload_new_statsd_exporter_version.sh diff --git a/.scripts/upload_new_statsd_exporter_version.sh b/.scripts/upload_new_statsd_exporter_version.sh deleted file mode 100755 index 65684114a..000000000 --- a/.scripts/upload_new_statsd_exporter_version.sh +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/env bash - -set -euo pipefail - -VERSION=${1:?"Missing version number argument (arg 1)"} -NEXUS_USER=${2:?"Missing Nexus username argument (arg 2)"} - -read -r -s -p "Nexus Password: " NEXUS_PASSWORD -echo "" - -# https://stackoverflow.com/questions/4632028/how-to-create-a-temporary-directory -# Find the directory name of the script -DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" - -# the temp directory used, within $DIR -WORK_DIR=$(mktemp -d -p "$DIR") - -# check if tmp dir was created -if [[ ! "$WORK_DIR" || ! -d "$WORK_DIR" ]]; then - echo "Could not create temp dir" - exit 1 -fi - -# deletes the temp directory -function cleanup { - rm -rf "$WORK_DIR" -} - -# register the cleanup function to be called on the EXIT signal -trap cleanup EXIT - -cd "$WORK_DIR" || exit - -# statsd_exporter does not currently publish signatures or SBOMs -DOWNLOAD_URL="https://github.com/prometheus/statsd_exporter/archive/refs/tags/v$VERSION.tar.gz" - -echo "Downloading statsd_exporter source" -if ! curl --fail -Ls -O "$DOWNLOAD_URL"; then - echo "Failed to download from $DOWNLOAD_URL" - exit 1 -fi - -FILE_NAME="statsd_exporter-$VERSION.src.tar.gz" -mv "v$VERSION.tar.gz" "$FILE_NAME" - -echo "Uploading statsd_exporter source to Nexus" -if ! curl --fail -o /dev/null --progress-bar -u "$NEXUS_USER:$NEXUS_PASSWORD" --upload-file "$FILE_NAME" 'https://repo.stackable.tech/repository/packages/statsd_exporter/'; then - echo "Failed to upload statsd_exporter source to Nexus" - exit 1 -fi - -echo "Successfully uploaded new version of statsd_exporter source ($VERSION) to Nexus" -echo "https://repo.stackable.tech/service/rest/repository/browse/packages/statsd_exporter/" From 59965ef699a0238a4c5747046064efbe5291b49b Mon Sep 17 00:00:00 2001 From: Nick Larsen Date: Wed, 10 Jun 2026 11:45:54 +0200 Subject: [PATCH 6/8] feat(shared/statsd-exporter): Bump to 0.30.0 --- CHANGELOG.md | 8 +++++--- airflow/boil-config.toml | 6 +++--- shared/statsd-exporter/boil-config.toml | 6 +++--- .../stackable/patches/{0.28.0 => 0.30.0}/patchable.toml | 2 +- superset/boil-config.toml | 6 +++--- 5 files changed, 15 insertions(+), 13 deletions(-) rename shared/statsd-exporter/stackable/patches/{0.28.0 => 0.30.0}/patchable.toml (56%) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8048100b5..b33d9fb71 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,12 +19,13 @@ All notable changes to this project will be documented in this file. ### Changed -- airflow: Bump statsd_exporter to `0.29.0` ([#1522]). +- airflow: Bump statsd_exporter to `0.30.0` ([#1524]). - ci: Bump `docker/login-action` from `v3.6.0` to `v4.1.0` and `stackabletech/actions` to `v0.14.3` to escape Node.js 20 deprecation ([#1507]). - hbase: Update `hbase-opa-authorizer` from `0.1.0` to `0.2.0` and then `0.3.0` ([#1446], [#1454]). - stackable-base: Bump `containerdebug` to `0.4.0` and `config-utils` to `0.4.0` ([#1521]). -- statsd_exporter: Bump version from `0.28.0` to `0.29.0` ([#1522]). -- superset: Bump statsd_exporter to `0.29.0` ([#1522]). +- statsd_exporter: Bump version from `0.28.0` to `0.30.0` ([#1524]). + This uses a git mirror and patchable instead of sourcing from Nexus. +- superset: Bump statsd_exporter to `0.30.0` ([#1524]). ### Fixed @@ -61,6 +62,7 @@ All notable changes to this project will be documented in this file. [#1518]: https://github.com/stackabletech/docker-images/pull/1518 [#1520]: https://github.com/stackabletech/docker-images/pull/1520 [#1521]: https://github.com/stackabletech/docker-images/pull/1521 +[#1524]: https://github.com/stackabletech/docker-images/pull/1524 ## [26.3.0] - 2026-03-16 diff --git a/airflow/boil-config.toml b/airflow/boil-config.toml index 8bb706053..0ee63fe9f 100644 --- a/airflow/boil-config.toml +++ b/airflow/boil-config.toml @@ -3,7 +3,7 @@ # Deprecated since SDP 25.11 [versions."2.9.3".local-images] -"shared/statsd-exporter" = "0.29.0" +"shared/statsd-exporter" = "0.30.0" vector = "0.55.0" stackable-devel = "1.0.0" @@ -20,7 +20,7 @@ nodejs-version = "20" # LTS [versions."3.0.6".local-images] -"shared/statsd-exporter" = "0.29.0" +"shared/statsd-exporter" = "0.30.0" vector = "0.55.0" stackable-devel = "1.0.0" @@ -56,7 +56,7 @@ nodejs-version = "20" # Supported [versions."3.1.6".local-images] -"shared/statsd-exporter" = "0.29.0" +"shared/statsd-exporter" = "0.30.0" vector = "0.55.0" stackable-devel = "1.0.0" diff --git a/shared/statsd-exporter/boil-config.toml b/shared/statsd-exporter/boil-config.toml index 42e7ad888..3d4fb4639 100644 --- a/shared/statsd-exporter/boil-config.toml +++ b/shared/statsd-exporter/boil-config.toml @@ -1,8 +1,8 @@ [metadata] "oci.stackable.tech" = { namespace = "sdp" } -[versions."0.29.0".build-arguments] -# Find this in https://github.com/prometheus/statsd_exporter/blob/v0.29.0/go.mod +[versions."0.30.0".build-arguments] +# Find this in https://github.com/prometheus/statsd_exporter/blob/v0.30.0/go.mod # You can find the latest patch version at: https://go.dev/doc/devel/release # Mirror golang (no `v` prefix) via https://github.com/stackabletech/docker-images/actions/workflows/mirror.yaml # Note: currently mirrored to the `sdp` project, but should probably move elsewhere. @@ -10,5 +10,5 @@ golang-version = "1.22.12" # We use version 1.7.0, since a newer version of cyclonedx-gomod is not compatible with the version of Golang (>= 1.23.1) cyclonedx-gomod-version = "1.7.0" -[versions."0.29.0".local-images] +[versions."0.30.0".local-images] stackable-devel = "1.0.0" diff --git a/shared/statsd-exporter/stackable/patches/0.28.0/patchable.toml b/shared/statsd-exporter/stackable/patches/0.30.0/patchable.toml similarity index 56% rename from shared/statsd-exporter/stackable/patches/0.28.0/patchable.toml rename to shared/statsd-exporter/stackable/patches/0.30.0/patchable.toml index abdd1c61b..aa1197b1a 100644 --- a/shared/statsd-exporter/stackable/patches/0.28.0/patchable.toml +++ b/shared/statsd-exporter/stackable/patches/0.30.0/patchable.toml @@ -1,2 +1,2 @@ mirror = "https://github.com/stackabletech/statsd_exporter.git" -base = "c0a390a2c43f77863278615b47d46e886bdca726" +base = "4a7feb4d0ec9f1061b9e2f548810dd6efc6a294a" diff --git a/superset/boil-config.toml b/superset/boil-config.toml index 9fc4d0368..3000a2d16 100644 --- a/superset/boil-config.toml +++ b/superset/boil-config.toml @@ -2,7 +2,7 @@ "oci.stackable.tech" = { namespace = "sdp" } [versions."4.1.4".local-images] -"shared/statsd-exporter" = "0.29.0" +"shared/statsd-exporter" = "0.30.0" stackable-devel = "1.0.0" vector = "0.55.0" @@ -22,7 +22,7 @@ nodejs-version = "18.20.1" nvm-version = "v0.40.4" [versions."6.0.0".local-images] -"shared/statsd-exporter" = "0.29.0" +"shared/statsd-exporter" = "0.30.0" stackable-devel = "1.0.0" vector = "0.55.0" @@ -41,7 +41,7 @@ nodejs-version = "20.18.3" nvm-version = "v0.40.4" [versions."6.1.0".local-images] -"shared/statsd-exporter" = "0.28.0" +"shared/statsd-exporter" = "0.30.0" stackable-devel = "1.0.0" vector = "0.55.0" From 031292da49f3d5c981a561910c17c48dbbc6e938 Mon Sep 17 00:00:00 2001 From: Nick Larsen Date: Wed, 10 Jun 2026 11:46:41 +0200 Subject: [PATCH 7/8] chore: Add/update hadolint configs Docker wouldn't build these images until I made these changes. --- airflow/Dockerfile | 2 +- opa/Dockerfile | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/airflow/Dockerfile b/airflow/Dockerfile index 12cddcb02..684199955 100644 --- a/airflow/Dockerfile +++ b/airflow/Dockerfile @@ -1,7 +1,7 @@ # syntax=docker/dockerfile:1.16.0@sha256:e2dd261f92e4b763d789984f6eab84be66ab4f5f08052316d8eb8f173593acf7 +# check=error=true;skip=InvalidDefaultArgInFrom,SecretsUsedInArgOrEnv # Disabled error checks: # - SecretsUsedInArgOrEnv : OPA_AUTH_MANAGER is a false positive and breaks the build. -# check=error=true;skip=InvalidDefaultArgInFrom,SecretsUsedInArgOrEnv ARG GIT_SYNC_VERSION diff --git a/opa/Dockerfile b/opa/Dockerfile index 3101356af..9f424bc58 100644 --- a/opa/Dockerfile +++ b/opa/Dockerfile @@ -1,6 +1,7 @@ +# syntax=docker/dockerfile:1.16.0@sha256:e2dd261f92e4b763d789984f6eab84be66ab4f5f08052316d8eb8f173593acf7 +# check=error=true;skip=InvalidDefaultArgInFrom ARG GOLANG_VERSION - FROM oci.stackable.tech/sdp/library/golang:${GOLANG_VERSION} AS golang-image FROM local-image/stackable-devel AS multilog-builder From 9bcdf4d7ed3b6ef81c740db69cbe05f7b849f84c Mon Sep 17 00:00:00 2001 From: Nick <10092581+NickLarsenNZ@users.noreply.github.com> Date: Wed, 10 Jun 2026 14:53:05 +0200 Subject: [PATCH 8/8] Apply suggestions from code review Co-authored-by: Sebastian Bernauer --- shared/statsd-exporter/boil-config.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shared/statsd-exporter/boil-config.toml b/shared/statsd-exporter/boil-config.toml index 3d4fb4639..fda4617e2 100644 --- a/shared/statsd-exporter/boil-config.toml +++ b/shared/statsd-exporter/boil-config.toml @@ -6,7 +6,7 @@ # You can find the latest patch version at: https://go.dev/doc/devel/release # Mirror golang (no `v` prefix) via https://github.com/stackabletech/docker-images/actions/workflows/mirror.yaml # Note: currently mirrored to the `sdp` project, but should probably move elsewhere. -golang-version = "1.22.12" +golang-version = "1.25.11" # We use version 1.7.0, since a newer version of cyclonedx-gomod is not compatible with the version of Golang (>= 1.23.1) cyclonedx-gomod-version = "1.7.0"