feat: initial commit — Billo Release Agent (LangGraph)
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.
This commit is contained in:
55
.env.example
Normal file
55
.env.example
Normal file
@@ -0,0 +1,55 @@
|
||||
# Billo Release Agent - Environment Variables
|
||||
# Copy this file to .env and fill in your values.
|
||||
# Never commit .env to source control.
|
||||
|
||||
# ===========================================================================
|
||||
# REQUIRED
|
||||
# ===========================================================================
|
||||
|
||||
# --- Azure DevOps ----------------------------------------------------------
|
||||
AZDO_ORGANIZATION=billodev
|
||||
AZDO_PROJECT=Billo App Platform
|
||||
AZDO_PAT= # Personal access token (Code read/write, Build read/execute)
|
||||
|
||||
# --- PostgreSQL ------------------------------------------------------------
|
||||
POSTGRES_PASSWORD= # Used by docker-compose db service
|
||||
POSTGRES_DSN=postgresql://agent:${POSTGRES_PASSWORD}@localhost:5432/agent
|
||||
|
||||
# --- Jira ------------------------------------------------------------------
|
||||
JIRA_EMAIL= # Jira account email
|
||||
JIRA_API_TOKEN= # Jira API token
|
||||
|
||||
# --- Slack -----------------------------------------------------------------
|
||||
SLACK_WEBHOOK_URL= # Incoming webhook URL (for release notifications)
|
||||
|
||||
# --- Webhook Security ------------------------------------------------------
|
||||
WEBHOOK_SECRET= # HMAC secret for Azure DevOps webhook validation
|
||||
|
||||
# ===========================================================================
|
||||
# OPTIONAL (have defaults)
|
||||
# ===========================================================================
|
||||
|
||||
# --- Slack App (for interactive buttons) -----------------------------------
|
||||
SLACK_BOT_TOKEN= # xoxb-... Bot token (needed for Slack buttons)
|
||||
SLACK_SIGNING_SECRET= # Slack app signing secret (needed for /slack/interactions)
|
||||
SLACK_CHANNEL_ID= # Channel ID to post messages (e.g., C0123456789)
|
||||
|
||||
# --- CI/CD Polling ---------------------------------------------------------
|
||||
CI_POLL_INTERVAL_SECONDS=30 # Seconds between CI status polls
|
||||
CI_POLL_MAX_WAIT_SECONDS=1800 # Max wait for CI completion (30 min)
|
||||
|
||||
# --- Claude Code Review ----------------------------------------------------
|
||||
# ANTHROPIC_API_KEY= # Not needed — uses Claude Code CLI subscription
|
||||
# CLAUDE_REVIEW_MODEL=claude-sonnet-4-20250514
|
||||
|
||||
# --- Local Repo Path -------------------------------------------------------
|
||||
REPOS_BASE_DIR= # Base dir containing Billo repos (e.g., /c/Users/yaoji/git/Billo)
|
||||
|
||||
# --- Jira ------------------------------------------------------------------
|
||||
JIRA_BASE_URL=https://billolife.atlassian.net
|
||||
|
||||
# --- Operator API ----------------------------------------------------------
|
||||
OPERATOR_TOKEN= # When set, protects POST /approvals/* and POST /manual/*
|
||||
|
||||
# --- Server ----------------------------------------------------------------
|
||||
PORT=8000
|
||||
Reference in New Issue
Block a user