2016-07-07 3 views
3

Я использую GoDep для разрешения зависимостей проекта. Моя проблема заключается в том, что репозитории для зависимостей удаляются и мой проект не будет создан.Как хранить зависимости go?

Я пытаюсь найти любое решение для хранения зависимостей в Artifactory или другом решении.

Прошу совета.

С уважением.

ответ

1

Хорошо, поэтому GoDeps может быть стандартным способом сделать это, но я обычно нашел это немного сложным. На мой взгляд, используйте Makefile, который устанавливает пользовательский GoPath и просто включает зависимости с вашим кодом (удалите их .git-папку). Таким образом, версия зависает, и никто не должен делать godep restore или что-то подобное.

Вы можете делать рецепты, такие как make deploy, который строит ваш код, запускает GoFmt, очищает файлы pkg, устанавливает его на ваш пользовательский GoPath bin/, а затем вы просто запускаете двоичный файл.

У вас может быть другой, такой как make install, который установит любые отсутствующие зависимости.

Мне удалось создать часы, используя это в моем файле Makefile, чтобы продолжать поиск изменений в системе на основе Linux с помощью inotify-tools и вызвать перестройку.

Внутренне все команды будут использовать стандартные команды go, но вы избавитесь от GoDeps и поддерживаете JSON. Чтобы обновить зависимость, это может быть проблемой, так как вам придется вручную скопировать весь каталог в свой собственный путь и удалить папку .git /.

Наша компания использует этот метод и, похоже, работает с нами очень хорошо.

Плюс этот метод в основном уводит вас от пути $GOPATH/src/github.com/repoName/.

Если мне кажется неясным, дайте мне знать, я добавлю суть в github.

+3

В качестве альтернативы, просто используйте govendor (https://github.com/kardianos/govendor), который делает все это для вас, без необходимости устанавливать пользовательский '$ GOPATH' в вашем make-файле (который нарушает случайные использования' go build 'и подобные, и, откровенно говоря,' make' медленно, как черт для таких вещей). Govendor будет хранить ваши отпечатки в '/vendor', который проверяет их с помощью вашего кода, позволяя надежные сборки. До тех пор, пока вы используете Go 1.6 (или 1.5 и устанавливаете envvar), вам не нужен пользовательский '$ GOPATH' вообще, так как инструмент' go' автоматически 'предпочитает' папку '/ vendor'. – Kaedys

+1

Ahh stackoverflow .. Ты научишь меня чему-то новому каждый день! Спасибо, я посмотрю. – ishaan

+0

Не проверяйте двоичные файлы с исходным кодом на ваш ** источник **. Не. – JBaruch

Смежные вопросы