Как запустить команду go, используя только зависимости от поставщика?

Я продолжаю сталкиваться с проблемой, когда я устанавливаю зависимости локально, все работает нормально, я нажимаю на сервер непрерывной интеграции, а затем он ломается, потому что я забыл godep save ./... зависимость.

Как я могу запустить команду go, но потребовать импорта vendor?

Изменить:

Я использую go1.6. Я хочу, чтобы команда завершилась ошибкой, если сторонняя зависимость не разрешена для поставщика. Другими словами, есть ли способ остановить разрешение зависимостей в $GOPATH во время тестов?

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


person AJcodez    schedule 19.07.2016    source источник
comment
Для меня это расплывчатый вопрос. Какую версию go вы используете? Вы думали о том, чтобы попробовать каталог vendor, который поддерживает в версии 1.5 и выше?   -  person squiguy    schedule 19.07.2016
comment
@squiguy отредактировал. Надеюсь, в этом есть больше смысла.   -  person AJcodez    schedule 19.07.2016
comment
Это то, что нужно сделать с помощью инструментов, которые вы используете для продавцов. Я не знаю, может ли godep перечислять недостающие пакеты, но я знаю, что для этого можно использовать другие, такие как govendor и glide. Если вы хотите, чтобы что-то проверялось при фиксации, нажатии и т. Д., Это то, для чего нужны хуки git.   -  person JimB    schedule 19.07.2016
comment
Я знаю, что предлагать другие инструменты - это не ответ, но именно по этой причине я использую gb.   -  person squiguy    schedule 19.07.2016


Ответы (1)


Невозможно предотвратить сканирование сборщиком $GOPATH пакетов. Похоже, вы используете не очень хороший поток для управления зависимостями. Я рекомендую вам использовать glide для продажи.

Наиболее рекомендуемый рабочий процесс:

  1. Сохраните актуальный список зависимостей в glide.yaml.
  2. Запустите glide up после любых изменений в glide.yaml. Он установит все зависимости в каталог vendor и сгенерирует glide.lock с фиксированными версиями пакетов. Зафиксируйте glide.lock в VCS. Не меняйте вручную glide.lock.
  3. Не фиксируйте vendor каталог в VCS.
  4. Запустите glide install на своем CI или сервере сборки, чтобы установить зависимости с glide.lock на vendor.
  5. Строить.

Переход с godep на glide может быть выполнен легко, потому что glide имеет команду для перехода с Godeps.json на glide.yaml.

person Vadim Petrov    schedule 22.07.2016