Skip to content

Commit 5103108

Browse files
committed
Merge remote-tracking branch 'origin/main' into docker-images-statsd
2 parents 3d20338 + 1150cac commit 5103108

14 files changed

Lines changed: 1470 additions & 542 deletions

File tree

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
#!/usr/bin/env bash
2+
3+
set -euo pipefail
4+
5+
VERSION=${1:?"Missing version number argument (arg 1)"}
6+
NEXUS_USER=${2:?"Missing Nexus username argument (arg 2)"}
7+
8+
read -r -s -p "Nexus Password: " NEXUS_PASSWORD
9+
echo ""
10+
11+
# https://stackoverflow.com/questions/4632028/how-to-create-a-temporary-directory
12+
# Find the directory name of the script
13+
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
14+
15+
# the temp directory used, within $DIR
16+
WORK_DIR=$(mktemp -d -p "$DIR")
17+
18+
# check if tmp dir was created
19+
if [[ ! "$WORK_DIR" || ! -d "$WORK_DIR" ]]; then
20+
echo "Could not create temp dir"
21+
exit 1
22+
fi
23+
24+
# deletes the temp directory
25+
function cleanup {
26+
rm -rf "$WORK_DIR"
27+
}
28+
29+
# register the cleanup function to be called on the EXIT signal
30+
trap cleanup EXIT
31+
32+
cd "$WORK_DIR" || exit
33+
34+
# statsd_exporter does not currently publish signatures or SBOMs
35+
DOWNLOAD_URL="https://github.com/prometheus/statsd_exporter/archive/refs/tags/v$VERSION.tar.gz"
36+
37+
echo "Downloading statsd_exporter source"
38+
if ! curl --fail -Ls -O "$DOWNLOAD_URL"; then
39+
echo "Failed to download from $DOWNLOAD_URL"
40+
exit 1
41+
fi
42+
43+
FILE_NAME="statsd_exporter-$VERSION.src.tar.gz"
44+
mv "v$VERSION.tar.gz" "$FILE_NAME"
45+
46+
echo "Uploading statsd_exporter source to Nexus"
47+
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
48+
echo "Failed to upload statsd_exporter source to Nexus"
49+
exit 1
50+
fi
51+
52+
echo "Successfully uploaded new version of statsd_exporter source ($VERSION) to Nexus"
53+
echo "https://repo.stackable.tech/service/rest/repository/browse/packages/statsd_exporter/"

