INTEGRITY Документация

Команды Wrangler

Используйте wrangler flagship чтобы управлять приложениями Flagship и флагами функций из командной строки. Каждая wrangler flagship flags команда принимает идентификатор приложения в качестве первого аргумента. Большинство подкоманд затем принимают ключ флага, например wrangler flagship flags get <APP_ID> <KEY>. Команды в виде списков, такие как wrangler flagship flags list <APP_ID>, принимают только идентификатор приложения.

Перед началом работы

Аутентификация Wrangler

wrangler flagship обращается к API Cloudflare. Перед выполнением команд авторизуйте Wrangler:

wrangler login

Для автоматизации задайте CLOUDFLARE_API_TOKEN к API-токен с соответствующими разрешениями Flagship.

Разрешение Используйте это для
flagship:read Получение списка приложений, получение приложения, получение списка флагов, просмотр флагов, оценка флагов и просмотр истории изменений.
flagship:write Создание приложений, обновление приложений, удаление приложений, создание флагов, обновление флагов, изменение значений по умолчанию, развёртываний, сплитов, включение и отключение, а также удаление флагов.

Большинство команд, изменяющих существующий флаг, сначала считывают текущий флаг, а затем записывают обновлённое определение. Для таких сценариев предоставьте оба flagship:read и flagship:write.

Привяжите Flagship к своему Worker

Добавьте привязку Flagship в проект Worker, чтобы код Worker мог оценивать флаги с низкой задержкой во время выполнения:

{
  "$schema": "./node_modules/wrangler/config-schema.json",
  "flagship": [
    {
      "binding": "FLAGS",
      "app_id": "<APP_ID>"
    }
  ]
}
[[flagship]]
binding = "FLAGS"
app_id = "<APP_ID>"

быстрый старт

Создайте булев флаг, оцените его для пользователя и отключите как аварийный выключатель:

# With no variations, Wrangler creates on=true, off=false,
# and serves off by default.
wrangler flagship flags create <APP_ID> new-checkout

# Evaluate the flag for a user.
wrangler flagship flags evaluate <APP_ID> new-checkout --targeting-key user-42

# Disable the flag instantly. Disabled flags always serve their default variation.
wrangler flagship flags disable <APP_ID> new-checkout

Управлять приложениями

Приложения объединяют связанные флаги. Распространённый подход: одно приложение на сервис, Worker или продуктовую область.

Задача Команда
Создать приложение wrangler flagship apps create <NAME>
Список приложений wrangler flagship apps list
Получение приложения wrangler flagship apps get <APP_ID>
Переименование приложения wrangler flagship apps update <APP_ID> --name <NAME>
Удаление приложения wrangler flagship apps delete <APP_ID>

wrangler flagship apps ls является псевдонимом для apps list. wrangler flagship apps rm является псевдонимом для apps delete.

wrangler flagship apps list автоматически обрабатывает постраничную загрузку и отображает все приложения в аккаунте.

При создании приложения возвращается его идентификатор и отображается фрагмент привязки для добавления в конфигурацию Wrangler:

wrangler flagship apps create checkout-service

Чтобы добавить новое приложение в ваш wrangler.json или wrangler.jsonc файл как привязку Worker, передайте --binding:

wrangler flagship apps create checkout-service --binding FLAGS

Wrangler также поддерживает --update-config чтобы обновить конфигурацию JSON или JSONC после запроса имени привязки.

Для конфигурационных файлов не в формате JSON Wrangler выводит фрагмент привязки, но не редактирует файл автоматически.

Когда --json используется, apps create выводит созданное приложение в формате JSON и не запрашивает и не обновляет конфигурацию.

В скриптах получайте идентификатор приложения из вывода JSON:

APP_ID=$(wrangler flagship apps create checkout-service --json | jq -r '.id')

При удалении приложения удаляются все его флаги и история изменений. Если Worker всё ещё ссылается на приложение через привязку Flagship, API отклоняет удаление.

Используйте --force или -y чтобы пропустить запрос подтверждения удаления. Если вы также используете --json, необходимо передать --force чтобы запрос подтверждения не мог появиться в выводе JSON.

