-
Notifications
You must be signed in to change notification settings - Fork 16
Release 1.1.1 #74
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Release 1.1.1 #74
Conversation
…ion and CI linting
… readiness probes, update CI to support multiple architectures, and refine .gitignore for examples directory.
…e builds in build-dev-image, build-feature-image, and build-rc-image configurations.
…d add healthcheck configuration for MCP Server
Helm chart for ReportPortal MCP Server
…g array data type
…elease github action
|
Note Other AI code review bot(s) detectedCodeRabbit has detected other AI code review bot(s) in this pull request and will avoid duplicating their findings in the review comments. This may lead to a less comprehensive review. Summary by CodeRabbit
✏️ Tip: You can customize this high-level summary in your review settings. WalkthroughRemoved goreleaser's inline Docker build configuration and replaced it with a note that Docker Buildx handles multi-arch images; converted the release Dockerfile to a multi-stage build; added an Changes
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes
Possibly related PRs
Suggested reviewers
Poem
Pre-merge checks and finishing touches❌ Failed checks (1 warning, 2 inconclusive)
✨ Finishing touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This release PR (1.1.1) introduces multi-architecture Docker support, comprehensive Helm chart deployment capabilities, and fixes a critical VS Code/GitHub Copilot compatibility issue with array parameters in the MCP tool definitions.
Key changes include:
- Multi-stage Dockerfile with version metadata support and multi-arch builds (amd64 + arm64)
- Bug fix for
test_items_idsarray parameter to properly support VS Code/GitHub Copilot (issue #66) - Complete Helm chart for Kubernetes deployment with customizable values, health probes, and ingress configuration
Reviewed changes
Copilot reviewed 22 out of 23 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| release.dockerfile | Refactored to multi-stage build with build arguments for version tracking |
| internal/reportportal/items.go | Added WithStringItems() to fix array parameter schema for VS Code compatibility |
| internal/reportportal/items_test.go | Added test to verify array parameter schema includes required "items" property |
| helm-charts/reportportal-mcp-server/Chart.yaml | New Helm chart definition (v0.1.0) |
| helm-charts/reportportal-mcp-server/values.yaml | Comprehensive configuration values with environment variables, probes, and resource limits |
| helm-charts/reportportal-mcp-server/templates/*.yaml | Kubernetes resource templates for deployment, service, ingress, HPA, and service account |
| helm-charts/reportportal-mcp-server/templates/_helpers.tpl | Helm template helper functions for labels and naming |
| helm-charts/reportportal-mcp-server/templates/NOTES.txt | Post-installation instructions for users |
| helm-charts/reportportal-mcp-server/README.md | Helm chart documentation with installation and configuration examples |
| helm-charts/reportportal-mcp-server/.helmignore | Patterns to exclude from Helm package |
| docker-compose.yaml | New Docker Compose configuration for easy local deployment |
| README.md | Restructured installation sections with clearer local vs remote setup distinctions |
| .goreleaser.yaml | Removed Docker build section (now handled separately by GitHub Actions) |
| .gitignore | Added exclusions for Helm artifacts and examples directory |
| .github/workflows/release.yml | Added Docker Buildx multi-arch build step with metadata and labels |
| .github/workflows/helm-lint.yaml | New workflow for Helm chart validation |
| .github/workflows/build-rc-image.yaml | Added arm64 platform support |
| .github/workflows/build-feature-image.yaml | Added arm64 platform support and output |
| .github/workflows/build-dev-image.yml | Added arm64 platform support and output |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 3
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
README.md (1)
79-99: Clarify/mcpvs/mcp/in remote URL examplesThe remote configuration examples use URLs ending with
/mcp/, while the HTTP API section documents the endpoints as/mcpand/api/mcp(no trailing slash):
- Examples:
"url": "http://your-mcp-server-host:port/mcp/"- API section:
POST /mcp,POST /api/mcpDepending on the router,
/mcpand/mcp/may not be equivalent. To avoid confusion for users (and subtle 404s), it would be good to either:
- Standardize all examples and text on one form (e.g.,
/mcp), or- Explicitly state that both
/mcpand/mcp/are accepted by the server.If you share which HTTP router you’re using in the server, I can suggest precise wording that reflects its behavior with trailing slashes.
Also applies to: 434-441
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro
⛔ Files ignored due to path filters (17)
.github/workflows/build-dev-image.ymlis excluded by none and included by none.github/workflows/build-feature-image.yamlis excluded by none and included by none.github/workflows/build-rc-image.yamlis excluded by none and included by none.github/workflows/helm-lint.yamlis excluded by none and included by none.github/workflows/release.ymlis excluded by none and included by none.gitignoreis excluded by none and included by nonehelm-charts/reportportal-mcp-server/.helmignoreis excluded by none and included by nonehelm-charts/reportportal-mcp-server/Chart.yamlis excluded by none and included by nonehelm-charts/reportportal-mcp-server/README.mdis excluded by none and included by nonehelm-charts/reportportal-mcp-server/templates/NOTES.txtis excluded by none and included by nonehelm-charts/reportportal-mcp-server/templates/_helpers.tplis excluded by none and included by nonehelm-charts/reportportal-mcp-server/templates/deployment.yamlis excluded by none and included by nonehelm-charts/reportportal-mcp-server/templates/hpa.yamlis excluded by none and included by nonehelm-charts/reportportal-mcp-server/templates/ingress.yamlis excluded by none and included by nonehelm-charts/reportportal-mcp-server/templates/service.yamlis excluded by none and included by nonehelm-charts/reportportal-mcp-server/templates/serviceaccount.yamlis excluded by none and included by nonehelm-charts/reportportal-mcp-server/values.yamlis excluded by none and included by none
📒 Files selected for processing (6)
.goreleaser.yaml(1 hunks)README.md(7 hunks)docker-compose.yaml(1 hunks)internal/reportportal/items.go(1 hunks)internal/reportportal/items_test.go(2 hunks)release.dockerfile(1 hunks)
🧰 Additional context used
📓 Path-based instructions (3)
**/*.go
📄 CodeRabbit inference engine (README.md)
**/*.go: Build and compile the ReportPortal MCP Server Go application usinggo build -o reportportal-mcp-server ./cmd/reportportal-mcp-server
Set environment variables RP_HOST, RP_PROJECT, and RP_API_TOKEN for stdio mode operation, or set MCP_MODE=http with MCP_SERVER_PORT and MCP_SERVER_HOST for HTTP mode
Require Go 1.24.1 or later for building the ReportPortal MCP Server
Add new tools by creating methods in resource files and registering them in theNewServerfunction usings.AddTool()
Ensure all MCP requests follow JSON-RPC 2.0 specification with required fields: jsonrpc, method, id, and params
Use/mcpor/api/mcpendpoints for POST requests (MCP protocol); use/,/health,/info,/api/status, or/metricsfor GET requests only
Files:
internal/reportportal/items.gointernal/reportportal/items_test.go
⚙️ CodeRabbit configuration file
Focus on Go best practices, error handling, concurrency safety, performance, and security. Check for proper resource cleanup and context handling.
Files:
internal/reportportal/items.gointernal/reportportal/items_test.go
internal/reportportal/**
⚙️ CodeRabbit configuration file
Pay special attention to API integration patterns, error handling, data validation, and MCP protocol compliance.
Files:
internal/reportportal/items.gointernal/reportportal/items_test.go
**/*_test.go
⚙️ CodeRabbit configuration file
Ensure comprehensive test coverage, proper test isolation, meaningful assertions, and good test naming conventions.
Files:
internal/reportportal/items_test.go
🧠 Learnings (3)
📚 Learning: 2025-12-01T14:55:41.065Z
Learnt from: CR
Repo: reportportal/reportportal-mcp-server PR: 0
File: README.md:0-0
Timestamp: 2025-12-01T14:55:41.065Z
Learning: Applies to **/*.go : Build and compile the ReportPortal MCP Server Go application using `go build -o reportportal-mcp-server ./cmd/reportportal-mcp-server`
Applied to files:
.goreleaser.yamlrelease.dockerfiledocker-compose.yaml
📚 Learning: 2025-12-01T14:55:41.065Z
Learnt from: CR
Repo: reportportal/reportportal-mcp-server PR: 0
File: README.md:0-0
Timestamp: 2025-12-01T14:55:41.065Z
Learning: Applies to **/*.go : Require Go 1.24.1 or later for building the ReportPortal MCP Server
Applied to files:
release.dockerfile
📚 Learning: 2025-12-01T14:55:41.065Z
Learnt from: CR
Repo: reportportal/reportportal-mcp-server PR: 0
File: README.md:0-0
Timestamp: 2025-12-01T14:55:41.065Z
Learning: The ReportPortal MCP Server should be compatible with MCP-compatible AI tools such as Claude Desktop, GitHub Copilot, Cursor, and other coding agents
Applied to files:
README.md
🧬 Code graph analysis (1)
internal/reportportal/items_test.go (1)
internal/reportportal/items.go (1)
NewTestItemResources(26-39)
🪛 Checkov (3.2.334)
release.dockerfile
[low] 22-22: Ensure the base image uses a non latest version tag
(CKV_DOCKER_7)
[low] 1-30: Ensure that HEALTHCHECK instructions have been added to container images
(CKV_DOCKER_2)
[low] 1-30: Ensure that a user for the container has been created
(CKV_DOCKER_3)
🪛 Hadolint (2.14.0)
release.dockerfile
[warning] 22-22: Always tag the version of an image explicitly
(DL3006)
🪛 markdownlint-cli2 (0.18.1)
README.md
233-233: Ordered list item prefix
Expected: 1; Actual: 3; Style: 1/1/1
(MD029, ol-prefix)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: Agent
🔇 Additional comments (5)
.goreleaser.yaml (1)
29-30: Clarifying Docker image build responsibilityComment accurately reflects that Docker images are no longer built by GoReleaser and instead by a separate Buildx workflow. This keeps the release config focused on binaries only; just ensure the CI workflow using
release.dockerfileis the single source of truth for image tags and multi‑arch manifests.Please double‑check the release workflow to confirm that:
- It uses
release.dockerfilefor image builds.- It pushes a multi‑arch manifest for the
reportportal/mcp-servertags you intend to distribute.release.dockerfile (1)
1-30: Multi‑stage image build aligns with Go and release guidelinesThis Dockerfile looks solid:
- Builder stage uses
golang:1.24.4andgo build -o reportportal-mcp-server ./cmd/reportportal-mcp-server, which matches the documented build command and Go version requirement.CGO_ENABLED=0and-s -wldflags keep the binary portable and small while still injecting version/commit/date via-X main.*, consistent with the GoReleaser ldflags.- Final stage uses a pinned distroless base image for a minimal, non‑root runtime.
Given the external healthcheck handled via
docker-compose.yaml(once reconciled with the distroless image), you don’t strictly need an in‑imageHEALTHCHECKhere; if you add one later, prefer a direct invocation of the Go binary rather than adding extra tools.If you want to be extra sure about the final image posture, it’s worth confirming at runtime that:
- The process runs as non‑root (
id -uinside a debug shell or via Kubernetes security context).- The binary exposes
/healthon port 8080 whenMCP_MODE=http, matching your compose healthcheck and README.README.md (2)
22-24: Installation split into local vs remote reads clearlyThe new phrasing that distinguishes:
- Local (Docker or pre‑built binaries), and
- Connecting to a remote MCP server
does a good job aligning user mental models with the two runtime modes (stdio vs HTTP) described later in the README. The examples below match the documented env vars and endpoints.
103-261: Per‑tool configuration sections are consistent and align with MCP usageThe reorganized sections for Cursor, GitHub Copilot (VS Code + JetBrains), Claude Desktop, Claude Code CLI, and “Other Coding Agents” are consistent:
- Local examples correctly use stdio/Docker invocation with
RP_HOST,RP_PROJECT, andRP_API_TOKEN.- Remote examples consistently use
urlpointing at/mcpplus headers forAuthorizationandX-Project, which matches the HTTP mode description.- The added “Save and restart Claude Desktop” step makes that flow clearer.
This structure should make it much easier for users of different tools to copy/paste the right snippet without cross‑referencing other sections.
internal/reportportal/items.go (1)
707-712: Schema change fortest_items_idsnow correctly reflects string itemsAdding
mcp.WithStringItems()to thetest_items_idsarray is a good fix:
- It aligns the input schema with the handler, which already calls
RequireStringSlice("test_items_ids")and then parses each ID withstrconv.ParseInt.- It ensures MCP clients like VS Code and GitHub Copilot see
type: "array"withitems.type: "string", addressing the schema‑compatibility issue referenced in the tests.The only thing to watch is that any existing clients should already be sending IDs as strings; if any were relying on raw numeric array items, they may need to be updated to match the clarified schema.
If you have known production clients, it’s worth spot‑checking one or two request payloads (or logs) to confirm
test_items_idsare indeed sent as string IDs today.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 2
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro
📒 Files selected for processing (1)
docker-compose.yaml(1 hunks)
🧰 Additional context used
🧠 Learnings (2)
📚 Learning: 2025-12-01T14:55:41.065Z
Learnt from: CR
Repo: reportportal/reportportal-mcp-server PR: 0
File: README.md:0-0
Timestamp: 2025-12-01T14:55:41.065Z
Learning: Applies to **/*.go : Build and compile the ReportPortal MCP Server Go application using `go build -o reportportal-mcp-server ./cmd/reportportal-mcp-server`
Applied to files:
docker-compose.yaml
📚 Learning: 2025-12-01T14:55:41.065Z
Learnt from: CR
Repo: reportportal/reportportal-mcp-server PR: 0
File: README.md:0-0
Timestamp: 2025-12-01T14:55:41.065Z
Learning: The ReportPortal MCP Server should be compatible with MCP-compatible AI tools such as Claude Desktop, GitHub Copilot, Cursor, and other coding agents
Applied to files:
docker-compose.yaml
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
- GitHub Check: Prepare
- GitHub Check: Call develop Docker build / Build and export to AWS ECR
🔇 Additional comments (3)
docker-compose.yaml (3)
2-5: Verify healthcheck strategy or add explicit health probe.The previous review flagged an incompatibility between the
curl-based healthcheck and the distroless base image. This version removes the healthcheck, which resolves the immediate issue. However, confirm whether this is intentional or if a healthcheck should be added in a follow-up commit (e.g., via a built-in Go health endpoint or a TCP probe).For production readiness, consider adding:
- A TCP socket check (distroless-compatible), or
- A dedicated health subcommand in the Go binary (if implemented), or
- Removing the healthcheck and relying on orchestration-level probes (Kubernetes, etc.)
8-8: Verify RP_HOST default aligns with actual deployment setup.The default placeholder
https://your-reportportal-instance.comis clear for documentation but may prevent the service from starting correctly in local development or CI environments if not explicitly overridden. Confirm whether a more realistic default (e.g.,http://localhost:8080for local setups or a real hostname for production) should be used, or document the requirement clearly.
10-10: Verify port 8085 is appropriate and document if host port mapping differs from container port.The mapping
8085:8080routes host port 8085 to container port 8080. Confirm:
- Port 8080 is the correct internal MCP server port.
- Port 8085 is free and intentional on the host (not conflicting with other services).
- If this is for local development, consider using an available port or documenting the rationale.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
Copilot reviewed 22 out of 23 changed files in this pull request and generated no new comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
No description provided.