feat: add k8s deployment pipeline and code quality improvements

- Add deploy step to Woodpecker CI release pipeline
- Create ParsingHelpers utility to deduplicate ParseIntArray/ParseDate
- Add ConfigureAwait(false) to all async calls (library best practice)
- Fix resource disposal in UploadDocumentInternalAsync
- Configure HttpClient default 30s timeout
- Remove unused GetAllPagesAsync method

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Barry Walker
2026-01-13 18:21:00 -05:00
parent dba6c453c4
commit 6cac693e9c
12 changed files with 176 additions and 200 deletions
+19
View File
@@ -118,3 +118,22 @@ steps:
https://api.github.com/repos/barryw/PaperlessMCP/releases \
-d "{\"tag_name\":\"$$TAG\",\"name\":\"Release $$VERSION\",\"body\":\"Release $$VERSION\",\"draft\":false,\"prerelease\":false}"
depends_on: [git-tag]
# Deploy to Kubernetes (uses in-cluster service account)
- name: deploy
image: bitnami/kubectl:latest
commands:
- |
VERSION=$$(cat .version)
echo "Deploying version $$VERSION to Kubernetes"
# Update deployment image to specific version tag
kubectl set image deployment/paperless-mcp \
paperless-mcp=ghcr.io/barryw/paperlessmcp:v$$VERSION \
-n default
# Wait for rollout to complete
kubectl rollout status deployment/paperless-mcp -n default --timeout=120s
echo "Deployment complete!"
depends_on: [docker, release]