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 } }