Переменные среды для ветвей на Netlify

Мы используем автоматическое развертывание Netlify для всех отправляемых веток git.

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

Можно создавать переменные среды на Netlify, но я не понимаю, можно ли различать переменные для определенных ветвей?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
8
0
1 860
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Есть способ настроить переменные среды на основе контекста развертывания в 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, которая будет иметь значение, чтобы знать определенный контекст (производство, разработка, развертывание). Язык сборки теперь может обращаться к этим переменным, чтобы принимать решения о том, что включать в результаты сборки.

ПРИМЕЧАНИЕ:

  • Используйте любое имя и значения переменной env, которые вам нужны. Пример нацелен на генератор статического сайта Hugo, который имеет функцию getenv для получения значения.
  • Я не тестировал, как использование context.branch-deploy влияет на таргетинг на настраиваемую ветку, поэтому будьте осторожны с переопределением этих контекстов.
  • Любые переменные, указанные в netlify.toml, перезаписывают переменные среды, введенные в консоль браузера на сайте Netlify.

Помните: переменные env также зависят от сборки и должны быть встроены в ваш код во время сборки, если вам нужно использовать их в своем коде на клиенте.

talves 08.04.2018 20:10

Хм, не могли бы вы привести пример того, как будет выглядеть оператор if в коде, который включает только тег скрипта в производственном контексте?

Fellow Stranger 08.04.2018 22:55

Разработчик на Netlify может использовать любое количество решений с разными языками кодирования, поддерживаемыми для сборки. Задайте отдельный вопрос, посвященный конкретной проблеме, которая у вас есть, и используемому вами языку кодирования, чтобы получить правильные рекомендации по использованию переменных среды в вашем коде. Я откорректирую ответ, чтобы объяснить, как в целом использовать описанную выше настройку.

talves 09.04.2018 16:07

Как бы вы сделали это для секретных переменных env, которые не могут быть зафиксированы в файле netlify.toml? /

Tom 05.06.2019 23:22

Сохраните секретные ключи в консоли app.netlify.com. К сожалению, вы не сможете хранить по контексту, поэтому вам придется создать отдельный сайт для промежуточной ветки и использовать промежуточный секретный ключ на этом сайте.

talves 06.06.2019 15:55

Может ли быть способ получить секреты от GitHub вместо использования пользовательского интерфейса Netlify и передать их в netlify.toml? Это упростило бы добавление / обновление секретов

Robin Métral 06.06.2020 16:05

Другие вопросы по теме