Jetbrains Space + go get
Дано:
- Вы используете
Jetbrains Space
1. - Вы пишите код на
Go
. - Вам необходимо создать общую библиотеку и подключать её как модуль в ваших внутренних проектах.
Ограничения:
- В
Space
нельзя создавать вложенные подгруппы. В какой-то степени, это хорошо. - Каждая библиотека должна находиться в своём собственном репозитории.
В первую очередь настроим git
. Добавьте в ~/.gitconfig
следующую директиву:
[url "[email protected]/<org-name>"]
insteadOf = https://<org-name>.jetbrains.space/
Здесь <org-name>
— фрагмент доменного имени, принадлежащего вашей организации.
Создайте или используйте существующий проект для размещения репозиториев с библиотеками. В примерах я буду полагать, что
он называется lib
, вы можете дать ему имя на ваш выбор.
В проекте lib
создайте репозиторий вашей библиотеки. Инициализируйте Go
-модуль следующим образом:
go mod init <org-name>.jetbrains.space/lib/<lib-name>
Вместо <lib-name>
подставьте название библиотеки/репозитория. В сам репозиторий положите код своей библиотеки и
передайте его на сервер.
Для добавления вашей новой внутренней библиотеки в проект выполните следующие команды:
export GONOSUMDB=<org-name>.jetbrains.space
go get <org-name>.jetbrains.space/lib/<lib-name>
При таком раскладе Go
не пойдет проверять по GOSUMDB
вашу библиотеку и она подтянется как зависимость.
Что делать с переменной GONOSUMDB
, решите самостоятельно:
- её можно записать с помощью
go env -w ...
; - экспортировать в
rc
-файле вашей командной оболочки; - выставлять как переменную процесса каждый раз вручную.