Шаг 1: Выбор версии и способа установки. Всегда используйте последнюю стабильную версию Go, если иное не требуется legacy-проектами. Официальный сайт golang.org предоставляет бинарные дистрибутивы для всех основных ОС. Для Linux и macOS предпочтительна установка через менеджер пакетов (apt, yum, brew) для удобства обновлений. Однако для полного контроля, особенно на серверах, рекомендуется скачивать архив и распаковывать его в системную директорию, например, `/usr/local/go`. Для Windows существует MSI-установщик.
Шаг 2: Настройка переменных окружения. Ключевой момент установки Go — правильная конфигурация трех переменных окружения в вашем shell-профиле (.bashrc, .zshrc и т.д.):
- `GOROOT`: Путь к каталогу, куда установлен Go (например, `/usr/local/go`). Обычно устанавливается автоматически.
- `GOPATH`: Рабочее пространство. Здесь находятся ваши проекты (`src`), скомпилированные пакеты (`pkg`) и бинарные файлы (`bin`). Исторически это была обязательная настройка, но с введением Go Modules (начиная с версии 1.13) ее роль уменьшилась. Рекомендуется установить `GOPATH` в `$HOME/go`.
- `PATH`: Необходимо добавить `$GOROOT/bin` и `$GOPATH/bin` в переменную PATH, чтобы запускать команду `go` и установленные утилиты из любого места.
Шаг 4: Настройка Go Modules для управления зависимостями. Go Modules — это must-have для любого современного проекта. Инициализируйте модуль в корне вашего проекта: `go mod init github.com/yourname/projectname`. Это создаст файлы `go.mod` (описание модуля) и `go.sum` (хеши зависимостей). Для добавления внешней библиотеки используйте `go get github.com/pkg/errors`. Все зависимости будут скачаны и зафиксированы с версиями. Команда `go mod tidy` — ваш лучший друг для очистки и синхронизации зависимостей.
Шаг 5: Организация рабочего пространства DevOps-инженера. В отличие от чистых разработчиков, DevOps работает с множеством инструментов и скриптов. Рекомендуемая структура:
- `$HOME/go/src/tools/` — для личных или форков open-source утилит.
- `$HOME/go/src/scripts/` — для небольших скриптов автоматизации на Go.
- `$HOME/go/src/infra/` — для проектов, связанных с внутренней инфраструктурой (агенты, кастомные экспортеры для Prometheus и т.д.).
Продвинутые практики для DevOps:
- Кросс-компиляция. Go поддерживает ее из коробки. Для сборки бинарника для Linux AMD64 на macOS выполните: `GOOS=linux GOARCH=amd64 go build -o mytool-linux main.go`. Это незаменимо для создания агентов, которые нужно разворачивать на удаленных серверах.
- Использование `go install` для глобальной установки утилит. Команда `go install github.com/gorilla/mux@latest` скомпилирует и поместит бинарник в `$GOPATH/bin`. Отличный способ установки DevOps-инструментов вроде `gosec` (анализатор безопасности), `staticcheck` (линтер) или `goreleaser` (автоматизация релизов).
- Интеграция в CI/CD пайплайны. В ваших Jenkinsfile, GitLab CI или GitHub Actions добавляйте шаг установки Go и кэширования модулей для ускорения сборок. Пример для GitHub Actions: используйте официальный action `actions/setup-go`. Всегда запускайте `go mod tidy` и `go test ./...` на этапе сборки.
- Создание Docker-образов с Go-приложениями. Используйте многостадийную сборку (multi-stage build) для создания минимальных образов. Первый этап на базе `golang:alpine` компилирует приложение, второй — копирует статический бинарник в чистый образ `alpine:latest` или `scratch`. Это дает образы размером в несколько мегабайт.
- Профилирование и отладка. Для высоконагруженных инструментов используйте встроенные пакеты профилирования (`net/http/pprof`, `runtime/pprof`). Утилита `go tool pprof` поможет найти узкие места в памяти и CPU.
Комментарии (10)