Skip to content

Commit 380b5ee

Browse files
committed
Merge branch 'main' into chore/remove-deprecated-hdfs-pre-25.7.0
2 parents 708efa5 + 151bb97 commit 380b5ee

File tree

114 files changed

+1759
-394
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

114 files changed

+1759
-394
lines changed

.github/ISSUE_TEMPLATE/update-product-airflow.md

+1
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ Add/Change/Remove anything that isn't applicable anymore
3131
- [ ] Download new constraints file (see `airflow/download_constraints.sh`).
3232
- [ ] Update other dependencies if applicable (eg: python, statsd_exporter, etc).
3333
- [ ] Check other operators (getting_started / kuttl / supported-versions) for usage of the versions. Add the PR(s) to the list below.
34+
- [ ] Ensure prerequisites are up to date (required-external-components.adoc).
3435
- [ ] Update the version in demos. Add the PR(s) to the list below.
3536

3637
## Related Pull Requests

.github/ISSUE_TEMPLATE/update-product-druid.md

+1
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ Add/Change/Remove anything that isn't applicable anymore
3434
- [ ] Update `versions.py` to the latest supported version of JVM (base and devel).
3535
- [ ] Update the [druid-opa-authorizer](https://github.com/stackabletech/druid-opa-authorizer/) with the new set of versions.
3636
- [ ] Check other operators (getting_started / kuttl / supported-versions) for usage of the versions. Add the PR(s) to the list below.
37+
- [ ] Ensure prerequisites are up to date (required-external-components.adoc).
3738
- [ ] Update the version in demos. Add the PR(s) to the list below.
3839

3940
## Related Pull Requests

.github/ISSUE_TEMPLATE/update-product-hive.md

+1
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ Add/Change/Remove anything that isn't applicable anymore
3232
- [ ] Update `versions.py` to the latest supported version of JVM (base and devel).
3333
- [ ] Update other dependencies if applicable (eg: jmx_exporter, aws_java_sdk_bundle, etc).
3434
- [ ] Check other operators (getting_started / kuttl / supported-versions) for usage of the versions. Add the PR(s) to the list below.
35+
- [ ] Ensure prerequisites are up to date (required-external-components.adoc).
3536
- [ ] Update the version in demos. Add the PR(s) to the list below.
3637

3738
## Related Pull Requests

.github/ISSUE_TEMPLATE/update-product-superset.md

+1
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ Add/Change/Remove anything that isn't applicable anymore
3333
- [ ] Delete old constraint files and patch directories.
3434
- [ ] Update other dependencies if applicable (eg: python, auth_lib, etc).
3535
- [ ] Check other operators (getting_started / kuttl / supported-versions) for usage of the versions. Add the PR(s) to the list below.
36+
- [ ] Ensure prerequisites are up to date (required-external-components.adoc).
3637
- [ ] Update the version in demos. Add the PR(s) to the list below.
3738

3839
## Related Pull Requests

.github/workflows/mirror.yaml

+8-4
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ on:
1414
- registry.k8s.io/sig-storage/csi-node-driver-registrar
1515
- registry.k8s.io/sig-storage/csi-provisioner
1616
- registry.k8s.io/git-sync/git-sync
17+
- registry-1.docker.io/library/golang
1718
image-index-manifest-tag:
1819
description: |
1920
The image index manifest tag, like 1.0.14 or v1.0.14
@@ -35,7 +36,7 @@ jobs:
3536
- amd64
3637
- arm64
3738
steps:
38-
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
39+
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
3940
with:
4041
persist-credentials: false
4142

@@ -56,7 +57,7 @@ jobs:
5657
echo "IMAGE_REPOSITORY=$(.scripts/get_repo_name.sh)" | tee -a "$GITHUB_ENV"
5758
5859
- name: Publish Container Image on oci.stackable.tech
59-
uses: stackabletech/actions/publish-image@320eae677555385b3d40e1c3a81d9263b72742e4 # 0.6.0
60+
uses: stackabletech/actions/publish-image@55d2f9fcbcd7884ac929ea65fd6f069e7b7a49d2 # 0.8.1
6061
with:
6162
image-registry-uri: oci.stackable.tech
6263
image-registry-username: robot$sdp+github-action-build
@@ -72,7 +73,7 @@ jobs:
7273
id-token: write
7374
runs-on: ubuntu-latest
7475
steps:
75-
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
76+
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
7677
with:
7778
persist-credentials: false
7879

@@ -83,14 +84,17 @@ jobs:
8384
echo "IMAGE_REPOSITORY=$(.scripts/get_repo_name.sh)" | tee -a "$GITHUB_ENV"
8485
8586
- name: Publish and Sign Image Index Manifest to oci.stackable.tech
86-
uses: stackabletech/actions/publish-index-manifest@320eae677555385b3d40e1c3a81d9263b72742e4 # 0.6.0
87+
uses: stackabletech/actions/publish-index-manifest@55d2f9fcbcd7884ac929ea65fd6f069e7b7a49d2 # 0.8.1
8788
with:
8889
image-registry-uri: oci.stackable.tech
8990
image-registry-username: robot$sdp+github-action-build
9091
image-registry-password: ${{ secrets.HARBOR_ROBOT_SDP_GITHUB_ACTION_BUILD_SECRET }}
9192
image-repository: ${{ format('sdp/{0}', env.IMAGE_REPOSITORY) }}
9293
image-index-manifest-tag: ${{ inputs.image-index-manifest-tag }}
9394

95+
# NOTE (@Techassi) It is currently not possible to use our own action here, because the inputs
96+
# assume it is used to report on image build results, not mirror results. The action needs to be
97+
# adjusted to support other use-cases.
9498
notify:
9599
name: Failure Notification
96100
needs: [mirror-image, publish_manifests]

.github/workflows/pr_pre-commit.yaml

+2-2
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,11 @@ jobs:
1212
pre-commit:
1313
runs-on: ubuntu-latest
1414
steps:
15-
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
15+
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
1616
with:
1717
persist-credentials: false
1818
fetch-depth: 0
19-
- uses: stackabletech/actions/run-pre-commit@320eae677555385b3d40e1c3a81d9263b72742e4 # 0.6.0
19+
- uses: stackabletech/actions/run-pre-commit@55d2f9fcbcd7884ac929ea65fd6f069e7b7a49d2 # 0.8.1
2020
with:
2121
python-version: ${{ env.PYTHON_VERSION }}
2222
hadolint: ${{ env.HADOLINT_VERSION }}

.github/workflows/preflight.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ jobs:
7474
env:
7575
GITHUB_REF_NAME: ${{ github.ref_name }}
7676
steps:
77-
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
77+
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
7878
with:
7979
persist-credentials: false
8080
- uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 # v5.2.0

.github/workflows/reusable_build_image.yaml

+14-47
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,11 @@ jobs:
2323
name: Generate Version List
2424
runs-on: ubuntu-latest
2525
steps:
26-
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
26+
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
2727
with:
2828
persist-credentials: false
2929
- id: shard
30-
uses: stackabletech/actions/shard@2d3d7ddad981ae09901d45a0f6bf30c2658b1b78 # 0.7.0
30+
uses: stackabletech/actions/shard@55d2f9fcbcd7884ac929ea65fd6f069e7b7a49d2 # 0.8.1
3131
with:
3232
product-name: ${{ inputs.product-name }}
3333
outputs:
@@ -48,23 +48,23 @@ jobs:
4848
versions: ${{ fromJson(needs.generate_matrix.outputs.versions) }}
4949
steps:
5050
- name: Checkout Repository
51-
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
51+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
5252
with:
5353
persist-credentials: false
5454

5555
- name: Free Disk Space
56-
uses: stackabletech/actions/free-disk-space@2d3d7ddad981ae09901d45a0f6bf30c2658b1b78 # 0.7.0
56+
uses: stackabletech/actions/free-disk-space@55d2f9fcbcd7884ac929ea65fd6f069e7b7a49d2 # 0.8.1
5757

5858
- name: Build Product Image
5959
id: build
60-
uses: stackabletech/actions/build-product-image@2d3d7ddad981ae09901d45a0f6bf30c2658b1b78 # 0.7.0
60+
uses: stackabletech/actions/build-product-image@55d2f9fcbcd7884ac929ea65fd6f069e7b7a49d2 # 0.8.1
6161
with:
6262
product-name: ${{ inputs.product-name }}
6363
product-version: ${{ matrix.versions }}
6464
sdp-version: ${{ inputs.sdp-version }}
6565

6666
- name: Publish Container Image on oci.stackable.tech
67-
uses: stackabletech/actions/publish-image@2d3d7ddad981ae09901d45a0f6bf30c2658b1b78 # 0.7.0
67+
uses: stackabletech/actions/publish-image@55d2f9fcbcd7884ac929ea65fd6f069e7b7a49d2 # 0.8.1
6868
with:
6969
image-registry-uri: oci.stackable.tech
7070
image-registry-username: robot$${{ inputs.registry-namespace }}+github-action-build
@@ -85,12 +85,12 @@ jobs:
8585
versions: ${{ fromJson(needs.generate_matrix.outputs.versions) }}
8686
steps:
8787
- name: Checkout Repository
88-
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
88+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
8989
with:
9090
persist-credentials: false
9191

9292
- name: Publish and Sign Image Index Manifest to oci.stackable.tech
93-
uses: stackabletech/actions/publish-index-manifest@2d3d7ddad981ae09901d45a0f6bf30c2658b1b78 # 0.7.0
93+
uses: stackabletech/actions/publish-index-manifest@55d2f9fcbcd7884ac929ea65fd6f069e7b7a49d2 # 0.8.1
9494
with:
9595
image-registry-uri: oci.stackable.tech
9696
image-registry-username: robot$${{ inputs.registry-namespace }}+github-action-build
@@ -102,44 +102,11 @@ jobs:
102102
name: Failure Notification
103103
needs: [generate_matrix, build, publish_manifests]
104104
runs-on: ubuntu-latest
105-
if: failure()
105+
if: failure() || github.run_attempt > 1
106106
steps:
107-
- uses: slackapi/slack-github-action@37ebaef184d7626c5f204ab8d3baff4262dd30f0 # v1.27.0
107+
- name: Send Notification
108+
uses: stackabletech/actions/send-slack-notification@55d2f9fcbcd7884ac929ea65fd6f069e7b7a49d2 # v0.8.1
108109
with:
109-
channel-id: "C07UG6JH44F" # notifications-container-images
110-
payload: |
111-
{
112-
"text": "*${{ github.workflow }}* failed (attempt ${{ github.run_attempt }})",
113-
"attachments": [
114-
{
115-
"pretext": "See the details below for a summary of which job(s) failed.",
116-
"color": "#aa0000",
117-
"fields": [
118-
{
119-
"title": "Generate Version List",
120-
"short": true,
121-
"value": "${{ needs.generate_matrix.result }}"
122-
},
123-
{
124-
"title": "Build/Publish Image",
125-
"short": true,
126-
"value": "${{ needs.build.result }}"
127-
},
128-
{
129-
"title": "Build/Publish Manifests",
130-
"short": true,
131-
"value": "${{ needs.publish_manifests.result }}"
132-
}
133-
],
134-
"actions": [
135-
{
136-
"type": "button",
137-
"text": "Go to workflow run",
138-
"url": "${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}/attempts/${{ github.run_attempt }}"
139-
}
140-
]
141-
}
142-
]
143-
}
144-
env:
145-
SLACK_BOT_TOKEN: ${{ secrets.slack-token }}
110+
publish-manifests-result: ${{ needs.publish_manifests.result }}
111+
build-result: ${{ needs.build.result }}
112+
slack-token: ${{ secrets.slack-token }}

.github/workflows/ubi-rust-builder.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ jobs:
2222
ubi-version: ["ubi9"]
2323
runs-on: ${{ matrix.runner }}
2424
steps:
25-
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
25+
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
2626
with:
2727
persist-credentials: false
2828
- name: Login to Stackable Harbor
@@ -63,7 +63,7 @@ jobs:
6363
runs-on: ubuntu-latest
6464
needs: ["build"]
6565
steps:
66-
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
66+
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
6767
with:
6868
persist-credentials: false
6969
- name: Login to Stackable Harbor

CHANGELOG.md

+21
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,10 @@ All notable changes to this project will be documented in this file.
88

99
- airflow: check for correct permissions and ownerships in /stackable folder via
1010
`check-permissions-ownership.sh` provided in stackable-base image ([#1054]).
11+
- airflow: Add `2.10.5` ([#1108]).
1112
- druid: check for correct permissions and ownerships in /stackable folder via
1213
`check-permissions-ownership.sh` provided in stackable-base image ([#1039]).
14+
- druid: Add `33.0.0` ([#1110]).
1315
- hadoop: check for correct permissions and ownerships in /stackable folder via
1416
`check-permissions-ownership.sh` provided in stackable-base image ([#1029]).
1517
- hbase: check for correct permissions and ownerships in /stackable folder via
@@ -23,20 +25,26 @@ All notable changes to this project will be documented in this file.
2325
`check-permissions-ownership.sh` provided in stackable-base image ([#1027]).
2426
- opa: check for correct permissions and ownerships in /stackable folder via
2527
`check-permissions-ownership.sh` provided in stackable-base image ([#1038]).
28+
- opa: Add `1.4.2` ([#1103]).
2629
- spark-k8s: check for correct permissions and ownerships in /stackable folder via
2730
`check-permissions-ownership.sh` provided in stackable-base image ([#1055]).
2831
- superset: check for correct permissions and ownerships in /stackable folder via
2932
`check-permissions-ownership.sh` provided in stackable-base image ([#1053]).
33+
- superset: Add version `4.1.2` ([#1102]).
3034
- trino: check for correct permissions and ownerships in /stackable folder via
3135
`check-permissions-ownership.sh` provided in stackable-base image ([#1025]).
3236
- zookeeper: check for correct permissions and ownerships in /stackable folder via
3337
`check-permissions-ownership.sh` provided in stackable-base image ([#1043]).
38+
- nifi: Add [nifi-iceberg-bundle](https://github.com/stackabletech/nifi-iceberg-bundle) for NiFi `2.2.0` ([#1060], [#1106]).
3439
- java: Add JDK 24 ([#1097]).
40+
- ci: Add golang image to mirror workflow ([#1103]).
3541

3642
### Changed
3743

44+
- airflow,superset: Use `uv` to build the product ([#1116]).
3845
- ubi-rust-builder: Bump Rust toolchain to 1.85.0, cargo-cyclonedx to 0.5.7, and cargo-auditable to 0.6.6 ([#1050]).
3946
- ubi9-rust-builder: Bump base image and update protoc to `30.2` ([#1091]).
47+
- stackable-devel: Bump ubi9 base image ([#1103]).
4048
- spark-k8s: Include spark-connect jars, replace OpenJDK with Temurin JDK, cleanup ([#1034]).
4149
- spark-connect-client: Image is now completely based on spark-k8s and includes JupyterLab and other demo dependencies ([#1071]).
4250
- jmx_exporter: Bump products to use `1.2.0` ([#1090]).
@@ -47,6 +55,7 @@ All notable changes to this project will be documented in this file.
4755

4856
### Fixed
4957

58+
- airflow: Pin Cython version ([#1116]).
5059
- druid: reduce docker image size by removing the recursive chown/chmods in the final image ([#1039]).
5160
- hadoop: reduce docker image size by removing the recursive chown/chmods in the final image ([#1029]).
5261
- hbase: reduce docker image size by removing the recursive chown/chmods in the final image ([#1028]).
@@ -55,7 +64,9 @@ All notable changes to this project will be documented in this file.
5564
- Add `--locked` flag to `cargo install` commands for reproducible builds ([#1044]).
5665
- nifi: reduce docker image size by removing the recursive chown/chmods in the final image ([#1027]).
5766
- opa: reduce docker image size by removing the recursive chown/chmods in the final image ([#1038]).
67+
- opa: Manually install Go 1.23.9 ([#1103]).
5868
- spark-k8s: reduce docker image size by removing the recursive chown/chmods in the final image ([#1042]).
69+
- superset: Pin Cython version ([#1116]).
5970
- trino: reduce docker image size by removing the recursive chown/chmods in the final image ([#1025]).
6071
- zookeeper: reduce docker image size by removing the recursive chown/chmods in the final image ([#1043]).
6172
- Fixed two hardcoded username references ([#1052]).
@@ -67,6 +78,9 @@ All notable changes to this project will be documented in this file.
6778
- zookeeper: Remove 3.9.2 ([#1093]).
6879
- Remove ubi8-rust-builder image ([#1091]).
6980
- hadoop: Remove `3.3.4` and `3.4.0` ([#1099]).
81+
- opa: Remove `0.67.1` ([#1103]).
82+
- opa: Remove legacy bundle-builder from container build ([#1103]).
83+
- druid: Remove `30.0.0` ([#1110]).
7084

7185
[#1025]: https://github.com/stackabletech/docker-images/pull/1025
7286
[#1027]: https://github.com/stackabletech/docker-images/pull/1027
@@ -86,12 +100,19 @@ All notable changes to this project will be documented in this file.
86100
[#1054]: https://github.com/stackabletech/docker-images/pull/1054
87101
[#1055]: https://github.com/stackabletech/docker-images/pull/1055
88102
[#1056]: https://github.com/stackabletech/docker-images/pull/1056
103+
[#1060]: https://github.com/stackabletech/docker-images/pull/1060
89104
[#1090]: https://github.com/stackabletech/docker-images/pull/1090
90105
[#1091]: https://github.com/stackabletech/docker-images/pull/1091
91106
[#1093]: https://github.com/stackabletech/docker-images/pull/1093
92107
[#1097]: https://github.com/stackabletech/docker-images/pull/1097
93108
[#1098]: https://github.com/stackabletech/docker-images/pull/1098
94109
[#1099]: https://github.com/stackabletech/docker-images/pull/1099
110+
[#1102]: https://github.com/stackabletech/docker-images/pull/1102
111+
[#1103]: https://github.com/stackabletech/docker-images/pull/1103
112+
[#1106]: https://github.com/stackabletech/docker-images/pull/1106
113+
[#1108]: https://github.com/stackabletech/docker-images/pull/1108
114+
[#1110]: https://github.com/stackabletech/docker-images/pull/1110
115+
[#1116]: https://github.com/stackabletech/docker-images/pull/1116
95116

96117
## [25.3.0] - 2025-03-21
97118

Cargo.lock

+4-4
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ resolver = "2"
44

55
[workspace.dependencies]
66
clap = { version = "4.5.27", features = ["derive"] }
7-
git2 = "0.20.0"
7+
git2 = "0.20.1"
88
serde = { version = "1.0.217", features = ["derive"] }
99
snafu = "0.8.5"
1010
tempfile = "3.16.0"

airflow/Dockerfile

+13-7
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,7 @@ ARG TARGETARCH
3131
ARG STACKABLE_USER_UID
3232
ARG S3FS
3333
ARG CYCLONEDX_BOM
34-
35-
COPY airflow/constraints-${PRODUCT}-python${PYTHON}.txt /tmp/constraints.txt
36-
COPY --from=opa-auth-manager-builder /tmp/opa-auth-manager/dist/opa_auth_manager-0.1.0-py3-none-any.whl /tmp/
34+
ARG UV
3735

3836
# The mysql provider is currently excluded.
3937
# Requires implementation of https://github.com/apache/airflow/blob/2.2.5/scripts/docker/install_mysql.sh
@@ -62,19 +60,27 @@ RUN microdnf update && \
6260
microdnf clean all && \
6361
rm -rf /var/cache/yum
6462

63+
COPY airflow/stackable/constraints/${PRODUCT}/constraints-python${PYTHON}.txt /tmp/constraints.txt
64+
COPY airflow/stackable/constraints/${PRODUCT}/build-constraints-python${PYTHON}.txt /tmp/build-constraints.txt
65+
COPY --from=opa-auth-manager-builder /tmp/opa-auth-manager/dist/opa_auth_manager-0.1.0-py3-none-any.whl /tmp/
66+
6567
RUN <<EOF
6668
python${PYTHON} -m venv --system-site-packages /stackable/app
6769

6870
source /stackable/app/bin/activate
6971

72+
# Upgrade pip to the latest version
73+
# Also install uv to get support for build constraints
7074
pip install --no-cache-dir --upgrade pip
71-
pip install --no-cache-dir apache-airflow[${AIRFLOW_EXTRAS}]==${PRODUCT} --constraint /tmp/constraints.txt
75+
pip install --no-cache-dir uv==${UV}
76+
77+
uv pip install --no-cache-dir apache-airflow[${AIRFLOW_EXTRAS}]==${PRODUCT} --constraint /tmp/constraints.txt --build-constraints /tmp/build-constraints.txt
7278
# Needed for pandas S3 integration to e.g. write and read csv and parquet files to/from S3
73-
pip install --no-cache-dir s3fs==${S3FS} cyclonedx-bom==${CYCLONEDX_BOM}
79+
uv pip install --no-cache-dir s3fs==${S3FS} cyclonedx-bom==${CYCLONEDX_BOM}
7480
# Needed for OIDC
75-
pip install --no-cache-dir Flask_OIDC==2.2.0 Flask-OpenID==1.3.1
81+
uv pip install --no-cache-dir Flask_OIDC==2.2.0 Flask-OpenID==1.3.1
7682

77-
pip install --no-cache-dir /tmp/opa_auth_manager-0.1.0-py3-none-any.whl
83+
uv pip install --no-cache-dir /tmp/opa_auth_manager-0.1.0-py3-none-any.whl
7884

7985
# Create the SBOM for Airflow
8086
# Important: All `pip install` commands must be above this line, otherwise the SBOM will be incomplete
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Cython==3.1.0

0 commit comments

Comments
 (0)