Для разработчиков Golang управление и установка модулей Go обычно не составляет труда при работе с общедоступными репозиториями. Однако все становится сложнее, когда вам нужно работать с частными модулями Go.
Инструментарий модулей Go не предоставляет встроенного механизма для работы с частными модулями, кроме использования частного GOPROXY, а правильная настройка и обслуживание такого модуля — вариант не для каждого разработчика или организации. Некоторые службы репозитория пакетов поддерживают работу с частными модулями Go, но, как правило, не предоставляют разработчикам максимально понятных возможностей.
По этой причине в большинстве случаев нам приходится использовать сложные конфигурации Git (.netrc или .gitconfig) в сочетании с некоторыми переменными среды Go для управления аутентификацией в наших частных репозиториях при использовании go get, go install или go mod download. .
Проблема этих конфигураций Git заключается в том, что они не очевидны для всех разработчиков и могут быть небезопасными, поскольку могут требовать хранения учетных данных в виде простого текста в файловой системе. Эти проблемы становятся еще более проблематичными при настройке систем CI/CD, создании образов Docker и т. д.
Как давние разработчики Golang (пришедшие из эпохи, когда модулей Go даже не существовало), мы всегда мечтали о времени, когда работа с частными библиотеками Go будет такой же простой и эффективной, как работа с публичными.
Представьте, что вы разрабатываете и размещаете свои частные библиотеки Go на GitHub, и сразу же получаете новые изменения из исходного кода вашего проекта, просто установив переменную среды GOPROXY. Никаких сложных и небезопасных конфигураций Git, никакого самостоятельного обслуживания GOPROXY, никаких сложных и подверженных ошибкам рабочих процессов публикации, а также одинаковые настройки для вашего локального компьютера разработки, Dockerfile и среды CI/CD.
Поприветствуйте goproxy.dev, частный сервис GOPROXY, который интегрируется с GitHub и предоставляет вам бесшовную установку частных модулей Go.
Просто войдите в goproxy.dev под своей учетной записью GitHub, предоставьте доступ к частным репозиториям, которые вы будете использовать, и экспортируйте переменные среды GOPROXY и GONOSUMDB.
export [email protected],proxy.golang.org,direct export GONOSUMDB=github.com/your-organization
Эти переменные среды Go можно установить непосредственно из конфигурации вашей оболочки (.zshrc, .bashrc и т. д.) или с помощью go env -w.
Затем вы можете запускать обычные команды go для установки и загрузки ваших частных модулей.
go get github.com/your-organization/[email protected] go install github.com/your-organization/go-module/cmd ... go mod download
Для интеграции с goproxy.dev требуется настроить только две переменные среды. Лучший способ сделать это во время сборки Docker — использовать функцию секретов сборки Docker.
Внутри вашего Dockerfile:
COPY go.mod go.sum ./ RUN --mount=type=secret,id=GOPROXY \ GOPROXY=$(cat /run/secrets/GOPROXY) \ GONOSUMDB=github.com/your-organization \ go mod download RUN go build .
И бег:
GOPROXY="[your GOPROXY value]" docker build --secret id=GOPROXY
Просто настройте секрет для своих действий GitHub, содержащий URL-адрес GOPROXY, и используйте его в своих рабочих процессах:
jobs: build: - run: | go mod download go build . env: GOPROXY: ${{ secrets.PRIVATE_GOPROXY }} GONOSUMDB: github.com/your-organization
С goproxy.dev вы получите лучший опыт разработки при использовании библиотек с помощью Go. Независимо от того, зависите ли вы от общедоступных библиотек с открытым исходным кодом или частных модулей вашей организации, у вас будет единый рабочий процесс: настройте переменную среды GOPROXY и получите зависимости для конкретной версии, ветки Git или фиксации.
Узнайте больше и начните работу с goproxy.dev сегодня, подписавшись на нашу 14-дневную бесплатную пробную версию.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3