AikidoSec-safe-chain/test/e2e/Dockerfile
Reinier Criel cab3a0aba3 Add uv (Astral Python package manager) support
- Add uv package manager implementation following pip pattern
- Configure MITM proxy with CA bundle for PyPI packages
- Add shell integration (bash/zsh/fish/PowerShell)
- Conditional on --include-python flag
- Add 33 comprehensive E2E tests covering:
  - uv pip install/sync/compile commands
  - uv add for project dependencies
  - uv tool install for global tools
  - uv run --with for ephemeral dependencies
  - uv sync for project syncing
  - Malware blocking verification for all methods
- Update documentation and package.json
- Install uv in Docker test environment
2025-11-25 14:10:20 -08:00

80 lines
2.1 KiB
Docker

FROM node:24-bookworm as builder
ENV CI=true
# Set working directory
WORKDIR /app
# Copy package files first for better caching
COPY packages/safe-chain/package*.json ./
# Install dependencies
RUN npm install
# Copy the rest of the application
COPY packages/safe-chain ./
# Build the application
RUN npm --no-git-tag-version version 1.0.0 --allow-same-version
RUN npm pack
FROM buildpack-deps:trixie
# Package manager version arguments with defaults
ARG NODE_VERSION=latest
ARG NPM_VERSION=latest
ARG YARN_VERSION=latest
ARG PNPM_VERSION=latest
ARG PYTHON_VERSION=3
SHELL ["/bin/bash", "-c"]
ENV BASH_ENV=~/.bashrc
# Install a proxy
RUN apt-get update && apt-get install tinyproxy -y
# Install zsh
RUN sh -c "$(wget -O- https://github.com/deluan/zsh-in-docker/releases/download/v1.2.1/zsh-in-docker.sh)"
# Install fish
RUN apt-get install -y fish && \
mkdir -p /root/.config/fish/ && \
touch /root/.config/fish/config.fish
# Install Volta and Node.js
RUN curl https://get.volta.sh | bash
RUN volta install node@${NODE_VERSION}
RUN volta install npm@${NPM_VERSION}
RUN volta install yarn@${YARN_VERSION}
RUN volta install pnpm@${PNPM_VERSION}
# Install Bun
RUN curl -fsSL https://bun.sh/install | bash
# Install Python and pip (pip3)
RUN apt-get update && apt-get install -y python${PYTHON_VERSION} python3-pip && \
ln -sf /usr/bin/python${PYTHON_VERSION} /usr/local/bin/python3 && \
ln -sf /usr/bin/python${PYTHON_VERSION} /usr/local/bin/python && \
ln -sf /usr/bin/pip3 /usr/local/bin/pip3 && \
cat <<'EOF' > /usr/lib/python3/dist-packages/pip3.py
"""
Shim module so 'python[3] -m pip3 …' resolves to pip's CLI entry point.
"""
try:
import pip._internal
pip._internal.main()
except Exception as exc:
print("pip3 module shim failed:", exc)
raise
EOF
# Install uv (Astral's fast Python package manager)
RUN curl -LsSf https://astral.sh/uv/install.sh | sh && \
echo 'source $HOME/.local/bin/env' >> ~/.bashrc
# Copy and install Safe chain
COPY --from=builder /app/*.tgz /pkgs/
RUN npm install -g /pkgs/*.tgz
WORKDIR /testapp
RUN npm init -y