Обзор проекта и структура файлов корневого каталога
При запуске командыtenderly actions init Tenderly CLI создаст каталог actions root вместе с необходимыми файлами. По умолчанию каталог actions root называется actions.
Однако вы можете указать другое имя во время инициализации. После инициализации имя корневого каталога всё ещё можно скорректировать, изменив имя папки и поле sources в файле tenderly.yaml.
Пример структуры проекта Web3 Actions на TypeScript:
example
actions/example.ts: по умолчанию этот файл содержит все Web3 Actions.tenderly.yaml: это файл конфигурации, задающий настройки для всех Web3 Actions в проектеtenderly-schema.json: автоматически сгенерированная JSON Schema, обеспечивающая валидацию в IDE и автодополнение дляtenderly.yaml, не редактируйтеtenderly-schema.jsonвручную
Структура файла tenderly.yaml
Файлtenderly.yaml содержит конфигурации и настройки для проекта Tenderly и всех Web3 Actions.
Для целей этого руководства завершённый пример файла tenderly.yaml выглядит так:
example.yaml
Поле
$schema автоматически добавляется командой tenderly actions init и указывает на сгенерированный
файл tenderly-schema.json. IDE, поддерживающие JSON Schema (VS Code, JetBrains), используют его для предоставления
автодополнения и inline-валидации при редактировании tenderly.yaml. Файл схемы также
перегенерируется при каждом запуске tenderly actions init. Добавьте tenderly-schema.json в
.gitignore, если вы предпочитаете не коммитить его.tenderly.yaml содержит два основных раздела:
- Общая конфигурация: раздел, содержащий имя аккаунта и проекта, с которыми связан Web3 Action.
- Конфигурация Web3 Actions: раздел, содержащий конфигурации самого Web3 Action, по сути информирующий Tenderly о том, когда его нужно запускать.
Общая конфигурация
Раздел общей конфигурации включает следующие пары ключ-значение:example.yaml
account_id: ваше имя пользователяproject_slug: slug проекта, связанного с Web3 Action (опционально, можно оставить пустым)
Конфигурация Web3 Actions
Объектactions — это место, где вы начинаете определять свои Web3 Actions, включая настройки проекта, такие как runtime, расположение исходников и объявление самого Web3 Action.
example.yaml
Указание проекта
Начните с указания составного ключа, уникально идентифицирующего проект в Tenderly.username/project-slug: имя пользователя и slug проекта для проектов, принадлежащих индивидуальным разработчикамorg-name/project-slug: имя организации и slug проекта, если ваш проект принадлежит организации
Можно использовать один и тот же проект Web3 Actions для нескольких проектов, к которым у вас есть доступ в
Tenderly Dashboard.
Настройка runtime
Далее необходимо указать версию runtime и каталог, содержащий код вашего Web3 Action. Эти данные используются Tenderly CLI для упаковки и развёртывания вашего кода в runtime Web3 Actions на инфраструктуре Tenderly. Следующие настройки обязательны:runtime: версия runtime. В настоящее время мы поддерживаем v2, что соответствует Node 20.sources: расположение исходных файлов Web3 Action. Значение должно быть путём к каталогу actions root относительно папки, содержащей файлtenderly.yaml. Оно должно совпадать с путём, указанным при выполнении команды init.
web3-actions.
example
Если вы изменяете значение
sources, каталог должен существовать по указанному пути, относительно
actions root, и должен содержать ваши исходные файлы с функциями Web3 Action.Определение настроек Web3 Actions
Отдельные Web3 Actions объявляются в объектеspecs. Вы можете объявлять несколько Web3 Actions в одном файле tenderly.yaml.
Каждый Web3 Action должен начинаться с ключа, представляющего имя action (bestActionEver). Имя action должно быть уникальным на уровне проекта и начинаться с буквы, за которой следуют буквы, цифры, дефисы или подчёркивания (шаблон: ^[a-zA-Z][a-zA-Z0-9_-]*$). Этот ключ определяет, как развёрнутый Web3 Action будет назван и представлен в Tenderly Dashboard.
Ключ description также должен присутствовать. Описание обычно представляет собой одно-два предложения, описывающих, что делает Web3 Action.
example.yaml
function для связи с функцией action, которую вы хотите запускать. Исходный код Web3 Actions может быть разбит на несколько файлов или вложен в пользовательскую структуру каталогов. Файл tenderly.yaml позволяет удобно ссылаться на них.
Например, функция bestActionEver, расположенная в actions/very/organized/file.ts, будет упоминаться в yaml так:
example.yaml
bestActionEver будет запускаться каждые 10 заминированных блоков в Rinkeby.
example.yaml