mcp-framework/docs/auto-update.md

1.3 KiB

Auto-update

Le package update supporte les drivers gitea, gitlab et github. Si latest_release_url est vide, l'URL latest est déduite depuis driver + repository (+ base_url).

Le parseur de release supporte :

  • format assets.links (Gitea/GitLab)
  • format assets[] avec browser_download_url (GitHub et Gitea API)

Le format attendu pour la réponse latest release est :

{
  "tag_name": "v1.2.3",
  "assets": {
    "links": [
      {
        "name": "my-mcp-linux-amd64",
        "url": "https://example.com/downloads/my-mcp-linux-amd64"
      }
    ]
  }
}

Exemple :

file, _, err := manifest.LoadDefault(".")
if err != nil {
	return err
}

err = update.Run(ctx, update.Options{
	CurrentVersion: version,
	BinaryName:     "my-mcp",
	ReleaseSource:  file.Update.ReleaseSource(),
	Stdout:         os.Stdout,
})
if err != nil {
	return err
}

Comportement :

  • le nom de l'asset est configurable (asset_name_template) et supporte tout couple GOOS/GOARCH
  • si un asset <asset>.sha256 (ou checksum_asset_name) existe, le binaire téléchargé est vérifié avant remplacement
  • un hook ValidateDownloaded permet d'ajouter une validation custom (signature, scan, etc.)
  • sur Windows, le remplacement in-place n'est pas fait par défaut ; fournir Options.ReplaceExecutable pour une stratégie dédiée