LangGraph-based release automation agent with: - PR discovery (webhook + polling) - AI code review via Claude Code CLI (subscription-based) - Auto-create Jira tickets for PRs without ticket ID - Jira ticket lifecycle management (code review -> staging -> done) - CI/CD pipeline trigger, polling, and approval gates - Slack interactive messages with approval buttons - Per-repo semantic versioning - PostgreSQL persistence (threads, staging, releases) - FastAPI API (webhooks, approvals, status, manual triggers) - Docker Compose deployment 1069 tests, 95%+ coverage.
33 lines
806 B
Docker
33 lines
806 B
Docker
FROM python:3.12-slim
|
|
|
|
WORKDIR /app
|
|
|
|
# Install system dependencies required for psycopg binary
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
libpq5 \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# Copy dependency files first for layer caching
|
|
COPY pyproject.toml uv.lock ./
|
|
|
|
# Install uv for fast dependency management
|
|
RUN pip install --no-cache-dir uv
|
|
|
|
# Install runtime dependencies (no dev extras)
|
|
RUN uv pip install --system --no-cache-dir -e .
|
|
|
|
# Copy application source
|
|
COPY src/ ./src/
|
|
|
|
# Create data directory for staging store
|
|
RUN mkdir -p data/staging
|
|
|
|
# Non-root user for security
|
|
RUN adduser --disabled-password --gecos "" appuser && \
|
|
chown -R appuser:appuser /app
|
|
USER appuser
|
|
|
|
EXPOSE 8000
|
|
|
|
CMD ["uvicorn", "release_agent.main:app", "--host", "0.0.0.0", "--port", "8000"]
|