| 0 | --- | # Секция мета-информации |
| ... | ||
| 1 | project: string ! | # Уникальное имя проекта приложения |
| 2 | configVersion: int ! | # Версия конфигурации. На данный момент поддерживается единственная версия 1 |
| 3 | build: | # Общие настройки сборки |
| ... | ||
| 4 | cacheVersion: string | # Версия кеша |
| 5 | platform: [ string, ... ] | # Общий список целевых платформ для всех образов (например ['linux/amd64', 'linux/arm64', 'linux/arm/v8']) |
| 6 | staged: bool | # Включить послойное кеширование инструкций Dockerfile в container registry глобально для всех образов |
| 7 | imageSpec: | # Глобальная конфигурация образов согласно OCI спецификации, которая применяется ко всем образам. Подробнее здесь |
| ... | ||
| 8 | author: string | # Автор образа |
| 9 | clearHistory: bool | # Удалить всю историю сборки образа |
| 10 | config: | # Общая конфигурация образа |
| ... | ||
| 11 | labels: { name string: value string, ... } | # Список лейблов для добавления |
| 12 | removeLabels: [ string || /REGEXP/, ... ] | # Список лейблов для удаления |
| 13 | keepEssentialWerfLabels: bool | # Не удалять необходимые для штатной работы werf лейблы |
| 14 | deploy: | # Настройки выката |
| ... | ||
| 15 | helmChartDir: string |
#
Путь до директории helm чарта проекта (значение по умолчанию .helm)
|
| 16 | helmChartConfig: | # Переопределить конфигурацию в Chart.yaml |
| ... | ||
| 17 | appVersion: string | # Переопределить appVersion в Chart.yaml |
| 18 | helmRelease: string |
#
Шаблон имени релиза (значение по умолчанию [[ project ]]-[[ env ]])
|
| 19 | helmReleaseSlug: bool |
#
Слагификация имени релиза (значение по умолчанию true)
|
| 20 | namespace: string |
#
Шаблон Kubernetes namespace (значение по умолчанию [[ project ]]-[[ env ]])
|
| 21 | namespaceSlug: bool |
#
Слагификация Kubernetes namespace (значение по умолчанию true)
|
| 22 | cleanup: | # Настройка удаления неактуальных образов |
| ... | ||
| 23 | disable: bool | # Отключить очистку полностью, что предотвращает публикацию мета-образов в container registry. После отключения можно выполнить werf cleanup для удаления существующих мета-образов |
| 24 | disableKubernetesBasedPolicy: bool | # Отключить политику очистки, которая позволяет не удалять запущенные в Kubernetes образы из container registry |
| 25 | disableGitHistoryBasedPolicy: bool | # Отключить политику очистки, которая позволяет не удалять образы с учётом пользовательских политик по истории Git (keepPolicies) |
| 26 | disableBuiltWithinLastNHoursPolicy: bool | # Отключить политику очистки, которая позволяет не удалять образы, собранные в рамках заданного периода времени (keepImagesBuiltWithinLastNHours) |
| 27 | keepImagesBuiltWithinLastNHours: uint |
#
Минимальное количество часов, которое должно пройти с момента сборки образа (значение по умолчанию 2)
|
| 28 | keepPolicies: | # Набор политик для выборки актуальных версий образов, используя историю Git |
| 29 | - references: | # Набор references, который будет использоваться при сканировании |
| 30 | branch: string || /REGEXP/ | # Множество git origin веток |
| 31 | tag: string || /REGEXP/ | # Множество git origin тегов |
| 32 | limit: | # Набор правил, по которым можно ограничить описанное множество references, основываясь на времени создания git-тега или активности в git-ветке |
| 33 | last: int |
#
Выборка последних n references из определённого в branch/tag множества (значение по умолчанию -1)
|
| 34 | in: duration string | # Выборка git-тегов, которые были созданы в указанный период, или git-веток с активностью в рамках периода. Также для определённого множества branch/tag |
| 35 | operator: And || Or |
#
Определяет какие references будут результатом политики, те которые удовлетворяют оба условия или любое из них (значение по умолчанию And)
|
| 36 | imagesPerReference: | # Лимит искомых версий образов для каждого reference из множества |
| 37 | last: int |
#
Количество искомых версий образов для каждого reference (значение по умолчанию -1)
|
| 38 | in: duration string | # Период, в рамках которого необходимо выполнять поиск образов |
| 39 | gitWorktree: | # Настройки связанные с работой werf с рабочей директорией git проекта |
| ... | ||
| 40 | forceShallowClone: bool | # Принудительно позволить werf использовать shallow clone несмотря на ограничения данного подхода |
| 41 | allowUnshallow: bool |
#
Разрешить процессу werf автоматически преобразовать shallow clone проекта в полный clone в процессе сборки по необходимости (значение по умолчанию true)
|
| 42 | allowFetchOriginBranchesAndTags: bool |
#
Разрешить процессу werf автоматически скачать новые ветки и теги из origin в процессе cleanup по необходимости (значение по умолчанию true)
|
| 43 | --- | # Секция Dockerfile image: может использоваться произвольное количество секций |
| ... | ||
| 44 | image: string || [ string, ... ] ! | # Одно или несколько уникальных имён для образа |
| 45 | final: bool |
#
Пометить образ как финальный (значение по умолчанию true). Подробнее здесь
|
| 46 | dockerfile: string ! | # Путь к Dockerfile относительно директории контекста |
| 47 | staged: bool | # Включить послойное кеширование Dockerfile-инструкций в container registry |
| 48 | cacheVersion: string | # Версия кеша |
| 49 | context: string | # Путь к контексту внутри папки проекта |
| 50 | platform: [ string, ... ] | # Список целевых платформ для данного образа (например ['linux/amd64', 'linux/arm64', 'linux/arm/v8']) |
| 51 | contextAddFiles: [ string, ... ] | # Добавление нехранящихся в git файлов и директорий в сборочный контекст. Пути должны быть относительно директории контекста |
| 52 | target: string | # Конкретная стадия Dockerfile (по умолчанию — последняя, подобно docker build --target) |
| 53 | args: { name string: value string, ... } | # Переменные для ARG Dockerfile-инструкций (подобно docker build --build-arg) |
| 54 | addHost: [ string, ... ] | # Установить связь host-to-IP (host:ip) (подобно docker build --add-host) |
| 55 | network: string | # Сетевой режим для инструкций RUN во время сборки (подобно docker build --network) |
| 56 | ssh: string | # Сокет агента SSH или ключи для сборки (подобно docker build --ssh) (DEPRECATED). Подробнее здесь |
| 57 | secrets: | # Секреты, используемые при сборке образа. В одном экземпляре можно использовать только одну из следующих опций: env, src или value. Подробнее здесь |
| 58 | - id: string | # Уникальный идентификатор секрета (обязателен только для секретов типа value) |
| 59 | env: string | # Секрет из переменной окружения |
| 60 | src: string | # Секрет из файла по указанному пути |
| 61 | value: string | # Произвольное строковое значение |
| 62 | dependencies: | # Образы-зависимости для текущего образа |
| ... | ||
| 63 | - from: string | # Имя зависимого образа, который должен быть собран до сборки текущего образа |
| 64 | image: string | # Имя зависимого образа, который должен быть собран до сборки текущего образа (DEPRECATED, используйте from) |
| 65 | imports: | # Определить аргументы для импорта информации о зависимом образе в текущий образ используя Dockerfile build-args (опционально) |
| 66 | - type: string | # Тип импортируемой информации об образе: ImageName, ImageDigest, ImageRepo или ImageTag |
| 67 | targetBuildArg: string | # Имя аргумента (Dockerfile build-args), который будет содержать указанный тип информации об образе |
| 68 | imageSpec: | # Конфигурация образа согласно OCI спецификации. Подробнее здесь |
| 69 | author: string | # Автор образа |
| 70 | clearHistory: bool | # Удалить всю историю сборки образа |
| 71 | config: | # Общая конфигурация образа |
| ... | ||
| 72 | cmd: [string, ...] | # Установить CMD. Подробнее здесь |
| 73 | entrypoint: [string, ...] | # Установить ENTRYPOINT. Подробнее здесь |
| 74 | env: { name string: value string, ... } | # Список переменных окружения для добавления. Подробнее здесь |
| 75 | expose: [string, ...] | # Установить открытые порты. Подробнее здесь |
| 76 | healthcheck: { test: [string, ...], interval: string, retries: int } | # Конфигурация проверки состояния. Интервалы в секундах.. Подробнее здесь |
| 77 | labels: { name string: value string, ... } | # Список лейблов для добавления |
| 78 | stopSignal: string | # Установить STOPSIGNAL. Подробнее здесь |
| 79 | user: string | # Установить USER. Подробнее здесь |
| 80 | volumes: [string, ...] | # Список томов для добавления. Подробнее здесь |
| 81 | workingDir: string | # Установить WORKDIR. Подробнее здесь |
| 82 | removeEnv: [ string || /REGEXP/, ... ] | # Список переменных окружения для удаления |
| 83 | removeLabels: [ string || /REGEXP/, ... ] | # Список лейблов для удаления |
| 84 | removeVolumes: [string, ...] | # Список томов для удаления |
| 85 | keepEssentialWerfLabels: bool | # Не удалять необходимые для штатной работы werf лейблы |
| 86 | clearCmd: bool | # Очистить CMD |
| 87 | clearEntrypoint: bool | # Очистить ENTRYPOINT |
| 88 | clearUser: bool | # Очистить USER |
| 89 | clearWorkingDir: bool | # Очистить WORKDIR |
| 90 | --- | # Секция Stapel image: может использоваться произвольное количество секций |
| ... | ||
| 91 | image: string || [ string, ... ] ! | # Одно или несколько уникальных имён для образа |
| 92 | final: bool |
#
Пометить образ как финальный (значение по умолчанию true). Подробнее здесь
|
| 93 | cacheVersion: string | # Версия кеша |
| 94 | platform: [ string, ... ] | # Список целевых платформ для данного образа (например ['linux/amd64', 'linux/arm64', 'linux/arm/v8']) |
| 95 | from: string | # Базовый образ: другой образ из `werf.yaml` (например, `backend`) или внешний образ с тегом/дайджестом (например, `nginx:1.25`, `nginx@sha256:...`).. Подробнее здесь |
| 96 | fromLatest: bool | # Использование актуального базового образа (без кеширования). Подробнее здесь |
| 97 | fromCacheVersion: string | # Версия кеша. Подробнее здесь |
| 98 | git: | # Набор директив для добавления исходных файлов из git-репозиториев (как репозитория проекта, так и любого другого). Подробнее здесь |
| ... | ||
| 99 | - url: string | # Адрес git-репозитория. Подробнее здесь |
| 100 | basicAuth: string | # Basic аутентификация для удаленного репозитория |
| 101 | - username: string | # Имя пользователя |
| 102 | password: string | # Источник пароля |
| 103 | - env: string | # Переменная окружения |
| 104 | src: string | # Путь к файлу |
| 105 | value: string | # Произвольное строковое значение |
| 106 | branch: string | # Имя ветки. Подробнее здесь |
| 107 | commit: string | # Коммит |
| 108 | tag: string | # Имя тега |
| 109 | add: string | # Исходный путь в репозитории. Подробнее здесь |
| 110 | to: string | # Путь назначения в образе. Подробнее здесь |
| 111 | owner: string | # Имя или UID владельца. Подробнее здесь |
| 112 | group: string | # Имя или GID группы. Подробнее здесь |
| 113 | includePaths: [ glob, ... ] | # Глобы добавления. Подробнее здесь |
| 114 | excludePaths: [ glob, ... ] | # Глобы исключения. Подробнее здесь |
| 115 | stageDependencies: | # Настройка перевыполнения сборочных инструкций при изменениях определённых файлов в репозитории. Подробнее здесь |
| 116 | install: [ glob, ... ] | # Глобы стадии install |
| 117 | beforeSetup: [ glob, ... ] | # Глобы стадии beforeSetup |
| 118 | setup: [ glob, ... ] | # Глобы стадии setup |
| 119 | secrets: | # Секреты, используемые при сборке образа. В одном экземпляре можно использовать только одну из следующих опций: env, src или value. Подробнее здесь |
| 120 | - id: string | # Уникальный идентификатор секрета (обязателен только для секретов типа value) |
| 121 | env: string | # Секрет из переменной окружения |
| 122 | src: string | # Секрет из файла по указанному пути |
| 123 | value: string | # Произвольное строковое значение |
| 124 | shell: | # Shell сборочные инструкции. Подробнее здесь |
| ... | ||
| 125 | beforeInstall: [ string, ... ] | # Команды для стадии beforeInstall. Подробнее здесь |
| 126 | install: [ string, ... ] | # Команды для стадии install. Подробнее здесь |
| 127 | beforeSetup: [ string, ... ] | # Команды для стадии beforeSetup. Подробнее здесь |
| 128 | setup: [ string, ... ] | # Команды для стадии setup. Подробнее здесь |
| 129 | cacheVersion: string | # Общая версия кеша. Подробнее здесь |
| 130 | beforeInstallCacheVersion: string | # Версия кеша для стадии beforeInstall. Подробнее здесь |
| 131 | installCacheVersion: string | # Версия кеша для стадии install. Подробнее здесь |
| 132 | beforeSetupCacheVersion: string | # Версия кеша для стадии beforeSetup. Подробнее здесь |
| 133 | setupCacheVersion: string | # Версия кеша для стадии setup. Подробнее здесь |
| 134 | imageSpec: | # Конфигурация образа согласно OCI спецификации. Подробнее здесь |
| 135 | author: string | # Автор образа |
| 136 | clearHistory: bool | # Удалить всю историю сборки образа |
| 137 | config: | # Общая конфигурация образа |
| ... | ||
| 138 | cmd: [string, ...] | # Установить CMD. Подробнее здесь |
| 139 | entrypoint: [string, ...] | # Установить ENTRYPOINT. Подробнее здесь |
| 140 | env: { name string: value string, ... } | # Список переменных окружения для добавления. Подробнее здесь |
| 141 | expose: [string, ...] | # Установить открытые порты. Подробнее здесь |
| 142 | healthcheck: { test: [string, ...], interval: string, retries: int } | # Конфигурация проверки состояния. Интервалы в секундах.. Подробнее здесь |
| 143 | labels: { name string: value string, ... } | # Список лейблов для добавления |
| 144 | stopSignal: string | # Установить STOPSIGNAL. Подробнее здесь |
| 145 | user: string | # Установить USER. Подробнее здесь |
| 146 | volumes: [string, ...] | # Список томов для добавления. Подробнее здесь |
| 147 | workingDir: string | # Установить WORKDIR. Подробнее здесь |
| 148 | removeEnv: [ string || /REGEXP/, ... ] | # Список переменных окружения для удаления |
| 149 | removeLabels: [ string || /REGEXP/, ... ] | # Список лейблов для удаления |
| 150 | removeVolumes: [string, ...] | # Список томов для удаления |
| 151 | keepEssentialWerfLabels: bool | # Не удалять необходимые для штатной работы werf лейблы |
| 152 | clearCmd: bool | # Очистить CMD |
| 153 | clearEntrypoint: bool | # Очистить ENTRYPOINT |
| 154 | clearUser: bool | # Очистить USER |
| 155 | clearWorkingDir: bool | # Очистить WORKDIR |
| 156 | mount: | # Точки монтирования. Подробнее здесь |
| ... | ||
| 157 | - from: tmp_dir || build_dir | # Имя служебной директории |
| 158 | fromPath: string | # Абсолютный или относительный путь до произвольного файла на хосте |
| 159 | to: string | # Абсолютный путь в образе |
| 160 | import: | # Импортирование из образов. Подробнее здесь |
| ... | ||
| 161 | - from: string | # Исходный образ для копирования файлов: другой образ из `werf.yaml` (например, `backend`) или внешний образ с тегом/дайджестом (например, `nginx:1.25`, `nginx@sha256:...`). |
| 162 | before: string | # Выбор стадии импортирования файлов при сборке, до стадии install или setup |
| 163 | after: string | # Выбор стадии импортирования файлов при сборке, после стадии install или setup |
| 164 | add: string | # Абсолютный путь до файла или директории в выбранном образе |
| 165 | to: string | # Абсолютный путь в конечном образе. По умолчанию соответствует пути add |
| 166 | owner: string | # Имя или UID владельца |
| 167 | group: string | # Имя или GID группы |
| 168 | includePaths: [ glob, ... ] | # Глобы добавления |
| 169 | excludePaths: [ glob, ... ] | # Глобы исключения |
| 170 | dependencies: | # Образы-зависимости для текущего образа |
| ... | ||
| 171 | - from: string | # Имя зависимого образа, который должен быть собран до сборки текущего образа |
| 172 | image: string | # Имя зависимого образа, который должен быть собран до сборки текущего образа (DEPRECATED, используйте from) |
| 173 | before: string | # Выбор стадии перед которой должна быть импортирована информация об образе (требуется указать install или setup). Указанные переменные окружения будут доступны в пользовательских стадиях после указанной данной директивой стадии. |
| 174 | after: string | # Выбор стадии после которой должна быть импортирована информация об образе (требуется указать install или setup). Указанные переменные окружения будут доступны в пользовательских стадиях после указанной данной директивой стадии. |
| 175 | imports: | # Определить аргументы для импорта информации о зависимом образе в текущий образ используя переменные окружения (опционально) |
| 176 | - type: string | # Тип импортируемой информации об образе: ImageName, ImageDigest, ImageRepo или ImageTag |
| 177 | targetEnv: string | # Имя переменной окружения, которая будет содержать указанный тип информации об образе |
JSON Schema
Формат werf.yaml опубликован в виде JSON Schema по адресу https://werf.io/docs/v3/schemas/werf.json. Редакторы с поддержкой JSON Schema для YAML используют её для автодополнения, подсказок по директивам и валидации.
В VS Code с расширением YAML добавьте в .vscode/settings.json:
{
"yaml.schemas": {
"https://werf.io/docs/v3/schemas/werf.json": ["werf.yaml", "werf.yml"]
}
}
Либо укажите схему в самом файле:
# yaml-language-server: $schema=https://werf.io/docs/v3/schemas/werf.json
werf.yaml перед разбором рендерится как Go-шаблон, поэтому схема описывает уже отрендеренный YAML. Редактор валидирует файл только там, где он является корректным YAML до рендеринга; участки с шаблонными конструкциями редактор пропускает или помечает как синтаксические ошибки сам, вне схемы.