wrangler flagship apps delete <APP_ID> --force

Чтобы удалить несколько приложений, передайте несколько ID приложений:

wrangler flagship apps delete <APP_ID_1> <APP_ID_2> <APP_ID_3> --force

Создание флагов

Ключи флагов уникальны в рамках приложения. Используйте стабильные ключи, описывающие управляемое поведение, например new-checkout, pricing-page-layout, или upload-limit.

Булевы флаги

Если вы не укажете варианты, Wrangler создаст булев флаг с on=true, off=false, а также off в качестве варианта по умолчанию.

wrangler flagship flags create <APP_ID> new-checkout

Явные вариации

Используйте --variation (-V) чтобы добавить каждый вариант как name=value. Используйте --default чтобы выбрать запасной вариант.

# String flag.
wrangler flagship flags create <APP_ID> checkout-flow \
	-V v1=old-checkout \
	-V v2=new-checkout \
	--default v1 \
	--type string

# Number flag.
wrangler flagship flags create <APP_ID> upload-limit \
	-V free=10 \
	-V pro=100 \
	-V enterprise=1000 \
	--default free \
	--type number

# JSON flag.
wrangler flagship flags create <APP_ID> theme-config \
	-V 'light={"bg":"#ffffff","fg":"#111111"}' \
	-V 'dark={"bg":"#111111","fg":"#ffffff"}' \
	--default light \
	--type json

Поддерживаемые типы значений: boolean, string, number, а также json. Если --type не указан, Wrangler самостоятельно определяет скалярный тип каждого значения.

Все варианты флага должны использовать один и тот же тип значения. Wrangler отклоняет флаг, если его варианты приводят к разным типам, например один boolean и один number, ещё до отправки запроса. Передайте --type явно, чтобы привести все варианты к одному типу.

Используйте --description (-d) чтобы задокументировать назначение флага:

wrangler flagship flags create <APP_ID> checkout-flow \
	-V v1=old-checkout \
	-V v2=new-checkout \
	--default v1 \
	--type string \
	--description "Controls which checkout experience is served"

Ключи флагов и названия вариаций могут содержать буквы, цифры, дефисы и символы подчёркивания. Ключи должны оставаться стабильными, поскольку код приложения обращается к флагам по ключу.

Отключённые флаги

Используйте --disabled чтобы создать флаг, который предоставляет вариант по умолчанию, пока вы его не включите.

wrangler flagship flags create <APP_ID> coming-soon \
	-V on=true \
	-V off=false \
	--default off \
	--disabled

Таргетируйте пользователей с помощью правил

Правила таргетинга определяют, какой вариант показать для заданного контекста оценки. Передавайте правила с помощью --rule или --rule-json.

Синтаксис правил

Компактный --rule синтаксис использует сегменты, разделённые точкой с запятой:

serve=<VARIATION>; when=<CONDITIONS>; rollout=<PERCENT>%@<ATTRIBUTE>; priority=<NUMBER>
Segment Обязательный Описание
serve Да Вариация, которая выдается при срабатывании правила. Должна ссылаться на существующую вариацию.
when Нет Условия, сравниваемые с контекстом оценки. Если они не заданы, правило применяется к любому контексту.
rollout Нет Доля подходящего трафика, которая получает этот вариант. Атрибут отвечает за устойчивое распределение по бакетам.
priority Нет Порядок оценки. Меньшие числа выполняются первыми. Если значение не указано, Wrangler назначает приоритеты по порядку.
wrangler flagship flags create <APP_ID> premium-banner \
	-V on=true \
	-V off=false \
	--default off \
	--rule "serve=on; when=plan equals enterprise AND country in [US,CA]; rollout=25%@user_id"

Условия

Условия сравнивают атрибуты из контекста оценки со значениями правила. Компактный синтаксис поддерживает все Операторы Flagship:

--rule "serve=on; when=plan equals pro"
--rule "serve=on; when=country in [US,CA,UK]"
--rule "serve=off; when=email ends_with @example.com"
--rule "serve=strict; when=score less_than 20"

Используйте AND и OR чтобы объединить условия. AND имеет более высокий приоритет, чем OR.

