# #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 также с частным репо?