feat: add Woodpecker CI pipeline, k8s manifests, and application code #4
No reviewers
Labels
No labels
domain:backend
domain:devops
domain:frontend
status:approved
status:in-progress
status:needs-fix
status:qa
type:bug
type:devops
type:feature
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
ldraney/gcal-scheduler!4
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "3-add-woodpecker-ci-pipeline-and-k8s-manif"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Changes
src/gcal_scheduler/main.py: FastAPI app with /health, /metrics, /api/availability, /api/book endpointssrc/gcal_scheduler/calendar_service.py: Google Calendar freebusy queries and event creation via OAuth2src/gcal_scheduler/__init__.py: Package init.woodpecker.yaml: CI pipeline — ruff check, ruff format, pytest, kaniko build+pushDockerfile: Multi-stage Python 3.12-slim buildk8s/deployment.yaml: Deployment with all 8 env vars, health/readiness probes, 256Mi memory limitk8s/service.yaml: ClusterIP service on port 8000 (separate file per convention)k8s/servicemonitor.yaml: Prometheus ServiceMonitor scraping /metricsk8s/kustomization.yaml: Kustomize resource listpyproject.toml: Project config with setuptools, ruff (>=0.8), pytest, dev depsstatic/index.html: Placeholder booking frontendtests/test_health.py: Tests for /health, /metrics, and availability validation.dockerignore: Exclude non-build files.gitignore: Add Python-specific ignoresTest Plan
Review Checklist
Related Notes
issue-gcal-scheduler-woodpecker-k8s— the issue this PR addressesplan-2026-02-25-mcp-gateway-migration— Phase 3project-pal-eReview-fix loop round 1
Found and fixed one nit:
_requests_totaland_request_countwere both incremented identically on every request. Consolidated to just_requests_totaland removed the duplicategcal_scheduler_request_duration_seconds_countmetric line.No blockers found. Re-reviewing now.
Review-fix loop round 2 -- CLEAN PASS
All conventions verified:
.woodpecker.yamlnaming,$CI_COMMIT_SHAwithout curly braces,.argocd-source-*excludedhttpservice.yaml,strategy: Recreate, labels on deployment metadata/healthand/metricsendpoints present, health/readiness probes configuredReady for user review.