Esta ação do GitHub permite validar as operações usadas em um aplicativo cliente em relação a um esquema grafql. A ação verificará todos os documentos de operação em um diretório especificado em seu projeto para garantir que as consultas/mutações e suas seleções de campo possam ser executadas com segurança contra um determinado esquema GraphQL.
Veja esta ação em uso aqui: MandiWise/GraphQL-Operação-Validação-Demo
Pode não ser viável escrever e manter testes para todas as operações do GraphQL em um aplicativo cliente, para que essa ação possa fornecer uma medida de garantia de que elas serão válidas quando executadas. Ele funciona enviando uma consulta introspecção para um esquema, pesquisando um diretório especificado em seu projeto para todos os documentos de operação do GraphQL (em arquivos .graphql ou .js ) e validando essas operações em relação ao resultado da consulta introspecção.
Sob o capô, este projeto usa ferramentas grafql.js e grafql para carregar o esquema, obter os documentos e validar as operações.
Importante! Como é necessária uma consulta de introspecção para obter o esquema, a introspecção deve ser ativada para a API do GraphQL contra a qual você deseja validar suas operações. Por esse motivo, a ação provavelmente é mais adequada para uso com uma API Public GraphQL, em seu ambiente de desenvolvimento local ou quando o arquivo de esquema é co-localizado com o aplicativo cliente.
Você primeiro precisará criar um arquivo YAML para descrever o fluxo de trabalho em seu projeto (por exemplo .github/workflows/operations.yml ).
Em seguida, adicione um trabalho ao arquivo que usa o pacote de ações/checkout para verificar os arquivos do seu repositório (adicionando -os ao $GITHUB_WORKSPACE ). Em seguida, você pode executar a ação de validação nos arquivos verificados como a segunda etapa do trabalho.
Esta ação suporta as seguintes entradas:
base_dir (requerido): o diretório base para pesquisar operações (em relação ao diretório de repositório)schema_location (requerido): um URL do ponto de extremidade ou caminho de um arquivo .json / .graphql (em relação ao diretório repositório)excluded_paths : Caminhos de diretório/arquivo separados por vírgula no base_dir para excluir (em relação ao base_dir )token : Token para usar com um cabeçalho de autorização (apenas o esquema do portador é suportado) O exemplo a seguir ilustra como você validar as operações do GraphQL sempre que empurrar ou fazer uma solicitação de tração para a filial main de um repositório. A ação aponta para um arquivo de esquema local no repositório em swapi/schema.graphql , procura operações no diretório swapi e exclui o arquivo swapi/schema.graphql ao pesquisar documentos de operações (porque isso resultaria em um erro):
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 No mínimo, você deve especificar o ${{ github.workspace }} como sua entrada base_dir , mas você pode restringir a pesquisa a um subdiretório específico no projeto de que todas as operações estão aninhadas abaixo. O diretório node_modules é automaticamente ignorado ao pesquisar operações, para que você não precise incluí -lo na entrada opcional excluded_paths .
Agora, quando você empurra para a filial main ou um PR é enviado, você pode verificar a guia Ações do seu repositório no Github para ver o resultado. Se alguma operação for inválida, elas serão observadas no log.
Se você precisar validar suas operações contra um esquema que requer um token em um cabeçalho Authorization , poderá adicioná -lo como um valor de entrada 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 }} O cabeçalho será enviado usando apenas o esquema Authorization: Bearer token... Consulte a documentação do Github sobre o uso de segredos criptografados em um fluxo de trabalho.
Deseja validar suas operações em seu ambiente de desenvolvimento ou sem empurrar para o seu repositório? Sem problemas!
Você pode usar o ACT para executar esta ação localmente.
Instale as dependências:
npm iExecute os testes:
npm testPacote para distribuição:
npm run prepareEste projeto foi originalmente baseado em ações/ação javascript.
Os scripts e documentação neste projeto são divulgados sob a licença do MIT.