Мы используем автоматическое развертывание Netlify для всех отправляемых веток git.
Мы хотим включить наши сценарии аналитики (и др.) Только для основной ветки, то есть версии веб-сайта, которую посещают наши пользователи.
Можно создавать переменные среды на Netlify, но я не понимаю, можно ли различать переменные для определенных ветвей?





Есть способ настроить переменные среды на основе контекста развертывания в Netlify в вашем файле netlify.toml. Это используется на производственном сайте с помощью Hugo, но вы можете использовать любые ключи для переменных и команд.
netlify.toml# Global settings applied to the whole site.
[build]
command = "yarn build"
publish = "public"
# build a preview of the site (Drafts and Future dates also)
[context.deploy-preview]
command = "yarn build:preview"
[build.environment]
HUGO_ENV = "development"
[context.production.environment]
HUGO_VERSION = "0.29"
HUGO_ENV = "production"
# you can lock a version of hugo for a deploy preview
[context.deploy-preview.environment]
HUGO_VERSION = "0.29"
HUGO_ENV = "deploy" # TEST: should be deploy or something other than production
# you can lock a version of hugo for a branch-deploy (other than previews)
[context.branch-deploy.environment]
HUGO_VERSION = "0.30"
HUGO_ENV = "development"
Также нацелитесь на конкретную ветку (пример: новая ветка)
# build a preview of the site (Drafts and Future dates also)
[context.new-branch]
command = "yarn build:preview"
# you can also target a specific branch
[context.new-branch.environment]
HUGO_VERSION = "0.29"
HUGO_ENV = "deploy" # TEST: should be deploy or something other than production
Решение: Теперь будет переменная среды с именем HUGO_ENV, которая будет иметь значение, чтобы знать определенный контекст (производство, разработка, развертывание). Язык сборки теперь может обращаться к этим переменным, чтобы принимать решения о том, что включать в результаты сборки.
ПРИМЕЧАНИЕ:
getenv для получения значения.context.branch-deploy влияет на таргетинг на настраиваемую ветку, поэтому будьте осторожны с переопределением этих контекстов.netlify.toml, перезаписывают переменные среды, введенные в консоль браузера на сайте Netlify.Хм, не могли бы вы привести пример того, как будет выглядеть оператор if в коде, который включает только тег скрипта в производственном контексте?
Разработчик на Netlify может использовать любое количество решений с разными языками кодирования, поддерживаемыми для сборки. Задайте отдельный вопрос, посвященный конкретной проблеме, которая у вас есть, и используемому вами языку кодирования, чтобы получить правильные рекомендации по использованию переменных среды в вашем коде. Я откорректирую ответ, чтобы объяснить, как в целом использовать описанную выше настройку.
Как бы вы сделали это для секретных переменных env, которые не могут быть зафиксированы в файле netlify.toml? /
Сохраните секретные ключи в консоли app.netlify.com. К сожалению, вы не сможете хранить по контексту, поэтому вам придется создать отдельный сайт для промежуточной ветки и использовать промежуточный секретный ключ на этом сайте.
Может ли быть способ получить секреты от GitHub вместо использования пользовательского интерфейса Netlify и передать их в netlify.toml? Это упростило бы добавление / обновление секретов
Помните: переменные env также зависят от сборки и должны быть встроены в ваш код во время сборки, если вам нужно использовать их в своем коде на клиенте.