Автообновление Go проектов при помощи github-selfupdate

go-github-selfupdate это довольно хорошая реализация поиска и обновлений новых версий приложения если вы используете GitHub в качестве хостинга релизов. Библиотека поддерживает поиск новых semver релизов через GiHub releases.

Подключить поиск и загрузку новых обновлений достаточно просто:

  1. Ваш проект должен находиться на GitHub плюс очень важно чтобы новые релизы публиковались только через страницу GitHub releases (пример).
  2. Далее в проект добавляем переменную с номером версии.
  3. Теперь вызываем selfupdate библиотеку: сначала проверяем выход новых релизов (понадобится GitHub токен если проект приватный) и ,если имеются новые версии, делаем загрузку и замену исходного приложения.
  4. После перезагрузки вы будете использовать последнюю версию приложения.

Пример приложения:

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

 

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *