При развертывании приложений в продакшене сборка двоичных файлов с информацией о версии и другими метаданными помогает улучшить процессы мониторинга, регистрации данных и отладки за счет добавления идентификационной информации для отслеживания версий сборок.
Поскольку эти значения постоянно меняются, внесение этих данных в исходный код и их изменение при каждой сборке становится непростой задачей, где могут возникнуть ошибки.
В Go эту проблему можно решить с помощью опции
Этот флаг предоставляет возможность изменять поведение компоновщика и управлять различными аспектами процесса сборки. Вот некоторые примеры того, как может быть использован флаг
1️⃣ Установка значений переменных во время компиляции: можно использовать флаг для установки значений переменных во время компиляции, что может быть полезно для внедрения информации о версии, времени сборки или других метаданных в исполняемый файл.
$
2️⃣ Оптимизация размера бинарного файла: флаг может быть использован для удаления информации об отладке и символов таблицы, что может значительно уменьшить размер исполняемого файла.
$
3️⃣ Изменение поведения компоновщика: можно также изменять другие параметры компоновщика, например, задавать кастомный файл запуска или изменять поведение компоновщика по умолчанию.
$
4️⃣ Изменение имени выходного файла: флаг может быть использован для задания кастомного имени выходного файла во время компиляции.
$
🔜 Подробнее
👉 @juniorGolang
Поскольку эти значения постоянно меняются, внесение этих данных в исходный код и их изменение при каждой сборке становится непростой задачей, где могут возникнуть ошибки.
В Go эту проблему можно решить с помощью опции
-ldflags
команды go build
. Флаг -ldflags
в Go используется для передачи определенных инструкций компоновщику (linker) во время сборки программы. Этот флаг предоставляет возможность изменять поведение компоновщика и управлять различными аспектами процесса сборки. Вот некоторые примеры того, как может быть использован флаг
-ldflags
:$
go build -ldflags "-X main.version=1.0.0"
$
go build -ldflags "-s -w"
$
go build -ldflags "-extldflags '-static'"
$
go build -ldflags "-o custom_name"