ci: harden community release baseline

This commit is contained in:
github-ops
2026-05-14 16:49:25 +00:00
parent 23962f98e3
commit fd11d9ceca
14 changed files with 139 additions and 304 deletions
+17 -85
View File
@@ -1,40 +1,32 @@
# Public Smoke Targets
Этот документ фиксирует три публичных upstream-сервиса, которые можно использовать для ручной проверки `REST`, `GraphQL` и `gRPC` operation в Crank без поднятия своих тестовых backend-ов.
Этот документ фиксирует публичный upstream-сервис, который можно использовать для ручной проверки `REST` operation в `crank-community` без поднятия своего тестового backend-а.
Все примеры ниже уже сверены с реальными публичными endpoint-ами и дублируются готовыми payload-файлами в [examples/mcp-smoke](/home/a.tolmachev/code/rust/mcpaas/examples/mcp-smoke).
Для Community канонический smoke target только один:
## 1. Источники
- `REST`
- REST: Open-Meteo Weather Forecast API
Коммерческие протоколы и их smoke targets живут в private репозиториях и не входят в Community release baseline.
Все примеры ниже дублируются готовыми payload-файлами в [examples/mcp-smoke](../examples/mcp-smoke).
## 1. Источник
- REST: Open-Meteo Weather Forecast API
`https://open-meteo.com/en/docs`
- GraphQL: Countries GraphQL API
`https://github.com/trevorblades/countries/blob/main/README.md`
Playground / endpoint: `https://countries.trevorblades.com/`
- gRPC: grpcb.in
`https://grpcb.in/`
Public proto: `https://raw.githubusercontent.com/moul/pb/master/addsvc/addsvc.proto`
## 2. Готовые operation payload-ы
- REST: [rest-open-meteo.operation.json](/home/a.tolmachev/code/rust/mcpaas/examples/mcp-smoke/rest-open-meteo.operation.json)
- REST test input: [rest-open-meteo.test-input.json](/home/a.tolmachev/code/rust/mcpaas/examples/mcp-smoke/rest-open-meteo.test-input.json)
- GraphQL: [graphql-countries.operation.json](/home/a.tolmachev/code/rust/mcpaas/examples/mcp-smoke/graphql-countries.operation.json)
- GraphQL test input: [graphql-countries.test-input.json](/home/a.tolmachev/code/rust/mcpaas/examples/mcp-smoke/graphql-countries.test-input.json)
- gRPC: [grpc-grpcb-add.operation.json](/home/a.tolmachev/code/rust/mcpaas/examples/mcp-smoke/grpc-grpcb-add.operation.json)
- gRPC test input: [grpc-grpcb-add.test-input.json](/home/a.tolmachev/code/rust/mcpaas/examples/mcp-smoke/grpc-grpcb-add.test-input.json)
- gRPC proto reference: [grpc-grpcb-addsvc.proto](/home/a.tolmachev/code/rust/mcpaas/examples/mcp-smoke/grpc-grpcb-addsvc.proto)
- REST: [rest-open-meteo.operation.json](../examples/mcp-smoke/rest-open-meteo.operation.json)
- REST test input: [rest-open-meteo.test-input.json](../examples/mcp-smoke/rest-open-meteo.test-input.json)
## 3. Как использовать
### 3.1. Через UI
1. Создай operation вручную в `Wizard`.
2. Подставь значения из соответствующего `*.operation.json`.
3. Для `gRPC` можно либо:
- просто использовать готовый `descriptor_set_b64` из JSON payload;
- либо отдельно загрузить `.proto` из [grpc-grpcb-addsvc.proto](/home/a.tolmachev/code/rust/mcpaas/examples/mcp-smoke/grpc-grpcb-addsvc.proto).
4. На шаге теста используй `*.test-input.json`.
1. Создать operation вручную в `Wizard`.
2. Подставить значения из `rest-open-meteo.operation.json`.
3. На шаге теста использовать `rest-open-meteo.test-input.json`.
### 3.2. Через admin-api
@@ -70,7 +62,7 @@ curl -sS -c cookie.txt \
--data '{"email":"<your-email>","password":"<your-password>"}'
```
## 4. Что именно проверяют примеры
## 4. Что именно проверяет пример
### 4.1. REST: Open-Meteo
@@ -94,71 +86,11 @@ curl -sS -c cookie.txt \
}
```
### 4.2. GraphQL: Countries
- Protocol: `GraphQL`
- Endpoint: `https://countries.trevorblades.com/`
- Проверка:
- fixed GraphQL query
- variable mapping
- `response_path`
- nested array extraction
Ожидаемый upstream query:
```graphql
query GetCountry($code: ID!) {
country(code: $code) {
code
name
capital
emoji
currency
languages {
code
name
}
}
}
```
### 4.3. gRPC: grpcb.in / addsvc.Add.Sum
- Protocol: `gRPC`
- Endpoint: `http://grpcb.in:9000`
- Service: `addsvc.Add`
- Method: `Sum`
- Проверка:
- descriptor-backed unary gRPC call
- `request.grpc.*` mapping
- protobuf JSON response normalization
- `to_number` transform from protobuf `int64` string
Проверенный реальный вызов:
```bash
docker run --rm fullstorydev/grpcurl:latest \
-plaintext \
-d '{"a":7,"b":5}' \
grpcb.in:9000 \
addsvc.Add/Sum
```
Ожидаемый ответ:
```json
{
"v": "12"
}
```
## 5. Практическая рекомендация
Для первого smoke pass используй именно эти три operation:
Для первого smoke pass использовать operation:
- `weather_current_open_meteo`
- `country_lookup_countries`
- `grpcb_add_sum`
Этого достаточно, чтобы проверить весь путь: