Lint / hadolint (pull_request) Successful in 28s
CI Shared Jobs / hadolint (pull_request) Successful in 28s
CI Shared Jobs / build-test (pull_request) Successful in 2m33s
CI Shared Jobs / pytest (pull_request) Successful in 2m57s
PR Checks / ci (pull_request) Successful in 3m26s
- src/server.py: CALDAV_DATA_PATH validation moved from import-time to _validate_startup_config(), called on __main__ or MCP_ICS_VALIDATE_ON_IMPORT=1. Module is now importable in tests without env setup. - tests/: Radicale fixture tree (VCALENDAR/VADDRESSBOOK, hidden dirs, corrupt props, bad ics), covers discover_calendars, parse_ics_files, component_to_dt, format_dt, format_component (exclude/birthday filters, VEVENT vs VTODO shape), get_events_in_range (RRULE expansion, cross-calendar aggregation, sort), get_agenda (default +7d end, error dict, flag forwarding), /health endpoint, _validate_startup_config. 31 tests, <2s. - .gitea/workflows/_ci-common.yaml: new pytest job running the test suite inside the built CI image (prod requirements). - pkg/Dockerfile: COPY tests/
24 lines
556 B
Docker
24 lines
556 B
Docker
FROM docker.io/library/python:3.14-slim
|
|
|
|
# Set environment variables
|
|
ENV PYTHONDONTWRITEBYTECODE=1
|
|
ENV PYTHONUNBUFFERED=1
|
|
|
|
# Set the working directory in the container
|
|
WORKDIR /app
|
|
|
|
# Copy the requirements file into the container
|
|
COPY requirements.txt .
|
|
|
|
# Install dependencies using buildkit cache
|
|
RUN --mount=type=cache,target=/root/.cache/pip pip install -r requirements.txt
|
|
|
|
# Copy the source code
|
|
COPY src/ ./src/
|
|
|
|
# Copy tests (used by CI; harmless in production)
|
|
COPY tests/ ./tests/
|
|
|
|
# Command to run the MCP server
|
|
CMD ["python", "src/server.py"]
|