Jetbrains Space + go get
Дано:
- Вы используете
Jetbrains Space1. - Вы пишите код на
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-файле вашей командной оболочки; - выставлять как переменную процесса каждый раз вручную.