# Both conditions must match.
--rule "serve=on; when=plan equals pro AND country equals US"

# Either condition can match.
--rule "serve=on; when=plan equals enterprise OR plan equals team"

# Equivalent to: (plan=pro AND country=US) OR plan=enterprise.
--rule "serve=on; when=plan equals pro AND country equals US OR plan equals enterprise"

AND и OR зарезервированы как логические операторы, если встречаются вне значений в кавычках или списков. Заключайте значения в одинарные или двойные кавычки, если они содержат зарезервированные слова или разделители, например AND, OR, ;, или ,:

--rule 'serve=on; when=title equals "WAR AND PEACE" OR title equals "tom; jerry"'
--rule 'serve=on; when=country in ["US","CA"]'

Для in и not_in, передайте список в квадратных скобках. Wrangler отклоняет некорректные списки, пустые элементы списка, незакрытые кавычки и несбалансированные скобки до отправки запроса.

Используйте --rule-json для глубоко вложенных логических групп или если вы предпочитаете передавать структуру правила API напрямую. Wrangler проверяет --rule-json на соответствие схеме правил Flagship и отклоняет неизвестные или конфликтующие поля.

wrangler flagship flags create <APP_ID> beta-features \
	-V on=true \
	-V off=false \
	--default off \
	--rule-json '{"serve_variation":"on","conditions":[{"logical_operator":"OR","clauses":[{"attribute":"beta","operator":"equals","value":true},{"attribute":"plan","operator":"equals","value":"enterprise"}]}]}'

Несколько правил

Повторите --rule или --rule-json чтобы объявить несколько правил. Правила оцениваются в порядке приоритета. Побеждает первое подходящее правило.

wrangler flagship flags create <APP_ID> rate-limit-tier \
	-V strict=50 \
	-V normal=200 \
	-V relaxed=1000 \
	--default normal \
	--type number \
	--rule "serve=strict; when=score less_than 20" \
	--rule "serve=relaxed; when=score greater_than_or_equals 90"

Wrangler проверяет дублирующиеся приоритеты правил, повторяющиеся имена вариаций, некорректные списки, недопустимые числовые значения, такие как Infinity, и неизвестные имена вариантов перед отправкой запроса.

Просмотр флагов

Список флагов в приложении:

wrangler flagship flags list <APP_ID>

Команда list использует постраничный вывод. Используйте --limit и --cursor для ручной постраничной загрузки, или --all чтобы получить все страницы.

wrangler flagship flags list <APP_ID> --limit 50
wrangler flagship flags list <APP_ID> --cursor <CURSOR>
wrangler flagship flags list <APP_ID> --all

Просмотр полного определения флага:

wrangler flagship flags get <APP_ID> new-checkout

wrangler flagship flags ls является псевдонимом для flags list. wrangler flagship flags inspect является псевдонимом для flags get.

Обновление флагов

wrangler flagship flags update считывает текущий флаг, применяет ваши изменения и записывает полное определение флага обратно в API.

Обновление метаданных и вариаций

wrangler flagship flags update <APP_ID> new-checkout \
	--description "Redesigned checkout experience"

wrangler flagship flags update <APP_ID> upload-limit \
	--set-variation team=500

wrangler flagship flags update <APP_ID> upload-limit \
	--remove-variation team

Чтобы добавить вариант к существующему флагу, задайте имя и значение новой вариации:

wrangler flagship flags update <APP_ID> checkout-flow \
	--set-variation experiment=new-checkout-v2

Чтобы очистить его, передайте пустое описание:

wrangler flagship flags update <APP_ID> new-checkout --description ""

Когда вы добавляете или заменяете вариации у существующего флага, используйте --type если Wrangler должен привести новые значения к определенному типу:

wrangler flagship flags update <APP_ID> upload-limit \
	--type number \
	--set-variation team=500

Wrangler проверяет, что итоговый набор вариаций сохраняет единый тип значений и что вариация по умолчанию и правила таргетинга по-прежнему ссылаются на существующие вариации.

Флаг также можно включить или отключить через flags update, хотя flags enable и flags disable короче для сценариев аварийного отключения:

