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.
