Как сделать скрипт goreleaser для локальной сборки deb-файла?

Я абсолютный новичок в Golang, но я хочу изменить сценарий сборки Go, чтобы он создавал файл только локально, а не публиковал его на GitHub.

https://github.com/dahendel/docker-machine-driver-cloudstack/blob/master/.goreleaser.yml

Как поступить?

1 ответ

Решение

Я клонировал ваше репо и попробовал это на своей локальной машине. Вот шаги:

  1. Git clone

  2. выполнение Dry run (тестирование всего перед выпуском "по-настоящему":

    $ goreleaser release --skip-publish

  3. показать, что нет ошибки

     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
    
    
  4. выполнить goreleaser для выпуска

    Выпуск $ goreleaser

  5. 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 []

убедитесь, что текст релиза есть.

надеюсь, это поможет

Другие вопросы по тегам