Esta acción de GitHub le permite validar las operaciones utilizadas en una aplicación cliente contra un esquema GRAPHQL. La acción verificará todos los documentos de operación en un directorio especificado en su proyecto para garantizar que las consultas/mutaciones y sus selecciones de campo puedan ejecutarse de manera segura contra un esquema GRAPHQL dado.
Consulte esta acción en uso aquí: Mandiwise/GraphQL-Operation-Validation-Demo
Es posible que no sea factible escribir y mantener pruebas para todas las operaciones GRAPHQL en una aplicación de cliente, por lo que esta acción puede proporcionar una medida de seguridad de que serán válidas cuando se ejecuten. Funciona enviando una consulta de introspección a un esquema, buscando un directorio especificado en su proyecto para todos los documentos de operación GRAPHQL (ya sea en archivos .graphql o .js ) y validando esas operaciones con el resultado de la consulta de introspección.
Bajo el capó, este proyecto utiliza GraphQL.JS y GraphQL Tools para cargar el esquema, obtener los documentos y validar las operaciones.
¡Importante! Debido a que se requiere una consulta de introspección para obtener el esquema, la introspección debe activarse para la API GraphQL con la que desea validar sus operaciones. Por esta razón, la acción probablemente sea más adecuada para su uso con una API Pública GraphQL, en su entorno de desarrollo local o cuando el archivo de esquema está ubicado con la aplicación de su cliente.
Primero deberá crear un archivo YAML para describir el flujo de trabajo en su proyecto (por ejemplo, .github/workflows/operations.yml ).
A continuación, agregue un trabajo al archivo que usa el paquete Acciones/Checkout para consultar los archivos de su repositorio (agregándolos a $GITHUB_WORKSPACE ). Luego puede ejecutar la acción de validación en los archivos verificados como el segundo paso del trabajo.
Esta acción admite las siguientes entradas:
base_dir (requerido): el directorio base para buscar operaciones (en relación con el directorio de repo)schema_location (requerido): URL o ruta de punto final de un archivo .json / .graphql (en relación con el directorio de repo)excluded_paths : rutas de directorio/archivo separadas en comas en el base_dir para excluir (relativo a base_dir )token : Token para usar con un encabezado de autorización (solo el esquema de portador es compatible) El siguiente ejemplo ilustra cómo validaría las operaciones GraphQL siempre que presione o realice una solicitud de extracción a la rama main de un repositorio. La acción apunta a un archivo de esquema local en el repositorio de swapi/schema.graphql , busca operaciones en el directorio swapi y excluye el archivo swapi/schema.graphql al buscar documentos de operaciones (porque esto resultaría en un error):
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 Como mínimo, debe especificar el ${{ github.workspace }} como su entrada base_dir , pero es posible que desee reducir la búsqueda a un subdirectorio específico en el proyecto que todas las operaciones están anidadas a continuación. El directorio node_modules se ignora automáticamente al buscar operaciones, por lo que no necesita incluirlo en la entrada Opcional excluded_paths .
Ahora, cuando se presenta a la rama main o se envía un PR, puede verificar la pestaña Acciones de su repositorio en GitHub para ver el resultado. Si alguna operación no es válida, entonces se anotarán en el registro.
Si necesita validar sus operaciones contra un esquema que requiere un token en un encabezado Authorization , puede agregarlo como un 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 }} El encabezado se enviará utilizando la Authorization: Bearer token... solo esquema. Consulte la documentación de GitHub sobre el uso de secretos cifrados en un flujo de trabajo.
¿Desea validar sus operaciones en su entorno de desarrollo o sin presionar a su repositorio? ¡Ningún problema!
Puede usar ACT para ejecutar esta acción localmente.
Instale las dependencias:
npm iEjecute las pruebas:
npm testPaquete para la distribución:
npm run prepareEste proyecto se basó originalmente en acciones/JavaScript-Action.
Los scripts y la documentación en este proyecto se publican bajo la licencia MIT.