Как сделать скрипт goreleaser для локальной сборки deb-файла?
Я абсолютный новичок в Golang, но я хочу изменить сценарий сборки Go, чтобы он создавал файл только локально, а не публиковал его на GitHub.
https://github.com/dahendel/docker-machine-driver-cloudstack/blob/master/.goreleaser.yml
Как поступить?
1 ответ
Я клонировал ваше репо и попробовал это на своей локальной машине. Вот шаги:
Git clone
выполнение Dry run (тестирование всего перед выпуском "по-настоящему":
$ goreleaser release --skip-publish
показать, что нет ошибки
SIGNING ARTIFACTS • pipe skipped error=artifact signing is disabled • DOCKER IMAGES • pipe skipped error=docker section is not configured • PUBLISHING • pipe skipped error=publishing is disabled • release succeeded after 20.75s
выполнить goreleaser для выпуска
Выпуск $ goreleaser
goreleaser создаст папку dist внутри проекта, и эта папка будет состоять из пакетов распространения (deb, rpm).
Я столкнулся с некоторыми проблемами, и вот что я делаю:
- error = отсутствует GITHUB_TOKEN, GITLAB_TOKEN и GITEA_TOKEN
создать токен github или gitlab ( https://github.com/settings/tokens) и поместить его как переменную среды
export GITHUB_TOKEN=xxxxyyyyyzzzzz
решить проблему.
- ошибка предварительной ловушки: xxxx не находится в пределах известного GOPATH/src
как я вижу в вашем goreleaser.yaml
hooks:
pre: dep ensure
вы используете dep verify, проверяете $GOPATH и убедитесь, что $GOPATH указывает на правильный путь вашего проекта Go.
- error = dist не пуст, удалите его перед запуском goreleaser или используйте флаг --rm-dist
папка dist была создана ранее, вы можете либо вручную удалить папку, либо добавить флаги --rm-dist при выполнении команды goreleaser
$ goreleaser release --skip-publish --rm-dist
- error=nfpm failed: rpmbuild отсутствует в $PATH
эта ошибка возникла, когда я работал на компьютере Mac, поэтому rpmbuild не установлен, установка rpm, rpmbuild решает проблему
$brew install rpm
- error =git в настоящее время находится в грязном состоянии, проверьте в конвейере, что может изменять следующие файлы: M Gopkg.lock
Кажется, что Goreleaser проверяет разницу в файлах, так как из-за того, что запущенный hook (dep verify) обновляет Gopkg.lock, и эти изменения / обновления не отправляются в git. Решение всегда вносит изменения в git.
- error =git tag v1.0.5 не был сделан против фиксации 3ae83eebd904d33cc549117254e857ebea04df90
чтение документации GoReleaser: "GoReleaser применяет семантическое управление версиями и выдает ошибку для несовместимых тегов. Ваш тег должен быть допустимой семантической версией. Если это не так, GoReleaser выдаст ошибку".
после нажатия на git убедитесь, что вам нужно обновить теги, в этом случае я обновляю теги до версии 1.0.6 (ранее - версии 1.0.5).
- error =GitHub / GitLab / Gitea Releases: не удалось опубликовать артефакты POST http://xxxyyyzzz/releases: 404 Not Found []
убедитесь, что текст релиза есть.
надеюсь, это поможет