go-github-selfupdate это довольно хорошая реализация поиска и обновлений новых версий приложения если вы используете GitHub в качестве хостинга релизов. Библиотека поддерживает поиск новых semver релизов через GiHub releases.
Подключить поиск и загрузку новых обновлений достаточно просто:
- Ваш проект должен находиться на GitHub плюс очень важно чтобы новые релизы публиковались только через страницу GitHub releases (пример).
- Далее в проект добавляем переменную с номером версии.
- Теперь вызываем selfupdate библиотеку: сначала проверяем выход новых релизов (понадобится GitHub токен если проект приватный) и ,если имеются новые версии, делаем загрузку и замену исходного приложения.
- После перезагрузки вы будете использовать последнюю версию приложения.
Пример приложения:
package main
import (
"fmt"
"github.com/blang/semver"
"github.com/rhysd/go-github-selfupdate/selfupdate"
"log"
)
const version = "0.0.1"
const project = "aleksandrzhiliaev/some-project"
func main() {
latest, found, err := selfupdate.DetectLatest(project)
if err != nil {
log.Println("Binary update failed:", err)
return
}
fmt.Println("Latest version:" + latest.Version.String())
fmt.Println(found)
// Update it
r, err := selfupdate.UpdateSelf(semver.MustParse(version), project)
fmt.Println(r)
if err != nil {
log.Println("Binary update failed:", err)
return
}
}