This is an automated email from the ASF dual-hosted git repository.

skrawcz pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/hamilton.git

commit 6f3ca6de1c001e9b121b86f5a6f7d296562516c1
Author: Stefan Krawczyk <[email protected]>
AuthorDate: Mon Feb 23 08:57:11 2026 -0800

    Add Apache Software Foundation compliance to Docker infrastructure
    
    This commit ensures Hamilton UI Docker images comply with ASF requirements:
    
    1. Added Incubator Disclaimers to Dockerfiles
       - All 4 Dockerfiles now include the required incubator disclaimer
       - Placed after Apache license header as per ASF guidelines
       - Affects: backend/Dockerfile.backend, backend/Dockerfile.backend-prod,
         frontend/Dockerfile.frontend, frontend/Dockerfile.frontend-prod
    
    2. Rewrote buildx_and_push.sh with Apache-Compliant Tagging
       - Changed namespace from dagworks/* to apache/hamilton-*
       - Implemented proper tagging strategy:
         * Release: VERSION (can tag :latest with PMC approval)
         * RC: VERSION-rcN (cannot use :latest)
         * Snapshot: VERSION-SNAPSHOT (cannot use :latest)
         * Nightly: VERSION-nightly-YYYYMMDD (cannot use :latest)
       - Added command-line arguments: --version, --type, --rc-number, 
--tag-latest
       - Added safety checks preventing :latest for non-releases
       - Added PMC approval confirmation prompt
       - Removed automatic PyPI version fetching
    
    3. Created DOCKER_RELEASE.md Documentation
       - Comprehensive guide for Apache-compliant Docker releases
       - Covers dev.sh, run.sh, and buildx_and_push.sh workflows
       - Documents tagging policy and multi-architecture builds
       - Includes release checklist and PMC approval process
       - Lists common issues and security considerations
    
    These changes ensure compliance with ASF Docker distribution policies:
    - https://www.apache.org/legal/release-policy.html
    - https://incubator.apache.org/policy/incubation.html#releases
---
 ui/BUILD.md                          |  19 ++
 ui/DOCKER_RELEASE.md                 | 338 +++++++++++++++++++++++++++++++++++
 ui/backend/Dockerfile.backend        |   9 +
 ui/backend/Dockerfile.backend-prod   |   9 +
 ui/buildx_and_push.sh                | 244 ++++++++++++++++++++-----
 ui/frontend/Dockerfile.frontend      |   9 +
 ui/frontend/Dockerfile.frontend-prod |   9 +
 ui/start_mini_mode.sh                |  17 ++
 ui/test_tracking.py                  |  17 ++
 ui/test_tracking_simple.py           |  17 ++
 10 files changed, 639 insertions(+), 49 deletions(-)

diff --git a/ui/BUILD.md b/ui/BUILD.md
index f70160fd..9c143317 100644
--- a/ui/BUILD.md
+++ b/ui/BUILD.md
@@ -1,3 +1,22 @@
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
 # Building the Hamilton UI
 
 The Hamilton UI has two deployment modes, each with its own build process:
diff --git a/ui/DOCKER_RELEASE.md b/ui/DOCKER_RELEASE.md
new file mode 100644
index 00000000..9f6500eb
--- /dev/null
+++ b/ui/DOCKER_RELEASE.md
@@ -0,0 +1,338 @@
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+# Apache Hamilton UI - Docker Release Guide
+
+This document describes the Apache-compliant Docker build and release process 
for Hamilton UI.
+
+## Overview
+
+Hamilton UI provides three Docker deployment modes:
+
+1. **Development Mode** (`dev.sh`) - Hot-reload development with separate 
frontend/backend containers
+2. **Production Mode** (`run.sh`) - Production-ready with separate 
frontend/backend containers
+3. **Official Release** (`buildx_and_push.sh`) - Multi-architecture builds for 
Apache Docker Hub
+
+## Apache Software Foundation Requirements
+
+As an Apache Incubator project, Hamilton must follow ASF Docker distribution 
policies:
+
+### 1. Docker Hub Namespace
+
+All official Docker images MUST be published to:
+- ✅ `apache/hamilton-ui-frontend`
+- ✅ `apache/hamilton-ui-backend`
+- ❌ NOT `dagworks/*` or personal namespaces
+
+### 2. Incubator Disclaimer
+
+All Dockerfiles and Docker Hub overview pages MUST include:
+
+```
+Apache Hamilton is an effort undergoing incubation at The Apache Software
+Foundation (ASF), sponsored by the Apache Incubator. Incubation is required
+of all newly accepted projects until a further review indicates that the
+infrastructure, communications, and decision making process have stabilized
+in a manner consistent with other successful ASF projects. While incubation
+status is not necessarily a reflection of the completeness or stability of
+the code, it does indicate that the project has yet to be fully endorsed by
+the ASF.
+```
+
+### 3. Tagging Policy
+
+The `:latest` tag can ONLY be used for PMC-approved releases:
+
+| Build Type | Tag Format | Can Use `:latest`? | Example |
+|------------|------------|-------------------|---------|
+| Release | `VERSION` | ✅ Yes (with PMC approval) | `0.0.17` |
+| Release Candidate | `VERSION-rcN` | ❌ No | `0.0.18-rc1` |
+| Snapshot | `VERSION-SNAPSHOT` | ❌ No | `0.0.18-SNAPSHOT` |
+| Nightly | `VERSION-nightly-YYYYMMDD` | ❌ No | `0.0.18-nightly-20260223` |
+
+### 4. License and Notice Files
+
+Docker images SHOULD include:
+- `LICENSE` - Apache License 2.0
+- `NOTICE` - Copyright and third-party notices
+- `DISCLAIMER` - Incubator disclaimer
+
+## Development Workflow
+
+### Local Development (`dev.sh`)
+
+For active development with hot-reload:
+
+```bash
+cd ui
+./dev.sh --build
+
+# Access at:
+# - Frontend: http://localhost:8242
+# - Backend API: http://localhost:8241
+# - PostgreSQL: localhost:5432
+```
+
+**Features:**
+- Hot-reload for both frontend and backend
+- Source code mounted as volumes
+- Development-optimized (not production-ready)
+- Single architecture (your host platform)
+
+### Local Production Testing (`run.sh`)
+
+To test production builds locally:
+
+```bash
+cd ui
+./run.sh --build
+
+# Access at:
+# - Frontend: http://localhost:8242
+# - Backend API: http://localhost:8241
+```
+
+**Features:**
+- Production-optimized builds
+- No hot-reload
+- Nginx serves frontend static files
+- Single architecture (your host platform)
+
+## Official Release Process
+
+### Prerequisites
+
+1. **Docker Buildx** installed and configured:
+   ```bash
+   docker buildx version
+   ```
+
+2. **Docker Hub credentials** with push access to `apache/hamilton-*`:
+   ```bash
+   docker login
+   ```
+
+3. **PMC approval** for releases (required before tagging `:latest`)
+
+### Building Release Candidates
+
+Release candidates are used for community voting before official releases:
+
+```bash
+cd ui
+./buildx_and_push.sh --version 0.0.18 --type rc --rc-number 1
+```
+
+This creates:
+- `apache/hamilton-ui-frontend:0.0.18-rc1`
+- `apache/hamilton-ui-backend:0.0.18-rc1`
+
+### Building Official Releases
+
+After PMC approval, build and tag the official release:
+
+```bash
+cd ui
+./buildx_and_push.sh --version 0.0.17 --type release --tag-latest
+```
+
+**Interactive Prompt:**
+```
+WARNING: You are about to tag this build as :latest
+This should ONLY be done for PMC-approved releases.
+
+Has this release been approved by the Apache Hamilton PMC? (yes/no):
+```
+
+Type `yes` to proceed. This creates:
+- `apache/hamilton-ui-frontend:0.0.17`
+- `apache/hamilton-ui-frontend:latest`
+- `apache/hamilton-ui-backend:0.0.17`
+- `apache/hamilton-ui-backend:latest`
+
+### Building Snapshots
+
+For development snapshots (not official releases):
+
+```bash
+cd ui
+./buildx_and_push.sh --version 0.0.18 --type snapshot
+```
+
+This creates:
+- `apache/hamilton-ui-frontend:0.0.18-SNAPSHOT`
+- `apache/hamilton-ui-backend:0.0.18-SNAPSHOT`
+
+### Building Nightly Builds
+
+For automated nightly builds:
+
+```bash
+cd ui
+./buildx_and_push.sh --version 0.0.18 --type nightly
+```
+
+This creates:
+- `apache/hamilton-ui-frontend:0.0.18-nightly-20260223`
+- `apache/hamilton-ui-backend:0.0.18-nightly-20260223`
+
+Date is automatically appended (format: YYYYMMDD).
+
+## Multi-Architecture Support
+
+All official builds use Docker Buildx to create multi-architecture images:
+
+**Platforms:**
+- `linux/amd64` (Intel/AMD x86-64)
+- `linux/arm64` (Apple Silicon, ARM servers)
+
+**Build Process:**
+1. Creates `hamilton-builder` buildx instance (if not exists)
+2. Builds both architectures in parallel
+3. Pushes manifest list to Docker Hub
+4. Users automatically pull correct architecture
+
+## Docker Hub Setup
+
+### Repository Overview Text
+
+Both `apache/hamilton-ui-frontend` and `apache/hamilton-ui-backend` 
repositories MUST include:
+
+```markdown
+# Apache Hamilton UI
+
+Apache Hamilton is an effort undergoing incubation at The Apache Software
+Foundation (ASF), sponsored by the Apache Incubator. Incubation is required
+of all newly accepted projects until a further review indicates that the
+infrastructure, communications, and decision making process have stabilized
+in a manner consistent with other successful ASF projects. While incubation
+status is not necessarily a reflection of the completeness or stability of
+the code, it does indicate that the project has yet to be fully endorsed by
+the ASF.
+
+## Quick Start
+
+Frontend:
+```bash
+docker run -p 8242:8242 apache/hamilton-ui-frontend:latest
+```
+
+Backend (requires PostgreSQL):
+```bash
+docker run -p 8241:8241 \
+  -e HAMILTON_POSTGRES_HOST=your-postgres-host \
+  -e HAMILTON_POSTGRES_DB=your-db-name \
+  -e HAMILTON_POSTGRES_USER=your-user \
+  -e HAMILTON_POSTGRES_PASSWORD=your-password \
+  apache/hamilton-ui-backend:latest
+```
+
+## Documentation
+
+- [GitHub Repository](https://github.com/apache/hamilton)
+- [Documentation](https://hamilton.apache.org/)
+- [Docker Compose Examples](https://github.com/apache/hamilton/tree/main/ui)
+
+## License
+
+Apache License 2.0 - See 
[LICENSE](https://github.com/apache/hamilton/blob/main/LICENSE)
+```
+
+### Automated Builds
+
+Consider setting up Docker Hub automated builds:
+
+1. Link GitHub repository to Docker Hub
+2. Configure build rules for tags matching `v*`
+3. Ensure builds use Apache namespace and proper tagging
+
+## Release Checklist
+
+Before creating an official release:
+
+- [ ] Update version in `ui/frontend/package.json`
+- [ ] Update version in `ui/backend/pyproject.toml`
+- [ ] Test using `./run.sh --build` locally
+- [ ] Verify all tests pass
+- [ ] Create release candidate: `./buildx_and_push.sh --version X.Y.Z --type 
rc --rc-number 1`
+- [ ] Send RC to [email protected] for voting
+- [ ] Wait for PMC approval (72 hours minimum, 3 +1 votes from PMC members)
+- [ ] Build official release: `./buildx_and_push.sh --version X.Y.Z --type 
release --tag-latest`
+- [ ] Verify images on Docker Hub
+- [ ] Announce release on [email protected]
+- [ ] Update documentation with new version
+
+## Common Issues
+
+### "Has this release been approved by the Apache Hamilton PMC?"
+
+This prompt appears when using `--tag-latest`. Only type `yes` if:
+1. A vote thread was sent to [email protected]
+2. At least 72 hours have passed
+3. At least 3 PMC members voted +1
+4. No -1 (veto) votes
+
+### "Error: Docker Buildx is not installed"
+
+Install Docker Buildx:
+```bash
+# macOS/Linux with Docker Desktop
+docker buildx version
+
+# Linux without Docker Desktop
+DOCKER_BUILDKIT=1 docker build --help | grep buildx
+```
+
+### Build fails with "permission denied"
+
+Ensure you're logged into Docker Hub with apache/* push access:
+```bash
+docker login
+```
+
+### "Error: --rc-number is required for release candidate builds"
+
+When building RCs, you must specify the RC number:
+```bash
+./buildx_and_push.sh --version 0.0.18 --type rc --rc-number 1
+```
+
+## Security Considerations
+
+### Current State (Development)
+
+Current Docker setup uses:
+- Root user (not production-ready)
+- Django development server (not production-ready)
+- Hardcoded credentials in docker-compose files (development only)
+
+### Future Improvements
+
+For production deployments, consider:
+- Running as non-root user (UID 1000)
+- Using gunicorn instead of `manage.py runserver`
+- Using secrets management (Docker secrets, Kubernetes secrets)
+- Adding health checks to docker-compose
+- Adding .dockerignore files
+
+## Additional Resources
+
+- [Apache Release Policy](https://www.apache.org/legal/release-policy.html)
+- [Apache Incubator 
Releases](https://incubator.apache.org/policy/incubation.html#releases)
+- [Hamilton UI 
Documentation](https://hamilton.apache.org/en/latest/concepts/ui/)
diff --git a/ui/backend/Dockerfile.backend b/ui/backend/Dockerfile.backend
index 30c26858..a1d6b063 100644
--- a/ui/backend/Dockerfile.backend
+++ b/ui/backend/Dockerfile.backend
@@ -15,6 +15,15 @@
 # specific language governing permissions and limitations
 # under the License.
 
+# Apache Hamilton is an effort undergoing incubation at The Apache Software
+# Foundation (ASF), sponsored by the Apache Incubator. Incubation is required
+# of all newly accepted projects until a further review indicates that the
+# infrastructure, communications, and decision making process have stabilized
+# in a manner consistent with other successful ASF projects. While incubation
+# status is not necessarily a reflection of the completeness or stability of
+# the code, it does indicate that the project has yet to be fully endorsed by
+# the ASF.
+
 FROM ghcr.io/astral-sh/uv:python3.12-bookworm-slim
 
 ENV PYTHONDONTWRITEBYTECODE=1 \
diff --git a/ui/backend/Dockerfile.backend-prod 
b/ui/backend/Dockerfile.backend-prod
index 30c26858..a1d6b063 100644
--- a/ui/backend/Dockerfile.backend-prod
+++ b/ui/backend/Dockerfile.backend-prod
@@ -15,6 +15,15 @@
 # specific language governing permissions and limitations
 # under the License.
 
+# Apache Hamilton is an effort undergoing incubation at The Apache Software
+# Foundation (ASF), sponsored by the Apache Incubator. Incubation is required
+# of all newly accepted projects until a further review indicates that the
+# infrastructure, communications, and decision making process have stabilized
+# in a manner consistent with other successful ASF projects. While incubation
+# status is not necessarily a reflection of the completeness or stability of
+# the code, it does indicate that the project has yet to be fully endorsed by
+# the ASF.
+
 FROM ghcr.io/astral-sh/uv:python3.12-bookworm-slim
 
 ENV PYTHONDONTWRITEBYTECODE=1 \
diff --git a/ui/buildx_and_push.sh b/ui/buildx_and_push.sh
index cb56f4ac..c8bc2157 100755
--- a/ui/buildx_and_push.sh
+++ b/ui/buildx_and_push.sh
@@ -16,10 +16,55 @@
 # specific language governing permissions and limitations
 # under the License.
 
+set -e
 
 export DOCKER_CLI_EXPERIMENTAL=enabled
 
-# check if Docker Buildx is installed
+# Apache-compliant Docker image naming
+# TODO: Update to apache/hamilton-* namespace when project graduates from 
incubator
+FRONTEND_IMAGE="apache/hamilton-ui-frontend"
+BACKEND_IMAGE="apache/hamilton-ui-backend"
+
+# Define common platforms/architectures
+PLATFORMS="linux/amd64,linux/arm64"
+
+# Usage information
+usage() {
+    cat <<EOF
+Usage: $0 [OPTIONS]
+
+Apache-compliant Docker image builder for Hamilton UI.
+
+OPTIONS:
+    --version VERSION       Specify version to build (required)
+    --type TYPE            Build type: release, rc, snapshot, nightly 
(default: release)
+    --rc-number NUM        Release candidate number (required if --type=rc)
+    --tag-latest           Tag as :latest (ONLY for approved releases)
+    --help                 Show this help message
+
+EXAMPLES:
+    # Official release (requires PMC approval)
+    $0 --version 0.0.17 --type release --tag-latest
+
+    # Release candidate
+    $0 --version 0.0.18 --type rc --rc-number 1
+
+    # Snapshot/development build
+    $0 --version 0.0.18 --type snapshot
+
+    # Nightly build
+    $0 --version 0.0.18 --type nightly
+
+IMPORTANT:
+    - :latest tag should ONLY be used for PMC-approved releases
+    - Release candidates must be tagged as VERSION-rcN
+    - Snapshots must be tagged as VERSION-SNAPSHOT
+    - Nightly builds must be tagged as VERSION-nightly-YYYYMMDD
+EOF
+    exit 1
+}
+
+# Check if Docker Buildx is installed
 check_buildx_installed() {
     if ! docker buildx version &> /dev/null; then
         echo "Error: Docker Buildx is not installed. Please install Docker 
Buildx to proceed."
@@ -27,60 +72,161 @@ check_buildx_installed() {
     fi
 }
 
-# check if jq is installed
-check_jq_installed() {
-    if ! jq --version &> /dev/null; then
-        echo "Error: jq is not installed. Please install jq to proceed."
-        exit 1
-    fi
-}
-
-# fetches the latest version of sf-hamilton-ui from PyPI
-get_latest_version() {
-    response=$(curl -s https://pypi.org/pypi/sf-hamilton-ui/json)
-
-    # check if curl succeeded and the response is not empty
-    if [ $? -ne 0 ] || [ -z "$response" ]; then
-        echo "Error: Failed to fetch data from PyPI. Please check your 
internet connection or the URL."
+# Parse command line arguments
+VERSION=""
+BUILD_TYPE="release"
+RC_NUMBER=""
+TAG_LATEST=false
+
+while [[ $# -gt 0 ]]; do
+    case $1 in
+        --version)
+            VERSION="$2"
+            shift 2
+            ;;
+        --type)
+            BUILD_TYPE="$2"
+            shift 2
+            ;;
+        --rc-number)
+            RC_NUMBER="$2"
+            shift 2
+            ;;
+        --tag-latest)
+            TAG_LATEST=true
+            shift
+            ;;
+        --help)
+            usage
+            ;;
+        *)
+            echo "Unknown option: $1"
+            usage
+            ;;
+    esac
+done
+
+# Validate required arguments
+if [ -z "$VERSION" ]; then
+    echo "Error: --version is required"
+    usage
+fi
+
+# Validate build type
+case $BUILD_TYPE in
+    release|rc|snapshot|nightly)
+        ;;
+    *)
+        echo "Error: Invalid build type '$BUILD_TYPE'. Must be: release, rc, 
snapshot, or nightly"
         exit 1
-    fi
-
-    # extract version using jq and handle potential errors
-    version=$(echo "$response" | jq -r '.info.version')
-    if [ "$version" == "null" ]; then
-        echo "Error: Unable to extract version from the response."
+        ;;
+esac
+
+# Validate RC number for release candidates
+if [ "$BUILD_TYPE" = "rc" ] && [ -z "$RC_NUMBER" ]; then
+    echo "Error: --rc-number is required for release candidate builds"
+    exit 1
+fi
+
+# Warn if trying to tag :latest for non-release builds
+if [ "$TAG_LATEST" = true ] && [ "$BUILD_TYPE" != "release" ]; then
+    echo "ERROR: :latest tag can ONLY be used for release builds 
(--type=release)"
+    echo "This is required by Apache Software Foundation policy."
+    echo "Release candidates, snapshots, and nightly builds must NOT use 
:latest tag."
+    exit 1
+fi
+
+# Build version tag based on build type
+case $BUILD_TYPE in
+    release)
+        VERSION_TAG="$VERSION"
+        ;;
+    rc)
+        VERSION_TAG="${VERSION}-rc${RC_NUMBER}"
+        ;;
+    snapshot)
+        VERSION_TAG="${VERSION}-SNAPSHOT"
+        ;;
+    nightly)
+        DATE=$(date +%Y%m%d)
+        VERSION_TAG="${VERSION}-nightly-${DATE}"
+        ;;
+esac
+
+echo "=========================================="
+echo "Apache Hamilton UI Docker Build"
+echo "=========================================="
+echo "Version Tag: $VERSION_TAG"
+echo "Build Type: $BUILD_TYPE"
+echo "Tag :latest: $TAG_LATEST"
+echo "Platforms: $PLATFORMS"
+echo "Backend Image: $BACKEND_IMAGE:$VERSION_TAG"
+echo "Frontend Image: $FRONTEND_IMAGE:$VERSION_TAG"
+echo "=========================================="
+
+# Safety check for :latest tag
+if [ "$TAG_LATEST" = true ]; then
+    echo ""
+    echo "WARNING: You are about to tag this build as :latest"
+    echo "This should ONLY be done for PMC-approved releases."
+    echo ""
+    read -p "Has this release been approved by the Apache Hamilton PMC? 
(yes/no): " APPROVED
+
+    if [ "$APPROVED" != "yes" ]; then
+        echo "Aborting. Release must be approved before tagging as :latest"
         exit 1
     fi
+fi
 
-    echo "$version"
-}
-
-# check if Docker Buildx and jq are installed
+# Check prerequisites
 check_buildx_installed
-check_jq_installed
 
-VERSION=$(get_latest_version)
-
-echo "Using sf-hamilton-ui version: $VERSION"
-
-# check if Buildx is already enabled; create a builder instance if not
+# Check if Buildx is already enabled; create a builder instance if not
 docker buildx inspect hamilton-builder > /dev/null 2>&1 || \
     docker buildx create --use --name hamilton-builder
 
-FRONTEND_IMAGE="dagworks/ui-frontend"
-BACKEND_IMAGE="dagworks/ui-backend"
-
-# define common platforms/architectures
-PLATFORMS="linux/amd64,linux/arm64"
-
-cd "$(dirname "$0")" # cd into the directory where this script is present(i.e. 
ui)
-
-docker buildx build --platform $PLATFORMS \
-    -t $BACKEND_IMAGE:$VERSION -t $BACKEND_IMAGE:latest \
-    --push -f backend/Dockerfile.backend-prod backend/
-
-docker buildx build --platform $PLATFORMS \
-    -t $FRONTEND_IMAGE:$VERSION -t $FRONTEND_IMAGE:latest \
-    --push -f frontend/Dockerfile.frontend-prod frontend/ \
-    --build-arg REACT_APP_AUTH_MODE=local \
-    --build-arg REACT_APP_USE_POSTHOG=false \
+cd "$(dirname "$0")" # cd into the directory where this script is present 
(i.e. ui)
+
+# Build backend image
+echo ""
+echo "Building backend image..."
+if [ "$TAG_LATEST" = true ]; then
+    docker buildx build --platform $PLATFORMS \
+        -t $BACKEND_IMAGE:$VERSION_TAG \
+        -t $BACKEND_IMAGE:latest \
+        --push -f backend/Dockerfile.backend-prod backend/
+else
+    docker buildx build --platform $PLATFORMS \
+        -t $BACKEND_IMAGE:$VERSION_TAG \
+        --push -f backend/Dockerfile.backend-prod backend/
+fi
+
+# Build frontend image
+echo ""
+echo "Building frontend image..."
+if [ "$TAG_LATEST" = true ]; then
+    docker buildx build --platform $PLATFORMS \
+        -t $FRONTEND_IMAGE:$VERSION_TAG \
+        -t $FRONTEND_IMAGE:latest \
+        --push -f frontend/Dockerfile.frontend-prod frontend/ \
+        --build-arg REACT_APP_AUTH_MODE=local \
+        --build-arg REACT_APP_USE_POSTHOG=false
+else
+    docker buildx build --platform $PLATFORMS \
+        -t $FRONTEND_IMAGE:$VERSION_TAG \
+        --push -f frontend/Dockerfile.frontend-prod frontend/ \
+        --build-arg REACT_APP_AUTH_MODE=local \
+        --build-arg REACT_APP_USE_POSTHOG=false
+fi
+
+echo ""
+echo "=========================================="
+echo "Build complete!"
+echo "=========================================="
+echo "Backend: $BACKEND_IMAGE:$VERSION_TAG"
+echo "Frontend: $FRONTEND_IMAGE:$VERSION_TAG"
+if [ "$TAG_LATEST" = true ]; then
+    echo ""
+    echo "Also tagged as :latest (approved release)"
+fi
+echo "=========================================="
diff --git a/ui/frontend/Dockerfile.frontend b/ui/frontend/Dockerfile.frontend
index ab4f9921..e8c1ca76 100644
--- a/ui/frontend/Dockerfile.frontend
+++ b/ui/frontend/Dockerfile.frontend
@@ -15,6 +15,15 @@
 # specific language governing permissions and limitations
 # under the License.
 
+# Apache Hamilton is an effort undergoing incubation at The Apache Software
+# Foundation (ASF), sponsored by the Apache Incubator. Incubation is required
+# of all newly accepted projects until a further review indicates that the
+# infrastructure, communications, and decision making process have stabilized
+# in a manner consistent with other successful ASF projects. While incubation
+# status is not necessarily a reflection of the completeness or stability of
+# the code, it does indicate that the project has yet to be fully endorsed by
+# the ASF.
+
 FROM node:20
 
 # Set working directory
diff --git a/ui/frontend/Dockerfile.frontend-prod 
b/ui/frontend/Dockerfile.frontend-prod
index 9a188352..f4a51598 100644
--- a/ui/frontend/Dockerfile.frontend-prod
+++ b/ui/frontend/Dockerfile.frontend-prod
@@ -15,6 +15,15 @@
 # specific language governing permissions and limitations
 # under the License.
 
+# Apache Hamilton is an effort undergoing incubation at The Apache Software
+# Foundation (ASF), sponsored by the Apache Incubator. Incubation is required
+# of all newly accepted projects until a further review indicates that the
+# infrastructure, communications, and decision making process have stabilized
+# in a manner consistent with other successful ASF projects. While incubation
+# status is not necessarily a reflection of the completeness or stability of
+# the code, it does indicate that the project has yet to be fully endorsed by
+# the ASF.
+
 FROM node:20 AS build-stage
 
 # Set working directory
diff --git a/ui/start_mini_mode.sh b/ui/start_mini_mode.sh
index c4e8c1b4..aab5f68d 100755
--- a/ui/start_mini_mode.sh
+++ b/ui/start_mini_mode.sh
@@ -1,4 +1,21 @@
 #!/bin/bash
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
 # Start Hamilton UI in mini mode for local testing
 
 set -e
diff --git a/ui/test_tracking.py b/ui/test_tracking.py
index b0742904..afb69f6b 100644
--- a/ui/test_tracking.py
+++ b/ui/test_tracking.py
@@ -1,4 +1,21 @@
 #!/usr/bin/env python3
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
 """
 Test script to validate Hamilton UI tracking functionality.
 
diff --git a/ui/test_tracking_simple.py b/ui/test_tracking_simple.py
index b239853e..bc5ea197 100644
--- a/ui/test_tracking_simple.py
+++ b/ui/test_tracking_simple.py
@@ -1,4 +1,21 @@
 #!/usr/bin/env python3
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
 """
 Simple test script to validate Hamilton UI tracking.
 

Reply via email to