wrangler flagship flags update <APP_ID> new-checkout --disable
wrangler flagship flags update <APP_ID> new-checkout --enable

Изменение варианта по умолчанию

wrangler flagship flags set <APP_ID> checkout-flow --variation v2

Используйте --clear-rules если новое значение по умолчанию должно показываться всем.

wrangler flagship flags set <APP_ID> checkout-flow --variation v2 --clear-rules

Замена, добавление или очистка всех правил

Используйте --rule или --rule-json чтобы заменить весь набор правил:

wrangler flagship flags update <APP_ID> premium-banner \
	--rule "serve=on; when=plan equals pro AND country not_in [CN,RU]"

Используйте --add-rule или --add-rule-json чтобы добавить правила, не изменяя существующие:

wrangler flagship flags update <APP_ID> premium-banner \
	--add-rule "serve=off; when=account_age less_than 7"

wrangler flagship flags update <APP_ID> premium-banner \
	--add-rule-json '{"serve_variation":"off","conditions":[{"attribute":"country","operator":"in","value":["CN","RU"]}]}'

Удаление всех правил:

wrangler flagship flags update <APP_ID> premium-banner --clear-rules

Получить список правил

Используйте rules list чтобы увидеть приоритеты, на которые можно ссылаться в командах для конкретных правил:

wrangler flagship flags rules list <APP_ID> premium-banner

Изменение порядка правил

Flagship оценивает правила по возрастанию priority; побеждает первое подходящее правило. Используйте rules reorder чтобы изменить порядок существующих правил, не переписывая все условия.

Передайте существующие приоритеты в новом порядке. Wrangler перенумерует их в 1..n в этом порядке:

wrangler flagship flags rules reorder <APP_ID> rate-limit-tier --order 2,1

Если существующие приоритеты были 1=strict и 2=relaxed, это делает relaxed приоритет 1 и strict приоритет 2.

Изменение одного правила

Используйте rules update чтобы изменить одно правило по приоритету, сохранив остальную часть набора правил.

Изменение только процента развёртывания:

wrangler flagship flags rules update <APP_ID> premium-banner \
	--priority 1 \
	--rollout 50%@user_id

Изменение варианта, который возвращает правило:

wrangler flagship flags rules update <APP_ID> premium-banner \
	--priority 1 \
	--serve off

Изменение условий правила:

wrangler flagship flags rules update <APP_ID> premium-banner \
	--priority 1 \
	--when "plan equals enterprise OR plan equals team"

Удалите условия из правила, чтобы оно соответствовало любому контексту оценки:

wrangler flagship flags rules update <APP_ID> premium-banner \
	--priority 1 \
	--clear-conditions

Удаление развёртывания из правила:

wrangler flagship flags rules update <APP_ID> premium-banner \
	--priority 1 \
	--clear-rollout

Удаление одного правила

Используйте rules delete чтобы удалить одно правило по приоритету:

wrangler flagship flags rules delete <APP_ID> premium-banner --priority 2

После удаления правила Wrangler перенумеровывает оставшиеся правила, чтобы приоритеты оставались непрерывными.

Выполняйте релизы и управляйте аварийными выключателями

Включение и отключение

Отключение флага работает как мгновенный аварийный выключатель. Отключённый флаг игнорирует правила таргетинга и возвращает вариацию по умолчанию.

wrangler flagship flags disable <APP_ID> new-checkout
wrangler flagship flags enable <APP_ID> new-checkout

Чтобы включить или отключить несколько флагов в приложении, укажите ID приложения и несколько ключей:

wrangler flagship flags disable <APP_ID> new-checkout dark-mode premium-banner
wrangler flagship flags enable <APP_ID> new-checkout dark-mode premium-banner

Развернуть один вариант

Используйте rollout чтобы предоставлять один вариант определённому проценту трафика.

wrangler flagship flags rollout <APP_ID> new-checkout \
	--to on \
	--percentage 25 \
	--by user_id

Используйте --from-variation (псевдоним --from) чтобы выбрать запасной вариант для оставшегося трафика. Процент постепенного развёртывания 0 удаляет правило постепенного развёртывания и оставляет текущий вариант флага по умолчанию без изменений.

