Задание переменной Go с ldflags конфликтует с папкой вендора - PullRequest
0 голосов
/ 01 июня 2018

В настоящее время я разрабатываю небольшое приложение Go и хочу установить определенную переменную (например, Version, GitCommit, BuildID ... и т. Д.) Во время сборки или выполнения (с go build или go run), используя-ldflags option.

Поскольку в моей компании у нас есть несколько проектов с одинаковой базой, я решил извлечь код с этими переменными в отдельный модуль "info", который можно импортировать в каждый проект.

Вот моя проблема, скажем, я запускаю приложение следующим образом:

go run -ldflags "-X git.mycompany.com/utils/info.Version=1.0.0" app.go

Это работает хорошо, и переменная установлена ​​правильно, хотя переменная не является частью"основного" приложения, но в зависимости.

Затем я решил развернуть приложение, поэтому я использовал новый инструмент dep для создания папки vendor.Следовательно, зависимость "info" теперь находится в: vendor/git.mycompany.com/utils/info

Теперь, когда я запускаю команду , такую ​​же , как указано выше, указанная переменная (Version) больше не устанавливается.

Я что-то здесь упускаю?Как только я удаляю папку vendor, все снова работает нормально.Как будто эта папка поставщика конфликтует с опцией -ldflags или чем-то еще.

Заранее спасибо!

1 Ответ

0 голосов
/ 23 октября 2018

У нас была точно такая же проблема, после многих исследований мы наткнулись на решение в комментарии к проблеме GitHub: cmd / link: -X не работает для вендорных пакетов .

Решение: должно быть указано полное имя пути относительно $GOPATH.

Работает при разработке git.mycompany.com/utils/info, поскольку полный путь указан правильно.
Это не работает для зависимостей, связанных с поставщиками, потому что полный путь от $GOPATH будет выглядеть как git.mycompany.com/name-of/package/vendor/git.mycompany.com/utils/info.Version=1.0.0

К сожалению, по-видимому, нет документации по этому вопросу (для дальнейшегосм. вопрос), но, как отмечает Дейв Чейни в комментарии:

, это побочный эффект от того, как реализуется язык

...