Это действие GitHub позволяет проверить операции, используемые в клиентском приложении, против схемы GraphQL. Действие будет проверять все операционные документы в указанном каталоге в вашем проекте, чтобы гарантировать, что запросы/мутации и их выбор поля могут быть безопасно выполнены против данной схемы GraphQL.
Смотрите это действие, используемое здесь: Mandiwise/GraphQL-Voperation-Validation-Demo
Возможно, невозможно записать и поддерживать тесты для всех операций GraphQL в клиентском приложении, поэтому это действие может обеспечить меру гарантии того, что они будут действительны при выполнении. Он работает путем отправки запроса самоанализа в схему, поиска указанного каталога в вашем проекте для всех документов операции GraphQL (либо в файлах .graphql или .js ), и подтверждая эти операции в результате результата запроса самоанализа.
Под капотом этот проект использует инструменты GraphQL.JS и GraphQL для загрузки схемы, получения документов и проверки операций.
Важный! Поскольку для получения схемы требуется запрос самоанализа, интроспекция должно быть включено для API GraphQL, против которого вы хотите проверить свои операции. По этой причине действие, вероятно, лучше всего подходит для использования с общедоступным API GraphQL, в вашей местной среде разработки или когда файл схемы совместно с вашим клиентским приложением.
Сначала вам нужно будет создать файл YAML, чтобы описать рабочий процесс в вашем проекте (например, .github/workflows/operations.yml ).
Затем добавьте задание в файл, в котором используется пакет Desiting/Ocketout, чтобы проверить файлы вашего репозитория (добавление их в $GITHUB_WORKSPACE ). Затем вы можете запустить действие проверки на проверенных файлах в качестве второго шага задания.
Это действие поддерживает следующие входы:
base_dir (требуется): базовый каталог для поиска операций (относительно каталога репо)schema_location (требуется): URL -адрес конечной точки или путь файла .json / .graphql (относительно каталога репо)excluded_paths : пробелы в области каталога/файла base_dir разделенных в base_dirtoken : токен для использования с заголовком авторизации (поддерживается только схема носителя) В следующем примере показано, как вы будете проверять операции GraphQL всякий раз, когда вы нажимаете или делаете запрос на вытяжение в main ветвь репозитория. Действие указывает на локальный файл схемы в репозитории в swapi/schema.graphql , ищет операции в каталоге swapi и исключает файл swapi/schema.graphql при поиске операционных документов (потому что это приведет к ошибке):
name : Validate GraphQL Operations
on :
pull_request :
push :
branches :
- main
jobs :
operations :
runs-on : ubuntu-latest
steps :
- name : Checkout repo
uses : actions/checkout@v2
- name : Validate SWAPI operations
uses : mandiwise/graphql-operation-validation-action@v1
with :
schema_location : ${{ github.workspace }}/swapi/schema.graphql
base_dir : ${{ github.workspace }}/swapi
excluded_paths : schema.graphql Как минимум, вы должны указать ${{ github.workspace }} в качестве ввода base_dir , но вы можете сузить поиск до определенного подкаталерию в проекте, что все операции вложены ниже. Справочник node_modules автоматически игнорируется при поиске операций, поэтому вам не нужно включать его в необязательный ввод excluded_paths .
Теперь, когда вы подталкиваете к main ветви или PR отправляется, вы можете проверить вкладку «Действия» вашего репозитория на GitHub, чтобы увидеть результат. Если какие -либо операции недействительны, то они будут отмечены в журнале.
Если вам нужно проверить свои операции против схемы, которая требует токена в заголовке Authorization , то вы можете добавить ее в качестве входного значения token :
# ...
- name : Validate GitHub GraphQL API operations
uses : mandiwise/graphql-operation-validation-action@v1
with :
schema_location : https://api.github.com/graphql
base_dir : ${{ github.workspace }}/github
token : ${{ secrets.ACCESS_TOKEN }} Заголовок будет отправлен с использованием Authorization: Bearer token... только схема. Пожалуйста, смотрите документацию GitHub об использовании зашифрованных секретов в рабочем процессе.
Хотите проверить свою деятельность в вашей среде разработки или не настаивая на репозиторий? Без проблем!
Вы можете использовать ACT, чтобы запустить это действие локально.
Установите зависимости:
npm iЗапустите тесты:
npm testПакет для распространения:
npm run prepareЭтот проект первоначально был основан на действиях/JavaScript-Action.
Сценарии и документация в этом проекте выпускаются по лицензии MIT.