Как проверить, что предоставленная двоичная версия приложения является последней

# #go

Вопрос:

Я распространяю свое приложение Go CLI среди пользователей и теперь хочу создать механизм, предлагающий пользователям обновление, если я создам новый релиз/тег в Gitlab

Как проверить, что у источника появилась новая версия?

Комментарии:

1. docs.gitlab.com/ee/api/tags.html

2. неясно, хотите ли вы обновить среду выполнения или просто перестроить их до последней версии.

3. обновление во время выполнения, как и zsh, я думаю, когда мы откроем терминал, он попросит нас обновить или нет

Ответ №1:

Вы, вероятно, могли бы начать с https://github.com/creativeprojects/go-selfupdate и добавьте поддержку gitlab, реализовав эти 3 интерфейса, например, используя https://github.com/xanzy/go-gitlab для взаимодействия с gitlab.

Автор go-selfupdate уже заявил, что они в любом случае хотят поддерживать gitlab, поэтому вы даже можете вернуть поддержку gitlab, и она, скорее всего, будет принята.

Комментарии:

1. Кстати, я никоим образом не связан ни с одним из этих проектов. Просто демонстрирую свой гугл-фу.

2. Если вы можете использовать GitHub или gitea вместо gitlab, то вам больше нечего делать, потому что go-selfupdate уже поддерживает их из коробки.

Ответ №2:

Если ваш CLI разработан частично или полностью как go-модуль и использует теги семантической версии, то ваша последняя версия будет автоматически распространяться среди пользователей этого модуля при использовании https://pkg.go.dev/

Например, взгляните на репозиторий github моего go-модуля и обратите внимание, как последняя стабильная версия индексируется ссылкой go pkg.

Это происходит автоматически по волшебству- прочитайте документы на https://pkg.go.dev/


Если вы спрашиваете, как правильно распространять двоичный файл для ваших пользователей, тогда удачи вам с пользовательской реализацией; вам, вероятно, будет лучше упаковать его в виде оснастки или аналогичной платформы распространения.

Комментарии:

1. работает ли pkg.go.dev также с частным репо?