rollout отправляет указанный вами процент напрямую в Flagship. Например, --percentage 25 --to on предоставляет on вариант к 25% трафика, прошедшего bucketing. Оставшийся трафик переходит к варианту флага по умолчанию.

Распределяйте трафик между вариантами

Используйте split для A/B тестов или распределения трафика между несколькими вариантами. Wrangler преобразует веса в накопительные пороги постепенного релиза.

wrangler flagship flags split <APP_ID> checkout-flow \
	--weight v1=80 \
	--weight v2=20 \
	--by user_id

-w является псевдонимом для --weight. Каждый вариант можно взвесить только один раз, а веса должны быть конечными неотрицательными числами.

Веса задаются относительно друг друга. Wrangler суммирует веса, переводит каждый из них в процент от общей суммы и отправляет в Flagship накопленные пороговые значения. Например, --weight v1=80 --weight v2=20 отправляет два сгенерированных правила: одно для v1 с процентом постепенного развёртывания 80, и одно для v2 с процентом постепенного развёртывания 100. Это создаёт диапазоны бакетов 0-80 для v1 и 80-100 для v2.

При трех весах, --weight a=50 --weight b=30 --weight c=20 превращается в накопительные пороги 50, 80, а также 100. Варианты с нулевым весом пропускаются.

Используйте --default с split чтобы выбрать запасной вариант, когда bucketing невозможен:

wrangler flagship flags split <APP_ID> checkout-flow \
	--weight v1=80 \
	--weight v2=20 \
	--default v1 \
	--by user_id
wrangler flagship flags rollout <APP_ID> new-checkout --to on --percentage 100 --force

Оценка флагов

Оцените флаг из командной строки, чтобы проверить, какое значение получает конкретный контекст.

wrangler flagship flags evaluate <APP_ID> new-checkout

wrangler flagship flags evaluate <APP_ID> new-checkout \
	--targeting-key user-42

wrangler flagship flags evaluate <APP_ID> premium-banner \
	--context plan=enterprise \
	--context country=US \
	--targeting-key user-99

Используйте --targeting-key для стабильной группировки при процентном постепенном релизе. Передавайте каждый атрибут контекста с --context name=value. wrangler flagship flags eval является псевдонимом для flags evaluate.

--context можно указывать несколько раз. --ctx и -C являются псевдонимами:

wrangler flagship flags evaluate <APP_ID> premium-banner \
	-C plan=enterprise \
	-C country=US \
	--targeting-key user-99

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

Результат оценки включает:

Поле Описание
value Значение флага, возвращённое для данного контекста.
variant Вариация, выбранная для данного контекста.
reason Почему было возвращено это значение: TARGETING_MATCH, DEFAULT, DISABLED, или SPLIT.

Аудит изменений

Flagship регистрирует события создания, изменения и удаления для каждого флага. История изменений отображается от новых к старым:

wrangler flagship flags changelog <APP_ID> new-checkout

Используйте элементы управления пагинацией для длинной истории:

wrangler flagship flags changelog <APP_ID> new-checkout --limit 10
wrangler flagship flags changelog <APP_ID> new-checkout --cursor <CURSOR>
wrangler flagship flags changelog <APP_ID> new-checkout --all

wrangler flagship flags history является псевдонимом для flags changelog.

Удаление флагов

wrangler flagship flags delete <APP_ID> coming-soon

Используйте --force или -y чтобы пропустить запрос подтверждения. Если вы также используете --json, необходимо передать --force чтобы запрос подтверждения не мог появиться в выводе JSON.

wrangler flagship flags delete <APP_ID> coming-soon --force

wrangler flagship flags rm является псевдонимом для flags delete.

Чтобы удалить несколько флагов, укажите ID приложения и несколько ключей:

wrangler flagship flags delete <APP_ID> coming-soon old-checkout temporary-banner --force

Автоматизация с выводом в формате JSON

Каждый wrangler flagship команда принимает --json. Вывод в формате JSON отключает баннер Wrangler и предназначен для использования в скриптах.

Команды удаления требуют --force с --json чтобы сохранить корректный JSON в stdout. rollout и split также требуют --force с --json если они заменят существующие правила таргетинга с условиями.

