Inicialización del módulo Go y cambio de version de go a la 1.26
This commit is contained in:
@@ -28,7 +28,7 @@ El repositorio está vacío: el proyecto `outline-mcp` se construye desde cero.
|
||||
|
||||
### D1: SDK de MCP — `github.com/mark3labs/mcp-go`
|
||||
|
||||
- **Elección**: usar `mcp-go` (paquetes `mcp` y `server`) con su `server.NewMCPServer` y transporte `ServeStdio`.
|
||||
- **Elección**: usar `mcp-go` v1.0.0 (paquetes `mcp` y `server`) con su `server.NewMCPServer` y transporte `ServeStdio`.
|
||||
- **Alternativa**: implementar el protocolo JSON-RPC manualmente. Se descarta por coste y riesgo; el SDK ya resuelve handshake, esquemas de herramientas y serialización.
|
||||
- **Nota**: `mcp-go` permite declarar esquemas de entrada tipados (`mcp.WithString(...)`, `mcp.Required()`) que se traducen a JSON Schema para el cliente.
|
||||
|
||||
@@ -58,12 +58,12 @@ El repositorio está vacío: el proyecto `outline-mcp` se construye desde cero.
|
||||
|
||||
### D6: Pipeline de release
|
||||
|
||||
- **Elección**: workflow en `.gitea/workflows/release.yml` con `on: push: tags: ['v*']`, runner `ubuntu-latest`, setup de Go 1.22 (action `actions/setup-go@v5`, compatible con Gitea Actions), bucle de build sobre las 3 plataformas con `CGO_ENABLED=0` y `ldflags` inyectando `main.Version` (desde `github.ref_name`), `main.GiteaURL`, `main.RepoOwner`, `main.RepoName` (desde `github.server_url` y el contexto del repo). Publicación con la acción `akkuman/gitea-release-action` o el CLI `tea release create` como fallback.
|
||||
- **Elección**: workflow en `.gitea/workflows/release.yml` con `on: push: tags: ['v*']`, runner `ubuntu-latest`, setup de Go 1.26 (action `actions/setup-go@v5`, compatible con Gitea Actions), bucle de build sobre las 3 plataformas con `CGO_ENABLED=0` y `ldflags` inyectando `main.Version` (desde `github.ref_name`), `main.GiteaURL`, `main.RepoOwner`, `main.RepoName` (desde `github.server_url` y el contexto del repo). Publicación con la acción `akkuman/gitea-release-action` o el CLI `tea release create` como fallback.
|
||||
- **Alternativa**: generar los binarios en Docker dentro del pipeline. Se descarta: el runner de Gitea ya provee el toolchain vía setup-go y es más rápido.
|
||||
|
||||
### D7: Devcontainer
|
||||
|
||||
- **Elección**: imagen `mcr.microsoft.com/devcontainers/go:1-1.22-bookworm` con:
|
||||
- **Elección**: imagen `mcr.microsoft.com/devcontainers/go:1-trixie` (Go 1.26) con:
|
||||
- Features: `ghcr.io/devcontainers/features/golang:1` no es necesaria (la imagen ya incluye Go); se añade la feature `docker-in-docker` opcional no requerida — se omite para minimizar superficie.
|
||||
- `postCreateCommand`: instalación de `golangci-lint` vía script oficial y `go mod download` si existe `go.mod`.
|
||||
- Extensiones: `golang.go` (Go oficial, incluye gopls), `eamodio.gitlens`.
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
|
||||
## ADDED Requirements
|
||||
|
||||
### Requirement: Contenedor de desarrollo con Go 1.22
|
||||
El sistema SHALL incluir un devcontainer basado en la imagen oficial `mcr.microsoft.com/devcontainers/go:1-1.22-bookworm` que permita desarrollar el proyecto sin Go instalado localmente.
|
||||
### Requirement: Contenedor de desarrollo con Go 1.26
|
||||
El sistema SHALL incluir un devcontainer basado en la imagen oficial `mcr.microsoft.com/devcontainers/go:1-trixie` que permita desarrollar el proyecto sin Go instalado localmente.
|
||||
|
||||
#### Scenario: Apertura del proyecto en el contenedor
|
||||
- **WHEN** el usuario abre el proyecto en DevPod o Dev Containers
|
||||
- **THEN** el contenedor se construye a partir de la imagen oficial de Go 1.22 y dispone del toolchain necesario para compilar y ejecutar el proyecto
|
||||
- **THEN** el contenedor se construye a partir de la imagen oficial de Go 1.26 y dispone del toolchain necesario para compilar y ejecutar el proyecto
|
||||
|
||||
### Requirement: Tooling del editor preconfigurado
|
||||
El devcontainer SHALL preconfigurar el soporte de `gopls` (language server de Go) e instalar `golangci-lint`, además de las extensiones básicas de Go para el editor.
|
||||
|
||||
@@ -14,11 +14,11 @@ El pipeline de release SHALL ejecutarse cuando se realice push de tags cuyo nomb
|
||||
- **THEN** el workflow de release no se ejecuta
|
||||
|
||||
### Requirement: Entorno de compilación
|
||||
El pipeline SHALL utilizar una imagen de Ubuntu y SHALL configurar Go 1.22 como versión del toolchain antes de compilar.
|
||||
El pipeline SHALL utilizar una imagen de Ubuntu y SHALL configurar Go 1.26 como versión del toolchain antes de compilar.
|
||||
|
||||
#### Scenario: Job de build
|
||||
- **WHEN** el pipeline se ejecuta
|
||||
- **THEN** el entorno de build dispone de Go 1.22 instalado sobre una imagen Ubuntu
|
||||
- **THEN** el entorno de build dispone de Go 1.26 instalado sobre una imagen Ubuntu
|
||||
|
||||
### Requirement: Inyección de variables en la compilación
|
||||
El pipeline SHALL inyectar en tiempo de compilación las variables `Version`, `GiteaURL`, `RepoOwner` y `RepoName` mediante `-ldflags`, derivadas del tag y del repositorio.
|
||||
|
||||
@@ -2,17 +2,17 @@
|
||||
|
||||
## 1. Entorno de desarrollo (devcontainer)
|
||||
|
||||
- [x] 1.1 Crear `.devcontainer/devcontainer.json` con la imagen `mcr.microsoft.com/devcontainers/go:1-1.22-bookworm`
|
||||
- [x] 1.1 Crear `.devcontainer/devcontainer.json` con la imagen `mcr.microsoft.com/devcontainers/go:1-trixie`
|
||||
- [x] 1.2 Configurar extensiones del editor (`golang.go` con gopls) y settings (`go.useLanguageServer: true`)
|
||||
- [x] 1.3 Añadir `postCreateCommand` que instale `golangci-lint` y ejecute `go mod download` cuando exista `go.mod`
|
||||
- [x] 1.4 Verificar: Given el proyecto abierto en DevPod/Dev Containers, When el contenedor se construye, Then dispone de Go 1.22, gopls y golangci-lint operativos
|
||||
|
||||
## 2. Inicialización del módulo Go
|
||||
|
||||
- [ ] 2.1 Ejecutar `go mod init outline-mcp` dentro del contenedor
|
||||
- [ ] 2.2 Instalar dependencias: `go get github.com/mark3labs/mcp-go/mcp github.com/mark3labs/mcp-go/server`
|
||||
- [ ] 2.3 Instalar la librería de auto-update: `go get github.com/minio/selfupdate`
|
||||
- [ ] 2.4 Verificar: Given `go.mod` creado, When se ejecuta `go mod tidy`, Then no hay errores y `go.sum` queda generado
|
||||
- [x] 2.1 Ejecutar `go mod init outline-mcp` dentro del contenedor
|
||||
- [x] 2.2 Instalar dependencias: `go get github.com/mark3labs/mcp-go/mcp github.com/mark3labs/mcp-go/server`
|
||||
- [x] 2.3 Instalar la librería de auto-update: `go get github.com/minio/selfupdate`
|
||||
- [x] 2.4 Verificar: Given `go.mod` creado, When se ejecuta `go mod tidy`, Then no hay errores y `go.sum` queda generado
|
||||
|
||||
## 3. CLI y esqueleto del servidor MCP
|
||||
|
||||
|
||||
Reference in New Issue
Block a user