Создать Go-модуль
В этой инструкции описано, как создать Go-модуль и подготовить ZIP-архив для последующей загрузки в реестр Cloud Registry.
Подробнее о работе с Go-модулями в официальной документации Go Modules Reference
Структура Go-модуля
Пример структуры проекта:
mymodule/ # Корневая директория Go-модуля
│
├── go.mod # Определяет Go-модуль и его зависимости
├── go.sum # Контрольные суммы зависимостей
├── main.go # Точка входа (для исполняемых Go-модулей)
│
├── pkg/ # Публичные пакеты
│ └── utils/
│ └── utils.go
│
└── internal/ # Приватные пакеты (недоступны извне Go-модуля)
└── config/
└── config.go
Создание Go-модуля
-
Установите Go
. -
Создайте директорию Go-модуля и перейдите в нее:
mkdir mymodule && cd mymodule -
Инициализируйте Go-модуль, указав полный путь, по которому он будет доступен в реестре:
go mod init registry.yandexcloud.net/go/<идентификатор_реестра>/mymoduleВ корне проекта появится файл
go.mod:module registry.yandexcloud.net/go/<идентификатор_реестра>/mymodule go 1.21 -
Добавьте код Go-модуля. Например, создайте файл
hello.go:cat > hello.go << 'EOF' package mymodule func Hello() string { return "Hello from my module!" } EOF -
При наличии внешних зависимостей синхронизируйте
go.modиgo.sum:go mod tidy
Подготовка ZIP-архива для публикации
Go CLI не поддерживает публикацию модулей напрямую. Для загрузки в реестр Cloud Registry подготовьте ZIP-архив, структура которого соответствует Module zip files<полный_путь_модуля>@<версия>/, где <полный_путь_модуля> совпадает с именем Go-модуля, указанным в go.mod.
Важно
Максимальный размер ZIP-архива — 500 МБ.
-
Находясь в корне Go-модуля, соберите ZIP-архив, подставив идентификатор вашего реестра, имя и версию Go-модуля:
find . -type f | bsdtar -a -cf ../mymodule-v1.0.0.zip \ -s '|^\./|registry.yandexcloud.net/go/<идентификатор_реестра>/mymodule@v1.0.0/|' -T -Примечание
Утилита
bsdtarвходит в состав libarchive . В macOS она предустановлена. В Debian и Ubuntu установите пакетlibarchive-tools:sudo apt install libarchive-tools -
Проверьте структуру архива:
unzip -l ../mymodule-v1.0.0.zipРезультат:
Archive: ../mymodule-v1.0.0.zip Length Date Time Name --------- ---------- ----- ---- 74 2026-06-13 12:00 registry.yandexcloud.net/go/<идентификатор_реестра>/mymodule@v1.0.0/go.mod 112 2026-06-13 12:00 registry.yandexcloud.net/go/<идентификатор_реестра>/mymodule@v1.0.0/hello.go --------- ------- 186 2 files