CHANGELOG.md

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,17 @@ All notable changes to this project will be documented in this file.
1414
- opa: Add `1.16.2` ([#1509]).
1515
- kafka: Add `3.9.2` and `4.2.1` ([#1483]).
1616
- trino: Add `481` ([#1518]).
17+
- superset: Add `6.1.0` ([#1514])
18+
- zookeeper: Add `3.9.5` ([#1515])
1719

1820
### Changed
1921

20-
- hbase: Update `hbase-opa-authorizer` from `0.1.0` to `0.2.0` and then `0.3.0` ([#1446], [#1454]).
22+
- airflow: Bump statsd_exporter to `0.29.0` ([#1522]).
2123
- 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]).
24+
- hbase: Update `hbase-opa-authorizer` from `0.1.0` to `0.2.0` and then `0.3.0` ([#1446], [#1454]).
25+
- stackable-base: Bump `containerdebug` to `0.4.0` and `config-utils` to `0.4.0` ([#1521]).
26+
- statsd_exporter: Bump version from `0.28.0` to `0.29.0` ([#1522]).
27+
- superset: Bump statsd_exporter to `0.29.0` ([#1522]).
2228

2329
### Fixed
2430

@@ -31,6 +37,7 @@ All notable changes to this project will be documented in this file.
3137

3238
### Removed
3339

40+
- nifi: Remove `1.28.1`, deprecate `2.7.2` ([#1520]).
3441
- opa: Remove `1.8.0` ([#1509]).
3542

3643
[#1446]: https://github.com/stackabletech/docker-images/pull/1446
@@ -49,7 +56,11 @@ All notable changes to this project will be documented in this file.
4956
[#1509]: https://github.com/stackabletech/docker-images/pull/1509
5057
[#1510]: https://github.com/stackabletech/docker-images/pull/1510
5158
[#1512]: https://github.com/stackabletech/docker-images/pull/1512
59+
[#1514]: https://github.com/stackabletech/docker-images/pull/1514
60+
[#1515]: https://github.com/stackabletech/docker-images/pull/1515
5261
[#1518]: https://github.com/stackabletech/docker-images/pull/1518
62+
[#1520]: https://github.com/stackabletech/docker-images/pull/1520
63+
[#1521]: https://github.com/stackabletech/docker-images/pull/1521
5364

5465
## [26.3.0] - 2026-03-16
5566

airflow/boil-config.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
# Deprecated since SDP 25.11
55
[versions."2.9.3".local-images]
6-
"shared/statsd-exporter" = "0.28.0"
6+
"shared/statsd-exporter" = "0.29.0"
77
vector = "0.55.0"
88
stackable-devel = "1.0.0"
99

@@ -20,7 +20,7 @@ nodejs-version = "20"
2020

2121
# LTS
2222
[versions."3.0.6".local-images]
23-
"shared/statsd-exporter" = "0.28.0"
23+
"shared/statsd-exporter" = "0.29.0"
2424
vector = "0.55.0"
2525
stackable-devel = "1.0.0"
2626

@@ -56,7 +56,7 @@ nodejs-version = "20"
5656

5757
# Supported
5858
[versions."3.1.6".local-images]
59-
"shared/statsd-exporter" = "0.28.0"
59+
"shared/statsd-exporter" = "0.29.0"
6060
vector = "0.55.0"
6161
stackable-devel = "1.0.0"
6262

nifi/boil-config.toml

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,6 @@
11
[metadata.registries]
22
"oci.stackable.tech" = { namespace = "sdp" }
33

4-
[versions."1.28.1".local-images]
5-
java-base = "11"
6-
java-devel = "11"
7-
"shared/logback" = "1.3.14" # https://github.com/apache/nifi/blob/rel/nifi-1.28.1/pom.xml#L146
8-
9-
[versions."1.28.1".build-arguments]
10-
git-sync-version = "v4.4.1"
11-
# Check for new versions at the upstream: https://github.com/stackabletech/nifi-opa-plugin/tags
12-
# Checkout a Patchable version (patch-series) for the new tag
13-
nifi-opa-authorizer-plugin-version = "0.5.0"
14-
154
[versions."2.6.0".local-images]
165
java-base = "21"
176
java-devel = "21"
@@ -27,6 +16,7 @@ nifi-opa-authorizer-plugin-version = "0.5.0"
2716
# Checkout a Patchable version (patch-series) for the new tag
2817
nifi-iceberg-bundle-version = "0.0.5"
2918

19+
# Deprecated since 26.7.0
3020
[versions."2.7.2".local-images]
3121
java-base = "21" # As stated in GitHub README
3222
java-devel = "21"
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
[metadata]
22
"oci.stackable.tech" = { namespace = "sdp" }
33

4-
[versions."0.28.0".build-arguments]
5-
# Find this in https://github.com/prometheus/statsd_exporter/blob/v0.28.0/go.mod
4+
[versions."0.29.0".build-arguments]
5+
# Find this in https://github.com/prometheus/statsd_exporter/blob/v0.29.0/go.mod
66
# You can find the latest patch version at: https://go.dev/doc/devel/release
77
# Mirror golang (no `v` prefix) via https://github.com/stackabletech/docker-images/actions/workflows/mirror.yaml
88
# Note: currently mirrored to the `sdp` project, but should probably move elsewhere.
99
golang-version = "1.22.12"
1010
# We use version 1.7.0, since a newer version of cyclonedx-gomod is not compatible with the version of Golang (>= 1.23.1)
1111
cyclonedx-gomod-version = "1.7.0"
1212

13-
[versions."0.28.0".local-images]
13+
[versions."0.29.0".local-images]
1414
stackable-devel = "1.0.0"

stackable-base/Dockerfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@ FROM local-image/stackable-devel AS rust-binaries
1111

1212
# Find the latest version here: https://github.com/stackabletech/config-utils/tags
1313
# renovate: datasource=github-tags packageName=stackabletech/config-utils
14-
ENV CONFIG_UTILS_VERSION=0.3.0
14+
ENV CONFIG_UTILS_VERSION=0.4.0
1515
# Find the latest version here: https://github.com/stackabletech/containerdebug/tags
1616
# renovate: datasource=github-tags packageName=stackabletech/containerdebug
17-
ENV CONTAINERDEBUG_VERSION=0.3.0
17+
ENV CONTAINERDEBUG_VERSION=0.4.0
1818
# Find the latest version here: https://github.com/stackabletech/secret-operator/tags
1919
# I could not find support for prefixes or regex in https://docs.renovatebot.com/modules/datasource/github-tags/,
2020
# so I was unable to add a renovate hint.

superset/boil-config.toml

Lines changed: 41 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,31 +2,60 @@
22
"oci.stackable.tech" = { namespace = "sdp" }
33

44
[versions."4.1.4".local-images]
5-
"shared/statsd-exporter" = "0.28.0"
5+
"shared/statsd-exporter" = "0.29.0"
66
stackable-devel = "1.0.0"
77
vector = "0.55.0"
88

99
[versions."4.1.4".build-arguments]
1010
cyclonedx-bom-version = "6.0.0"
11-
# Find the flask-appbuilder version in the applicable constraints.txt file, then find the authlib version.
12-
# https://github.com/dpgaspar/Flask-AppBuilder/blob/release/4.5.0/requirements/extra.txt#L7
11+
# flask-appbuilder==4.5.0 is pinned in https://github.com/apache/superset/blob/4.1.4/requirements/base.txt (search for `flask-appbuilder==`),
12+
# which in turn pins authlib in https://github.com/dpgaspar/Flask-AppBuilder/blob/release/4.5.0/requirements/extra.txt (search for `authlib==`)
1313
authlib-version = "1.2.1"
14-
python-version = "3.9"
15-
uv-version = "0.7.3"
16-
nodejs-version = "20.20.2"
14+
# The default upstream image is built on Python 3.11 (`ARG PY_VER` in https://github.com/apache/superset/blob/4.1.4/Dockerfile)
15+
# and upstream CI tests 3.10 and 3.11 (https://github.com/apache/superset/blob/4.1.4/.github/actions/setup-backend/action.yml)
16+
python-version = "3.11"
17+
# Independent of Superset, use the latest release: https://github.com/astral-sh/uv/releases
18+
uv-version = "0.11.18"
19+
# https://github.com/apache/superset/blob/4.1.4/superset-frontend/.nvmrc
20+
nodejs-version = "18.20.1"
21+
# Independent of Superset, use the latest release: https://github.com/nvm-sh/nvm/releases
1722
nvm-version = "v0.40.4"
1823

1924
[versions."6.0.0".local-images]
20-
"shared/statsd-exporter" = "0.28.0"
25+
"shared/statsd-exporter" = "0.29.0"
2126
stackable-devel = "1.0.0"
2227
vector = "0.55.0"
2328

2429
[versions."6.0.0".build-arguments]
2530
cyclonedx-bom-version = "6.0.0"
26-
# Find the flask-appbuilder version in the applicable constraints.txt file, then find the authlib version.
27-
# https://github.com/dpgaspar/Flask-AppBuilder/blob/release/5.0.0/requirements/extra.txt#L7
31+
# flask-appbuilder==5.0.0 is pinned in https://github.com/apache/superset/blob/6.0.0/requirements/base.txt (search for `flask-appbuilder==`),
32+
# which in turn pins authlib in https://github.com/dpgaspar/Flask-AppBuilder/blob/release/5.0.0/requirements/extra.txt (search for `authlib==`)
2833
authlib-version = "1.2.1"
29-
python-version = "3.11"
30-
uv-version = "0.7.3"
31-
nodejs-version = "20.20.2"
34+
# Upstream CI tests 3.10, 3.11 and 3.12, choosing the newest Python version
35+
python-version = "3.12"
36+
# Independent of Superset, use the latest release: https://github.com/astral-sh/uv/releases
37+
uv-version = "0.11.18"
38+
# https://github.com/apache/superset/blob/6.0.0/superset-frontend/.nvmrc
39+
nodejs-version = "20.18.3"
40+
# Independent of Superset, use the latest release: https://github.com/nvm-sh/nvm/releases
41+
nvm-version = "v0.40.4"
42+
43+
[versions."6.1.0".local-images]
44+
"shared/statsd-exporter" = "0.28.0"
45+
stackable-devel = "1.0.0"
46+
vector = "0.55.0"
47+
48+
[versions."6.1.0".build-arguments]
49+
cyclonedx-bom-version = "6.0.0"
50+
# flask-appbuilder==5.0.2 is pinned in https://github.com/apache/superset/blob/6.1.0/requirements/base.txt (search for `flask-appbuilder==`),
51+
# which in turn pins authlib in https://github.com/dpgaspar/Flask-AppBuilder/blob/release/5.0.2/requirements/extra.txt (search for `authlib==`)
52+
authlib-version = "1.2.1"
53+
# Upstream CI tests 3.10, 3.11 and 3.12 (https://github.com/apache/superset/blob/6.1.0/.github/actions/setup-backend/action.yml)
54+
# and a py312 image variant is published. We use 3.12
55+
python-version = "3.12"
56+
# Independent of Superset, use the latest release: https://github.com/astral-sh/uv/releases
57+
uv-version = "0.11.18"
58+
# https://github.com/apache/superset/blob/6.1.0/superset-frontend/.nvmrc
59+
nodejs-version = "22.22.0"
60+
# Independent of Superset, use the latest release: https://github.com/nvm-sh/nvm/releases
3261
nvm-version = "v0.40.4"
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
#!/usr/bin/env bash
2+
# Determine the upstream-tested tool/dependency versions for a given Apache Superset
3+
# version, to fill in the `[versions."X.Y.Z".build-arguments]` section of
4+
# superset/boil-config.toml.
5+
#
6+
# Usage: ./upstream-versions.sh <superset-version>
7+
# Example: ./upstream-versions.sh 6.1.0
8+
#
9+
# Sources used:
10+
# nodejs-version -> superset-frontend/.nvmrc at the Superset tag
11+
# flask-appbuilder -> requirements/base.txt at the Superset tag (informational; must
12+
# match the pin in superset/stackable/constraints/<version>/)
13+
# authlib-version -> requirements/extra.txt at the matching Flask-AppBuilder release
14+
# python-version -> `ARG PY_VER` in the upstream Dockerfile (their default image),
15+
# plus the CI-tested versions from .github/actions/setup-backend.
16+
# Picking among the CI-tested versions is a human decision.
17+
# uv/nvm-version -> independent of Superset, latest GitHub release
18+
19+
set -euo pipefail
20+
21+
VERSION=${1:?Usage: $0 <superset-version> (e.g. 6.1.0)}
22+
RAW="https://raw.githubusercontent.com"
23+
24+
fetch() {
25+
curl --fail --silent --show-error --location "$1"
26+
}
27+
28+
latest_release() {
29+
fetch "https://api.github.com/repos/$1/releases/latest" \
30+
| sed -nE 's/.*"tag_name": *"([^"]+)".*/\1/p' | head -1
31+
}
32+
33+
# Node.js: pinned by upstream in superset-frontend/.nvmrc (strip the leading `v`)
34+
nodejs=$(fetch "$RAW/apache/superset/$VERSION/superset-frontend/.nvmrc" | tr -d 'v[:space:]')
35+
36+
# Flask-AppBuilder: pinned in requirements/base.txt
37+
fab=$(fetch "$RAW/apache/superset/$VERSION/requirements/base.txt" \
38+
| sed -nE 's/^flask-appbuilder==([0-9.]+).*/\1/p' | head -1)
39+
40+
# Authlib: pinned by Flask-AppBuilder in requirements/extra.txt
41+
authlib=$(fetch "$RAW/dpgaspar/Flask-AppBuilder/release/$fab/requirements/extra.txt" \
42+
| sed -nE 's/^authlib==([0-9.]+).*/\1/p' | head -1)
43+
44+
# Python: the upstream image default (ARG PY_VER in the Dockerfile) ...
45+
py_default=$(fetch "$RAW/apache/superset/$VERSION/Dockerfile" \
46+
| sed -nE 's/^ARG PY_VER=([0-9]+\.[0-9]+).*/\1/p' | head -1)
47+
# ... and all CI-tested versions (the previous/current/next aliases)
48+
py_tested=$(fetch "$RAW/apache/superset/$VERSION/.github/actions/setup-backend/action.yml" \
49+
| sed -nE 's/.*PYTHON_VERSION=([0-9]+\.[0-9]+).*/\1/p' | sort -uV | xargs | sed 's/ /, /g')
50+
51+
# uv and nvm are independent of Superset, use the latest release
52+
uv=$(latest_release astral-sh/uv)
53+
nvm=$(latest_release nvm-sh/nvm)
54+
55+
cat <<EOF
56+
Superset $VERSION
57+
flask-appbuilder: $fab (informational, must match stackable/constraints/$VERSION/constraints.txt)
58+
authlib-version: $authlib
59+
python-version: $py_default (upstream image default; CI-tested: $py_tested)
60+
nodejs-version: $nodejs
61+
uv-version: $uv (latest release)
62+
nvm-version: $nvm (latest release)
63+
EOF
64+
65+
# Sanity check: the vendored constraints must pin the same Flask-AppBuilder version,
66+
# otherwise the authlib version derived above is based on the wrong FAB release.
67+
constraints="$(dirname "$0")/stackable/constraints/$VERSION/constraints.txt"
68+
if [ -f "$constraints" ]; then
69+
local_fab=$(sed -nE 's/^flask-appbuilder==([0-9.]+).*/\1/p' "$constraints" | head -1)
70+
if [ "$local_fab" != "$fab" ]; then
71+
echo >&2
72+
echo "WARNING: $constraints pins flask-appbuilder==$local_fab but upstream pins $fab" >&2
73+
exit 1
74+
fi
75+
else
76+
echo >&2
77+
echo "NOTE: no constraints file at $constraints yet - create it before building" >&2
78+
fi
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# It is not yet known how and when to change this
2+
# I will try without it overridden for now
3+
# Cython==3.0.12

0 commit comments

Comments
 (0)