Display the rendered output of a specific template file

If you want to inspect the rendered output of a specific template file (e.g., when debugging a single resource) or multiple files, use the -s, --show-only=[] flag. For example:

$ werf render -s .helm/charts/frontend/templates/deployment.yaml
---
# Source: demo-app/charts/frontend/templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  annotations:
    meta.helm.sh/release-name: demo-app
    meta.helm.sh/release-namespace: demo-app
...

Compute and display all service values

Sometimes you need to understand what service values are passed to templates by werf. Use the werf helm get-autogenerated-values command for this:

$ werf helm get-autogenerated-values
global:
  werf:
    name: demo-app
    version: v2.36.4
werf:
  commit:
    date:
      human: 2025-05-21 14:39:58 +0300 +0300
      unix: 1747827598
    hash: 577ec7a7caf4d5f94d5cf05df5c0fb74f5a8b6ac
  image:
    backend: REPO:TAG
    frontend: REPO:TAG
  is_stub: true
  name: demo-app
  namespace: demo-app
  repo: REPO
  stub_image: REPO:TAG
  tag:
    backend: TAG
    frontend: TAG
  version: v2.36.4

Специальные отладочные функции

Флаг --debug-templates включает расширенный режим отладки Go-шаблонов в werf.

В этом режиме:

  • Часть ошибок становится более подробной, включая дополнительный контекст, который скрыт в обычном режиме.
  • Становятся доступны специальные функции для отладки шаблонов.
  • Появляется возможность вывода отладочной информации в лог без влияния на результат шаблонизации.

Подробный формат ошибок включается при использовании --debug-templates, но отключён в обычном режиме, чтобы пользователь случайно не раскрыл потенциально чувствительные данные (например, секреты или внутренние значения).

Ниже приведены сценарии, в которых эти функции могут быть полезны, а также их поведение в зависимости от режима отладки.

Отобразить произвольную строку в логе

Вы можете вставить сообщения в лог на произвольных этапах шаблонизации с помощью printf_debug. Это удобно для отслеживания значений переменных, выполнения условий и порядка шаблонизации.

  • С --debug-templates: сообщение выводится в лог, не влияет на результат шаблонизации;
  • Без --debug-templates: функция ничего не делает.

Пример:

{{ printf_debug (printf "Current value: %v" .Values.someVar) }}

Отобразить дамп любой структуры в логе

Если нужно увидеть значение переменной, особенно сложной (например, .Values или $), используйте dump_debug.

  • С --debug-templates: структура значения логируется в человекочитаемом виде, не влияет на результат шаблонизации;
  • Без --debug-templates: функция ничего не делает.

Пример:

{{ dump_debug $.Values.werf }}

Отладка функции include

Для отладки функций include, замените их на include_debug и включите режим отладки шаблонов с --debug-templates. Теперь, во время шаблонизации, в логах будет отображаться отладочная информация о каждом вызове include.

  • С --debug-templates: работает как include, но также логирует имя шаблона, его содержимое и результат его шаблонизации;
  • Без --debug-templates: работает как обычный include.

Пример:

{{ include_debug "my-template" . }}

Отладка функции tpl

Для отладки функций tpl, замените их на tpl_debug и включите режим отладки шаблонов с --debug-templates. Теперь, во время шаблонизации, в логах будет отображаться отладочная информация о каждом вызове tpl.

  • С --debug-templates: работает как tpl, но также логирует переданную строку-шаблон и результат шаблонизации;
  • Без --debug-templates: работает как обычный tpl.

Пример:

{{ tpl_debug "{{ .Values.env }}" . }}