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/" 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/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/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/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 diff --git a/shared/statsd-exporter/Dockerfile b/shared/statsd-exporter/Dockerfile index 3840fc0f9..5b0210b4b 100644 --- a/shared/statsd-exporter/Dockerfile +++ b/shared/statsd-exporter/Dockerfile @@ -1,43 +1,65 @@ # 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-devel AS statsd-exporter-builder -FROM local-image/stackable-base 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 . ( - cd "statsd_exporter-${PRODUCT_VERSION}" || exit + cd "$(/stackable/patchable --images-repo-root=src checkout shared/statsd-exporter ${PRODUCT_VERSION})" + + # Create snapshot of the source code including custom patches + tar -czf /statsd_exporter/statsd-exporter-${PRODUCT_VERSION}-src.tar.gz . # Unfortunately, we need to create a dummy Git repository to allow cyclonedx-gomod to determine the version of statsd_exporter + rm .git git init git config user.email "fake.commiter@stackable.tech" git config user.name "Fake commiter" git commit --allow-empty --message "Fake commit, so that we can create a tag" git tag "v${PRODUCT_VERSION}" - go build -o ../statsd_exporter - $GOPATH/bin/cyclonedx-gomod app -json -output-version 1.5 -output ../statsd_exporter-${PRODUCT_VERSION}.cdx.json -packages -files + go build -o /statsd_exporter/statsd_exporter + $GOPATH/bin/cyclonedx-gomod app -json -output-version 1.5 -output /statsd_exporter/statsd_exporter-${PRODUCT_VERSION}.cdx.json -packages -files ) rm -rf "statsd_exporter-${PRODUCT_VERSION}" +# set correct groups +chmod -R g=u /statsd_exporter/ EOF diff --git a/shared/statsd-exporter/README.md b/shared/statsd-exporter/README.md index ae4a0786b..dda47a121 100644 --- a/shared/statsd-exporter/README.md +++ b/shared/statsd-exporter/README.md @@ -5,3 +5,21 @@ This is the Docker image that builds statsd_exporter. This image does _not_ need to be built manually. It will be built automatically if specified as a dependency in our `boil-config.toml` file. Which will then be transformed to a dependency in a Docker `buildx bake` file. + +## Updating + +This image uses patchable for applying patch sets before building from source. +Our mirror can be found here: + +To update: + +> [!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). diff --git a/shared/statsd-exporter/boil-config.toml b/shared/statsd-exporter/boil-config.toml index 47379e80f..fda4617e2 100644 --- a/shared/statsd-exporter/boil-config.toml +++ b/shared/statsd-exporter/boil-config.toml @@ -1,5 +1,14 @@ [metadata] "oci.stackable.tech" = { namespace = "sdp" } -[versions."0.29.0".local-images] -stackable-base = "1.0.0" +[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. +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" + +[versions."0.30.0".local-images] +stackable-devel = "1.0.0" diff --git a/shared/statsd-exporter/stackable/patches/0.30.0/patchable.toml b/shared/statsd-exporter/stackable/patches/0.30.0/patchable.toml new file mode 100644 index 000000000..aa1197b1a --- /dev/null +++ b/shared/statsd-exporter/stackable/patches/0.30.0/patchable.toml @@ -0,0 +1,2 @@ +mirror = "https://github.com/stackabletech/statsd_exporter.git" +base = "4a7feb4d0ec9f1061b9e2f548810dd6efc6a294a" 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" 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"