Add Woodpecker CI pipeline and k8s manifests #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/linkedin-scheduler-remote!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
.woodpecker.yaml: Woodpecker CI — ruff lint/format on PRs + push, kaniko build-and-push to Harbor on mainDockerfile.k8s: Simple requirements.txt-based container build for k8sk8s/deployment.yaml: All 10 env vars from server.py mapped (secrets + values), port 8000, 256Mi memory limit, harbor-creds imagePullSecret, liveness/readiness probes, PVC mountk8s/service.yaml: ClusterIP service on port 8000 with named portk8s/pvc.yaml: 100Mi local-path PVC (linkedin-mcp-data) for token/DB storagek8s/servicemonitor.yaml: Prometheus ServiceMonitor scraping /metrics every 30sk8s/kustomization.yaml: Resource list for ArgoCDserver.py: Added/metricsendpoint (Prometheus gauge), added starlette Request/Response importspyproject.toml: Added[project.optional-dependencies] dev(ruff>=0.8),[tool.ruff]config (py312, line-length 100, E/F/I/N/W)requirements.txt: Addedmcp-remote-auth-ldraney(was missing from requirements.txt but in pyproject.toml), reorderedclient_patch.py: Reformatted by ruff (line length adjustments)Conventions followed
$CI_COMMIT_SHA(no curly braces)namespace:in any k8s manifest.argocd-source-*excluded from CI triggersname: httplinkedin-mcp-secretslinkedin-mcp-dataTest Plan
ruff check .passesruff format --check .passesos.environ/os.environ.getcall in server.py has a corresponding env entry in deployment.yamlReview Checklist
Related Notes
issue-linkedin-scheduler-remote-woodpecker-k8s— the issue this PR addressesplan-2026-02-25-mcp-gateway-migration— Phase 3Closes #3
Review Pass: CLEAN
Reviewed all 11 changed files against the proven pattern from notion-mcp-remote (main branch).
Checklist
.woodpecker.yamlmatches pattern — correct triggers,$CI_COMMIT_SHA(no braces),.argocd-source-*excludedDockerfile.k8smatches pattern — requirements.txt-based, EXPOSE 8000k8s/deployment.yaml— all 10 env vars from server.py mapped, port 8000 withname: http, 256Mi limit, no namespace, harbor-creds, probes on /healthk8s/service.yaml— port 8000, namedhttp, no namespacek8s/pvc.yaml—linkedin-mcp-data, local-path, 100Mi, no namespacek8s/servicemonitor.yaml— /metrics, 30s interval, matches app labelk8s/kustomization.yaml— all 4 resources listedserver.py— /metrics endpoint follows notion-mcp-remote pattern exactlypyproject.toml— dev deps + ruff config match patternrequirements.txt— added missingmcp-remote-auth-ldraneydep (bug fix)client_patch.py— ruff formatting only (cosmetic)Zero issues found. Ready for user review.
Merge conflicts with main (k8s/deployment.yaml, k8s/kustomization.yaml). Main already has CI + k8s from a prior merge. Feature branch has improved patterns (Dockerfile.k8s, service.yaml, pvc.yaml, servicemonitor.yaml) but needs manual conflict resolution. Deferring — not blocking the first LinkedIn post (only linkedin-sdk is needed for posting).
View command line instructions
Checkout
From your project repository, check out a new branch and test the changes.Merge
Merge the changes and update on Forgejo.Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.