diff --git a/.github/ISSUE_TEMPLATE/update-base-ubi-rust-builders.md b/.github/ISSUE_TEMPLATE/update-base-ubi-rust-builders.md index cb552e447..ad112752f 100644 --- a/.github/ISSUE_TEMPLATE/update-base-ubi-rust-builders.md +++ b/.github/ISSUE_TEMPLATE/update-base-ubi-rust-builders.md @@ -51,7 +51,7 @@ Add/Change/Remove anything that isn't applicable anymore > This list should be completed by the assignee(s), once respective PRs have been merged. Once all items have been > checked, the issue can be moved into _Development: Done_. -- [ ] Done for [ubi9-rust-builder/Dockerfile](https://github.com/stackabletech/docker-images/blob/main/ubi9-rust-builder/Dockerfile) +- [ ] Done for [ubi10-rust-builder/Dockerfile](https://github.com/stackabletech/docker-images/blob/main/ubi10-rust-builder/Dockerfile) - [ ] Can build the image locally - [ ] Can build an operator image @@ -59,7 +59,7 @@ Add/Change/Remove anything that isn't applicable anymore Testing instructions ```shell -docker build -t oci.stackable.tech/sdp/ubi9-rust-builder . -f ubi9-rust-builder/Dockerfile +docker build -t oci.stackable.tech/sdp/ubi10-rust-builder . -f ubi10-rust-builder/Dockerfile # Change directory into the an operator repository and ensure the image can build docker build . -f docker/Dockerfile diff --git a/.github/workflows/ubi-rust-builder.yml b/.github/workflows/ubi-rust-builder.yml index 7f8f580f5..5afef7bba 100644 --- a/.github/workflows/ubi-rust-builder.yml +++ b/.github/workflows/ubi-rust-builder.yml @@ -8,7 +8,6 @@ on: branches: - main paths: - - ubi9-rust-builder/** - ubi10-rust-builder/** - .github/actions/** - .github/workflows/ubi-rust-builder.yml @@ -25,7 +24,7 @@ jobs: fail-fast: false matrix: runner: ["ubuntu-latest", "ubicloud-standard-8-arm-ubuntu-2404"] - ubi-version: ["ubi9"] + ubi-version: ["ubi10"] runs-on: ${{ matrix.runner }} steps: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 @@ -65,7 +64,7 @@ jobs: strategy: fail-fast: false matrix: - ubi-version: ["ubi9"] + ubi-version: ["ubi10"] runs-on: ubuntu-latest needs: ["build"] steps: diff --git a/.scripts/upload_new_maven_version.sh b/.scripts/upload_new_maven_version.sh index 9b8e21ec3..fbd25d350 100755 --- a/.scripts/upload_new_maven_version.sh +++ b/.scripts/upload_new_maven_version.sh @@ -71,4 +71,4 @@ curl --fail -o /dev/null --progress-bar -u "$NEXUS_USER:$NEXUS_PASSWORD" --uploa echo "Successfully uploaded Maven $VERSION to Nexus" echo "https://repo.stackable.tech/service/rest/repository/browse/packages/maven/" -echo "https://github.com/prometheus/maven/releases/tag/$VERSION" +echo "https://github.com/apache/maven/releases/tag/maven-$VERSION" diff --git a/.scripts/upload_new_nvm_version.sh b/.scripts/upload_new_nvm_version.sh new file mode 100755 index 000000000..6eddd22fe --- /dev/null +++ b/.scripts/upload_new_nvm_version.sh @@ -0,0 +1,50 @@ +#!/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 + +# https://github.com/nvm-sh/nvm/archive/refs/tags/v0.40.3.tar.gz +BASE_URL="https://github.com/nvm-sh/nvm/archive/refs/tags" +ARCHIVE_FILE="v$VERSION.tar.gz" +ARCHIVE_URL="$BASE_URL/$ARCHIVE_FILE" + +echo "Downloading nvm $VERSION" +curl --fail -LO --progress-bar "$ARCHIVE_URL" + +# nvm maintainers don't produce sum files + +echo "Uploading to Nexus" + +curl --fail -o /dev/null --progress-bar -u "$NEXUS_USER:$NEXUS_PASSWORD" --upload-file "$ARCHIVE_FILE" 'https://repo.stackable.tech/repository/packages/nvm/' + +echo "Successfully uploaded nvm $VERSION to Nexus" +echo "https://repo.stackable.tech/service/rest/repository/browse/packages/nvm/" +echo "https://github.com/nvm-sh/nvm/releases/tag/v$VERSION" diff --git a/airflow/Dockerfile b/airflow/Dockerfile index f518903fc..e585b4948 100644 --- a/airflow/Dockerfile +++ b/airflow/Dockerfile @@ -23,10 +23,10 @@ WORKDIR /tmp/opa-auth-manager RUN < 0 {if (!seen[$0]++) print $0}' | tr '\n' ',' | sed 's/,$//') -python${PYTHON_VERSION} -m venv --system-site-packages /stackable/app - -source /stackable/app/bin/activate - +# TODO: Use uv ${UV_VERSION} from Nexus instead of pip # Upgrade pip to the latest version -# Also install uv to get support for build constraints +# Also install uv to get support for build constraints and venv for a given python version pip install --no-cache-dir --upgrade pip pip install --no-cache-dir uv==${UV_VERSION} + +uv venv --python "${PYTHON_VERSION}" --system-site-packages /stackable/app +source /stackable/app/bin/activate + +# Another project manager uv tool install hatch cd "$(/stackable/patchable --images-repo-root=src checkout airflow ${PRODUCT_VERSION})" @@ -200,6 +201,7 @@ ARG TINI_VERSION ARG TARGETARCH ARG SHARED_STATSD_EXPORTER_VERSION ARG STACKABLE_USER_UID +ARG UV_VERSION LABEL name="Apache Airflow" \ maintainer="info@stackable.tech" \ @@ -225,6 +227,9 @@ COPY --from=gitsync-image --chown=${STACKABLE_USER_UID}:0 /git-sync ${HOME}/git- COPY airflow/licenses /licenses +# TODO (@NickLarsenNZ): Get the image into our registry +COPY --from=ghcr.io/astral-sh/uv:0.9.10 --chown=${STACKABLE_USER_UID}:0 /uv /uvx /bin/ + # Update image and install needed packages RUN <