Skip to content

Commit 57c7620

Browse files
AmsterGethlebkanonikAleksandrParamonoff
authored
Release 1.1.0 (#62)
* Update Dockerfile to use APP_VERSION argument and add GitHub workflows for building Docker images for develop, feature, and release candidate branches. * Add ecr-repository parameter to GitHub workflows for building Docker images * Update Dockerfile to change APP_VERSION from "dev" to "develop" * EPMRPP-107619 || MCP Server. GA4. Change user custom id format * EPMRPP-107062 || MCP Server. Change authentication approach * EPMRPP-106347 || MCP Server. Add support for multi-client server * EPMRPP-108014 || MCP Server. Add server stdio/http modes (#44) * EPMRPP-107815 || MCP. Tools. Provide full response data from all tools * Update README.md * EPMRPP-108935 || MCP Server. Tools. Add a user's RP project name to the HTTP header * EPMRPP-108935 || MCP Server. Tools. Fix rp project parameter configuration * EPMRPP-109097 || MCP. Tools. Add tool get defect types by project * EPMRPP-109176 || MCP. Tools. Add tool, update defect types by item ids * EPMRPP-109356 || MCP Tools. Register new tools to the http server (#53) * EPMRPP-109356 || MCP Tools. Fix the cfg, RP token env variable is ignored in the http server mode * EPMRPP-109356 || GA4. Fix token-based user id genearation * EPMRPP-109097 || MCP. Tools. Provide to LLM only defect types related data * EPMRPP-109374 || MCP Tools. Update test items defect type comment * EPMRPP-109458 || MCP Server. Fix SSE handler error * EPMRPP-109455 || MCP Server Documentation. Add description for the HTTP API Endpoints * EPMRPP-109560 || MCP Tools. Fix analyze_items_modes parameter configuration * Update readme --------- Co-authored-by: Hleb Kanonik <[email protected]> Co-authored-by: Aleksandr Paramonov <[email protected]>
2 parents 75a2c8d + 9308870 commit 57c7620

31 files changed

+4329
-506
lines changed

.coderabbit.yaml

Lines changed: 197 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,197 @@
1+
# CodeRabbit Configuration for ReportPortal MCP Server
2+
# A Go-based Model Context Protocol server for ReportPortal integration
3+
4+
# =============================================================================
5+
# GLOBAL SETTINGS
6+
# =============================================================================
7+
8+
# Language for reviews
9+
language: "en-US"
10+
11+
# Tone instructions for reviews - professional but constructive
12+
tone_instructions: "Focus on code quality, security, performance, and Go best practices. Be constructive and educational in feedback."
13+
14+
# Enable early access features for improved functionality
15+
early_access: false
16+
17+
# =============================================================================
18+
# REVIEWS CONFIGURATION
19+
# =============================================================================
20+
21+
reviews:
22+
# Use assertive profile for better code quality feedback on this professional project
23+
profile: "assertive"
24+
25+
# Enable high-level summaries for better PR understanding
26+
high_level_summary: true
27+
high_level_summary_in_walkthrough: true
28+
29+
# Auto-generate PR titles when needed
30+
auto_title_placeholder: "@coderabbitai"
31+
auto_title_instructions: "Generate concise, descriptive titles following conventional commit format when applicable"
32+
33+
# Review workflow settings
34+
review_status: true
35+
commit_status: true
36+
fail_commit_status: true
37+
38+
# Enhanced walkthrough features
39+
collapse_walkthrough: false
40+
changed_files_summary: true
41+
sequence_diagrams: true
42+
estimate_code_review_effort: true
43+
assess_linked_issues: true
44+
related_issues: true
45+
related_prs: true
46+
47+
# Label and reviewer suggestions
48+
suggested_labels: true
49+
auto_apply_labels: false
50+
suggested_reviewers: true
51+
auto_assign_reviewers: false
52+
53+
# Keep the poem feature for team morale
54+
poem: true
55+
56+
# Path filters - focus on source code and important config files
57+
path_filters:
58+
# Include source code and tests
59+
- "cmd/**"
60+
- "internal/**"
61+
- "**/*.go"
62+
- "**/*_test.go"
63+
64+
# Include important configuration files
65+
- "go.mod"
66+
- "go.sum"
67+
- "Dockerfile*"
68+
- "*.dockerfile"
69+
- "Taskfile.yaml"
70+
- "*.yaml"
71+
- "*.yml"
72+
- "*.md"
73+
74+
# Exclude build artifacts, binaries, and temporary files
75+
- "!bin/**"
76+
- "!*.exe"
77+
- "!*.test.exe"
78+
- "!dist/**"
79+
- "!build/**"
80+
- "!.git/**"
81+
- "!vendor/**"
82+
- "!*.log"
83+
- "!*.tmp"
84+
85+
# Path-based instructions for better context-aware reviews
86+
path_instructions:
87+
- path: "**/*.go"
88+
instructions: "Focus on Go best practices, error handling, concurrency safety, performance, and security. Check for proper resource cleanup and context handling."
89+
90+
- path: "**/*_test.go"
91+
instructions: "Ensure comprehensive test coverage, proper test isolation, meaningful assertions, and good test naming conventions."
92+
93+
- path: "internal/reportportal/**"
94+
instructions: "Pay special attention to API integration patterns, error handling, data validation, and MCP protocol compliance."
95+
96+
- path: "cmd/**"
97+
instructions: "Review CLI interface design, configuration handling, and application startup logic for robustness and usability."
98+
99+
- path: "**/Dockerfile*"
100+
instructions: "Focus on security best practices, image size optimization, proper layering, and multi-stage builds where appropriate."
101+
102+
# Tool configuration - enable Go and security-focused tools
103+
tools:
104+
# Go-specific linting
105+
golangci-lint:
106+
enabled: true
107+
108+
# Security scanning
109+
gitleaks:
110+
enabled: true
111+
semgrep:
112+
enabled: true
113+
114+
# Docker best practices
115+
hadolint:
116+
enabled: true
117+
118+
# YAML validation for config files
119+
yamllint:
120+
enabled: true
121+
122+
# Auto-review configuration
123+
auto_review:
124+
enabled: true
125+
drafts: false
126+
base_branches: ["main", "master", "develop"]
127+
128+
# Pre-merge checks for quality gates
129+
pre_merge_checks:
130+
title:
131+
mode: "warning"
132+
requirements: "Use descriptive titles. Consider conventional commit format for consistency."
133+
134+
description:
135+
mode: "warning"
136+
requirements: "Include description for significant changes. Link to relevant issues when applicable."
137+
138+
# =============================================================================
139+
# KNOWLEDGE BASE CONFIGURATION
140+
# =============================================================================
141+
142+
knowledge_base:
143+
# Coding guidelines - scan for project-specific standards
144+
code_guidelines:
145+
enabled: true
146+
filePatterns:
147+
- "README.md"
148+
- "CONTRIBUTING.md"
149+
- "docs/**/*.md"
150+
151+
# Use repository learnings for this specific project
152+
learnings:
153+
scope: "local"
154+
155+
# Include repository issues for context
156+
issues:
157+
scope: "local"
158+
159+
# Disable external integrations for this open source project
160+
jira:
161+
usage: "disabled"
162+
163+
linear:
164+
usage: "disabled"
165+
166+
# Include PR history for better context
167+
pull_requests:
168+
scope: "local"
169+
170+
# MCP integration (relevant for this project)
171+
mcp:
172+
usage: "auto"
173+
disabled_servers: []
174+
175+
# =============================================================================
176+
# CODE GENERATION SETTINGS
177+
# =============================================================================
178+
179+
code_generation:
180+
# Docstring generation for Go code
181+
docstrings:
182+
language: "en-US"
183+
path_instructions:
184+
- path: "**/*.go"
185+
instructions: "Generate Go-style comments. Use proper godoc format with complete sentences. Include examples for public APIs when helpful."
186+
187+
- path: "internal/**/*.go"
188+
instructions: "Focus on internal API documentation, explaining business logic and integration patterns."
189+
190+
# Unit test generation guidelines
191+
unit_tests:
192+
path_instructions:
193+
- path: "**/*.go"
194+
instructions: "Generate comprehensive Go tests using testify/assert. Include table-driven tests where appropriate. Test error conditions and edge cases."
195+
196+
- path: "internal/reportportal/**/*.go"
197+
instructions: "Focus on testing API integrations, error handling, and data transformation logic. Mock external dependencies properly."
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
name: Build develop Docker image
2+
3+
on:
4+
push:
5+
branches:
6+
- develop
7+
paths-ignore:
8+
- '.github/**'
9+
- README.md
10+
11+
jobs:
12+
variables-setup:
13+
name: Setting variables for docker build
14+
runs-on: ubuntu-latest
15+
steps:
16+
- name: Checkout
17+
uses: actions/checkout@v4
18+
19+
- name: Create variables
20+
id: vars
21+
run: |
22+
echo "date=$(date +'%Y-%m-%d')" >> $GITHUB_OUTPUT
23+
outputs:
24+
date: ${{ steps.vars.outputs.date }}
25+
26+
call-docker-build:
27+
name: Call develop Docker build
28+
needs: variables-setup
29+
uses: reportportal/.github/.github/workflows/build-docker-image.yaml@main
30+
with:
31+
aws-region: ${{ vars.AWS_REGION }}
32+
ecr-repository: 'reportportal/reportportal-mcp-server'
33+
image-tag: 'develop-${{ github.run_number }}'
34+
additional-tag: 'develop-latest'
35+
version: 'develop-${{ github.run_number }}'
36+
date: ${{ needs.variables-setup.outputs.date }}
37+
runs-on: ubuntu-latest
38+
secrets: inherit
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
name: Build feature Docker image
2+
3+
on:
4+
pull_request:
5+
types: [opened, synchronize, reopened]
6+
branches:
7+
- 'develop'
8+
workflow_dispatch:
9+
inputs:
10+
image-tag:
11+
description: 'Image tag for the Docker build'
12+
required: true
13+
default: 'feature'
14+
15+
jobs:
16+
variables-setup:
17+
name: Setting variables for docker build
18+
runs-on: ubuntu-latest
19+
if: (!startsWith(github.head_ref, 'rc/') || !startsWith(github.head_ref, 'hotfix/') || !startsWith(github.head_ref, 'master') || !startsWith(github.head_ref, 'main'))
20+
steps:
21+
- name: Checkout
22+
uses: actions/checkout@v4
23+
24+
- name: Create variables
25+
id: vars
26+
run: |
27+
if [ -n "${{ github.event.inputs.image-tag }}" ]; then
28+
echo "Using provided image tag: ${{ github.event.inputs.image-tag }}"
29+
echo "tag=${{ github.event.inputs.image-tag }}" >> $GITHUB_OUTPUT
30+
elif [ -n "${{ github.head_ref }}" ]; then
31+
echo "tag=$(echo ${{ github.head_ref }}-${{ github.run_number }} | tr '/' '-')" >> $GITHUB_OUTPUT
32+
else
33+
echo "tag=$(echo ${{ github.ref_name }}-${{ github.run_number }} | tr '/' '-')" >> $GITHUB_OUTPUT
34+
fi
35+
36+
echo "date=$(date +'%Y-%m-%d')" >> $GITHUB_OUTPUT
37+
outputs:
38+
tag: ${{ steps.vars.outputs.tag }}
39+
date: ${{ steps.vars.outputs.date }}
40+
41+
call-docker-build:
42+
name: Call feature Docker build
43+
needs: variables-setup
44+
uses: reportportal/.github/.github/workflows/build-docker-image.yaml@main
45+
with:
46+
aws-region: ${{ vars.AWS_REGION }}
47+
ecr-repository: 'reportportal/reportportal-mcp-server'
48+
image-tag: ${{ needs.variables-setup.outputs.tag }}
49+
version: ${{ needs.variables-setup.outputs.tag }}
50+
branch: ${{ github.head_ref != '' && github.head_ref || github.ref_name }}
51+
date: ${{ needs.variables-setup.outputs.date }}
52+
runs-on: ubuntu-latest
53+
secrets: inherit
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
name: Build RC Docker image
2+
3+
on:
4+
push:
5+
branches:
6+
- "rc/*"
7+
- "hotfix/*"
8+
9+
jobs:
10+
variables-setup:
11+
name: Setting variables for docker build
12+
runs-on: ubuntu-latest
13+
# environment: rc
14+
steps:
15+
- name: Checkout
16+
uses: actions/checkout@v4
17+
18+
- name: Create variables
19+
id: vars
20+
run: |
21+
echo "platforms=linux/amd64" >> $GITHUB_OUTPUT
22+
echo "version=$(echo '${{ github.ref_name }}' | sed -nE 's/.*([0-9]+\.[0-9]+\.[0-9]+).*/\1/p')" >> $GITHUB_OUTPUT
23+
echo "tag=$(echo ${{ github.ref_name }}-${{ github.run_number }} | tr '/' '-')" >> $GITHUB_OUTPUT
24+
echo "date=$(date +'%Y-%m-%d')" >> $GITHUB_OUTPUT
25+
outputs:
26+
platforms: ${{ steps.vars.outputs.platforms }}
27+
version: ${{ steps.vars.outputs.version }}
28+
tag: ${{ steps.vars.outputs.tag }}
29+
date: ${{ steps.vars.outputs.date }}
30+
31+
call-docker-build:
32+
name: Call release candidate Docker build
33+
needs: variables-setup
34+
uses: reportportal/.github/.github/workflows/build-docker-image.yaml@main
35+
with:
36+
aws-region: ${{ vars.AWS_REGION }}
37+
ecr-repository: 'reportportal/reportportal-mcp-server'
38+
image-tag: ${{ needs.variables-setup.outputs.tag }}
39+
release-mode: true
40+
additional-tag: 'latest'
41+
build-platforms: ${{ needs.variables-setup.outputs.platforms }}
42+
version: ${{ needs.variables-setup.outputs.version }}
43+
date: ${{ needs.variables-setup.outputs.date }}
44+
runs-on: ubuntu-latest
45+
secrets: inherit

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
.idea/
22
bin/
33
.env
4+
.vscode/
45
junit-report.xml
56
dist/

Dockerfile

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
ARG VERSION="dev"
1+
ARG APP_VERSION="develop"
22

33
FROM golang:1.24.4 AS build
44
# allow this step access to build arg
5-
ARG VERSION
5+
ARG APP_VERSION
66
# Set the working directory
77
WORKDIR /build
88

@@ -14,7 +14,7 @@ RUN --mount=type=cache,target=/root/.cache/go-build go mod download
1414

1515
COPY . ./
1616
# Build the server
17-
RUN --mount=type=cache,target=/root/.cache/go-build CGO_ENABLED=0 go build -ldflags="-s -w -X main.version=${VERSION} -X main.commit=$(git rev-parse HEAD) -X main.date=$(date -u +%Y-%m-%dT%H:%M:%SZ)" \
17+
RUN --mount=type=cache,target=/root/.cache/go-build CGO_ENABLED=0 go build -ldflags="-s -w -X main.version=${APP_VERSION} -X main.commit=$(git rev-parse HEAD) -X main.date=$(date -u +%Y-%m-%dT%H:%M:%SZ)" \
1818
-o reportportal-mcp-server cmd/reportportal-mcp-server/main.go
1919

2020
# Make a stage to run the app
@@ -24,7 +24,8 @@ WORKDIR /server
2424
# Copy the binary from the build stage
2525
COPY --from=build /build/reportportal-mcp-server .
2626

27-
ENTRYPOINT ["./reportportal-mcp-server"]
27+
# Expose default HTTP port (can be overridden by MCP_SERVER_PORT)
28+
EXPOSE 8080
2829

29-
# Command to run the server
30-
CMD ["stdio"]
30+
# Run the server - will read MCP_MODE environment variable
31+
ENTRYPOINT ["./reportportal-mcp-server"]

0 commit comments

Comments
 (0)