guanaco/Dockerfile.test
evangit2 1edd2b7ef1 ci: add develop branch workflow — Docker test harness, CI, and release automation
- Dockerfile.test: mimics fresh install (venv, CLI wrapper, healthcheck)
- CI workflow: builds Docker image, smoke tests CLI/server/health/update endpoints
- Release workflow: triggers on v* tags, runs same smoke tests, creates GitHub Release
- test-local.sh: local pre-push test script (port 9999, auto-cleanup)
- contrib/guanaco-wrapper.sh: CLI wrapper for Docker environment
2026-04-10 14:50:54 +00:00

36 lines
No EOL
1.2 KiB
Text

# Guanaco test container — mimics a fresh install environment
# Used to validate: pip install, CLI commands, app startup, auto-update flow
FROM python:3.12-slim
RUN apt-get update && apt-get install -y --no-install-recommends \
git curl sudo systemd && \
rm -rf /var/lib/apt/lists/*
WORKDIR /opt/guanaco
# Copy project files
COPY . .
# Install into a clean venv (same as install.sh does)
RUN python -m venv /opt/guanaco-venv && \
/opt/guanaco-venv/bin/pip install --no-cache-dir -e .
# Create guanaco user (mimics install.sh)
RUN useradd -m -s /bin/bash guanaco && \
mkdir -p /home/guanaco/.guanaco && \
chown -R guanaco:guanaco /home/guanaco/.guanaco && \
mkdir -p /home/guanaco/.local/bin && \
cp /opt/guanaco/contrib/guanaco-wrapper.sh /home/guanaco/.local/bin/guanaco && \
chmod +x /home/guanaco/.local/bin/guanaco
ENV PATH="/opt/guanaco-venv/bin:/home/guanaco/.local/bin:$PATH"
USER guanaco
# Health check — app should start and respond
HEALTHCHECK --interval=5s --timeout=3s --retries=3 \
CMD curl -f http://localhost:8080/health || exit 1
EXPOSE 8080
# Default: start the server (can override for tests)
CMD ["python", "-m", "uvicorn", "guanaco.app:create_app", "--factory", "--host", "0.0.0.0", "--port", "8080"]