Массовые команды, например flags delete, flags enable, а также flags disable, продолжайте обработку оставшихся флагов, если один флаг завершается ошибкой. В режиме JSON частичные сбои возвращают объект ошибки JSON с успешными results и для каждого флага failures.

Команды, которые могут обновлять wrangler.json или wrangler.jsonc, например apps create --binding, не запрашивайте и не обновляйте конфигурацию, если --json используется.

Создайте приложение, сохраните его идентификатор, затем создайте флаг:

APP_ID=$(wrangler flagship apps create checkout-service --json | jq -r '.id')

wrangler flagship flags create "$APP_ID" new-checkout --json

Удалите несколько приложений в цикле:

for app_id in <APP_ID_1> <APP_ID_2> <APP_ID_3>; do
	wrangler flagship apps delete "$app_id" --force
done

Либо укажите ID приложений напрямую:

wrangler flagship apps delete <APP_ID_1> <APP_ID_2> <APP_ID_3> --force

Справочник команд

Следующий справочник создан на основе Wrangler flagship определения команд.

flagship apps create

Создайте приложение Flagship

npx wrangler flagship apps create [NAME]

Глобальные флаги

flagship apps list

Получить список Flagship-приложений

npx wrangler flagship apps list

Глобальные флаги

flagship apps get

Получение приложения Flagship

npx wrangler flagship apps get [APP-ID]

Глобальные флаги

flagship apps update

Обновите приложение Flagship

npx wrangler flagship apps update [APP-ID]

Глобальные флаги

flagship apps delete

Удалить приложение Flagship

npx wrangler flagship apps delete [APP-ID]

Глобальные флаги

flagship flags create

Создайте флаг функции в приложении Flagship

npx wrangler flagship flags create [APP-ID] [KEY]

Глобальные флаги

flagship flags list

Список флагов функциональности в приложении Flagship

npx wrangler flagship flags list [APP-ID]

Глобальные флаги

flagship flags get

Получение флага функции из приложения Flagship

npx wrangler flagship flags get [APP-ID] [KEY]

Глобальные флаги

flagship flags update

Обновите feature flag в приложении Flagship

npx wrangler flagship flags update [APP-ID] [KEY]

Глобальные флаги

flagship flags set

Настройка варианта по умолчанию, выдаваемого feature flag

npx wrangler flagship flags set [APP-ID] [KEY]

Глобальные флаги

flagship flags rules list

Список правил таргетинга для флага функциональности

npx wrangler flagship flags rules list [APP-ID] [KEY]

Глобальные флаги

flagship flags rules update

Обновите одно правило таргетинга для feature flag

npx wrangler flagship flags rules update [APP-ID] [KEY]

Глобальные флаги

flagship flags rules delete

Удалить одно правило таргетинга из флага функции

npx wrangler flagship flags rules delete [APP-ID] [KEY]

Глобальные флаги

flagship flags rules reorder

Изменение порядка правил таргетинга для флага функции

npx wrangler flagship flags rules reorder [APP-ID] [KEY]

Глобальные флаги

flagship flags split

Разделяйте трафик между вариантами по процентному соотношению

npx wrangler flagship flags split [APP-ID] [KEY]

Глобальные флаги

flagship flags rollout

Разверните один вариант для процента трафика

npx wrangler flagship flags rollout [APP-ID] [KEY]

Глобальные флаги

flagship flags enable

Включите флаг функциональности

npx wrangler flagship flags enable [APP-ID] [KEY]

Глобальные флаги

flagship flags disable

Отключить флаг функции

npx wrangler flagship flags disable [APP-ID] [KEY]

Глобальные флаги

flagship flags evaluate

Оценка флага функции с дополнительным контекстом

npx wrangler flagship flags evaluate [APP-ID] [KEY]

Глобальные флаги

flagship flags delete

Удалить флаг функции из приложения Flagship

npx wrangler flagship flags delete [APP-ID] [KEY]

Глобальные флаги

flagship flags changelog

Показать журнал изменений для флага функции

npx wrangler flagship flags changelog [APP-ID] [KEY]

Глобальные флаги