52 lines
1.3 KiB
Markdown
52 lines
1.3 KiB
Markdown
|
|
# 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 actuellement :
|
||
|
|
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"tag_name": "v1.2.3",
|
||
|
|
"assets": {
|
||
|
|
"links": [
|
||
|
|
{
|
||
|
|
"name": "my-mcp-linux-amd64",
|
||
|
|
"url": "https://example.com/downloads/my-mcp-linux-amd64"
|
||
|
|
}
|
||
|
|
]
|
||
|
|
}
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
Exemple :
|
||
|
|
|
||
|
|
```go
|
||
|
|
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
|