95 lines
3.3 KiB
Docker
95 lines
3.3 KiB
Docker
# Development Hub Ecosystem - Docker Build for Testing
|
|
#
|
|
# Tests that all ecosystem projects can be installed together.
|
|
# GUI functionality is not tested (no X11), only imports and CLI tools.
|
|
#
|
|
# Build: docker build -t development-hub .
|
|
# Test: docker run --rm development-hub
|
|
|
|
FROM python:3.12-slim
|
|
|
|
# Install system dependencies for Qt (even though we won't run GUI, imports need libs)
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
git \
|
|
libgl1 \
|
|
libegl1 \
|
|
libxkbcommon0 \
|
|
libdbus-1-3 \
|
|
libxcb-cursor0 \
|
|
libxcb-icccm4 \
|
|
libxcb-keysyms1 \
|
|
libxcb-shape0 \
|
|
libxcb-xfixes0 \
|
|
libxcb-xinerama0 \
|
|
libxcb-render0 \
|
|
libxcb-render-util0 \
|
|
libxcb-image0 \
|
|
libglib2.0-0 \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# Set up virtual display for Qt imports (no actual display, just for import)
|
|
ENV QT_QPA_PLATFORM=offscreen
|
|
|
|
WORKDIR /workspace
|
|
|
|
# Clone all repos
|
|
ARG GITEA_URL=https://gitea.brrd.tech/rob
|
|
RUN git clone ${GITEA_URL}/CmdForge.git CmdForge && \
|
|
git clone ${GITEA_URL}/ramble.git ramble && \
|
|
git clone ${GITEA_URL}/artifact-editor.git artifact-editor && \
|
|
git clone ${GITEA_URL}/orchestrated-discussions.git orchestrated-discussions && \
|
|
git clone ${GITEA_URL}/development-hub.git development-hub
|
|
|
|
# Apply patches for PySide6 unification (until changes are pushed to Gitea)
|
|
# Patch pyproject.toml files
|
|
RUN sed -i 's|PyQt6|PySide6|g' /workspace/development-hub/pyproject.toml && \
|
|
sed -i 's|file:///home/rob/PycharmProjects|file:///workspace|g' /workspace/development-hub/pyproject.toml && \
|
|
sed -i 's|PyQt6|PySide6|g' /workspace/artifact-editor/pyproject.toml
|
|
|
|
# Patch source files: PyQt6 -> PySide6
|
|
RUN find /workspace/development-hub/src -name "*.py" -exec sed -i \
|
|
-e 's/from PyQt6/from PySide6/g' \
|
|
-e 's/import PyQt6/import PySide6/g' \
|
|
-e 's/pyqtSignal/Signal/g' \
|
|
-e 's/pyqtSlot/Slot/g' {} \;
|
|
|
|
RUN find /workspace/artifact-editor/src -name "*.py" -exec sed -i \
|
|
-e 's/from PyQt6/from PySide6/g' \
|
|
-e 's/import PyQt6/import PySide6/g' \
|
|
-e 's/pyqtSignal/Signal/g' \
|
|
-e 's/pyqtSlot/Slot/g' {} \;
|
|
|
|
# Create venv and install
|
|
RUN python -m venv /venv
|
|
ENV PATH="/venv/bin:$PATH"
|
|
|
|
RUN pip install --upgrade pip wheel setuptools
|
|
|
|
# Install in dependency order (all patches applied above)
|
|
RUN pip install -e /workspace/CmdForge
|
|
RUN pip install -e /workspace/ramble
|
|
RUN pip install -e /workspace/artifact-editor
|
|
RUN pip install -e "/workspace/orchestrated-discussions[gui]"
|
|
RUN pip install -e /workspace/development-hub
|
|
|
|
# Verification script
|
|
RUN echo '#!/bin/bash\n\
|
|
set -e\n\
|
|
echo "Testing imports..."\n\
|
|
python -c "import cmdforge; print(\" cmdforge: OK\")"\n\
|
|
python -c "import ramble; print(\" ramble: OK\")"\n\
|
|
python -c "import artifact_editor; print(\" artifact_editor: OK\")"\n\
|
|
python -c "import discussions; print(\" discussions: OK\")"\n\
|
|
python -c "import development_hub; print(\" development_hub: OK\")"\n\
|
|
echo ""\n\
|
|
echo "Testing CLI tools..."\n\
|
|
cmdforge --help > /dev/null && echo " cmdforge CLI: OK"\n\
|
|
ramble --help > /dev/null && echo " ramble CLI: OK"\n\
|
|
artifact-editor --help > /dev/null && echo " artifact-editor CLI: OK"\n\
|
|
discussions --help > /dev/null && echo " discussions CLI: OK"\n\
|
|
echo ""\n\
|
|
echo "All tests passed!"\n\
|
|
' > /test.sh && chmod +x /test.sh
|
|
|
|
CMD ["/test.sh"]
|