Cette action GitHub vous permet de valider les opérations utilisées dans une application client par rapport à un schéma GraphQL. L'action vérifiera tous les documents d'opération dans un répertoire spécifié dans votre projet pour s'assurer que les requêtes / mutations et leurs sélections de champ peuvent être exécutées en toute sécurité dans un schéma GraphQL donné.
Voir cette action utilisée ici: mandiwise / graphql-operation-validation-Demo
Il peut ne pas être possible d'écrire et de maintenir des tests pour toutes les opérations GraphQL dans une application client, afin que cette action puisse fournir une mesure d'assurance qu'elles seront valides lorsqu'elles seront exécutées. Il fonctionne en envoyant une requête d'introspection à un schéma, en recherchant un répertoire spécifié dans votre projet pour tous les documents d'opération GraphQL (dans des fichiers .graphql ou .js ) et valider ces opérations par rapport à la question d'introspection.
Sous le capot, ce projet utilise des outils GraphQL.JS et GraphQL pour charger le schéma, obtenir les documents et valider les opérations.
Important! Parce qu'une requête d'introspection est nécessaire pour obtenir le schéma, l'introspection doit être activée pour l'API GraphQL contre laquelle vous souhaitez valider vos opérations. Pour cette raison, l'action est probablement la mieux adaptée à une utilisation avec une API GraphQL publique, dans votre environnement de développement local, ou lorsque le fichier de schéma est colocalisé avec votre application client.
Vous devrez d'abord créer un fichier YAML pour décrire le workflow dans votre projet (par exemple, .github/workflows/operations.yml ).
Ensuite, ajoutez un travail au fichier qui utilise le package Actions / Checkout pour consulter les fichiers de votre référentiel (les ajoutant au $GITHUB_WORKSPACE ). Vous pouvez ensuite exécuter l'action de validation sur les fichiers vérifiés comme deuxième étape du travail.
Cette action prend en charge les entrées suivantes:
base_dir (obligatoire): le répertoire de base pour rechercher des opérations (par rapport au répertoire Repo)schema_location (requis): URL ou chemin de point de terminaison d'un fichier .json / .graphql (par rapport au répertoire de repo)excluded_paths : des chemins de répertoire / fichiers séparés des virgules dans le base_dir à exclure (par rapport à base_dir )token : jeton à utiliser avec un en-tête d'autorisation (seul le schéma de support est pris en charge) L'exemple suivant illustre comment vous validez les opérations GraphQL chaque fois que vous poussez ou faites une demande de traction vers la branche main d'un référentiel. L'action pointe vers un fichier de schéma local dans le référentiel de swapi/schema.graphql , recherche des opérations dans le répertoire swapi et exclut le fichier swapi/schema.graphql lors de la recherche de documents d'opérations (car cela entraînerait une erreur):
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 Au minimum, vous devez spécifier le ${{ github.workspace }} comme entrée base_dir , mais vous pouvez réduire la recherche à un sous-répertoire spécifique dans le projet que toutes les opérations sont imbriquées ci-dessous. Le répertoire node_modules est automatiquement ignoré lors de la recherche d'opérations, vous n'avez donc pas besoin de l'inclure dans l'entrée facultative excluded_paths .
Maintenant, lorsque vous poussez à la branche main ou qu'un PR est soumis, vous pouvez vérifier l'onglet Actions de votre référentiel sur GitHub pour voir le résultat. Si des opérations ne sont pas valides, elles seront notées dans le journal.
Si vous devez valider vos opérations contre un schéma qui nécessite un jeton dans un en-tête Authorization , vous pouvez l'ajouter en tant que valeur d'entrée 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 }} L'en-tête sera envoyé en utilisant le schéma Authorization: Bearer token... uniquement. Veuillez consulter la documentation de GitHub sur l'utilisation de secrets cryptés dans un workflow.
Vous souhaitez valider vos opérations dans votre environnement de développement ou sans pousser à votre référentiel? Aucun problème!
Vous pouvez utiliser ACT pour exécuter cette action localement.
Installez les dépendances:
npm iExécutez les tests:
npm testPackage pour la distribution:
npm run prepareCe projet était à l'origine basé sur des actions / javascript-action.
Les scripts et la documentation de ce projet sont publiés sous la licence MIT.