Mit dieser GitHub -Aktion können Sie die in einer Clientanwendung verwendeten Vorgänge gegen ein GraphQL -Schema validieren. In der Aktion werden alle Betriebsdokumente in einem bestimmten Verzeichnis in Ihrem Projekt überprüft, um sicherzustellen, dass die Abfragen/Mutationen und ihre Feldauswahl sicher gegen ein bestimmtes GraphQL -Schema ausgeführt werden können.
Siehe diese Aktion hier: Mandiise/GraphQl-Operation-Validation-Demo
Es ist möglicherweise nicht möglich, Tests für alle GraphQL -Operationen in einer Client -Anwendung zu schreiben und zu verwalten, sodass diese Aktion ein Maß für die Gewissheit liefern kann, dass sie bei der Ausführung gültig sind. Es wird durch Senden einer Introspection -Abfrage an ein Schema gesendet, ein bestimmtes Verzeichnis in Ihrem Projekt für alle GraphQL -Operationsdokumente (entweder in .graphql oder .js -Dateien) gesucht und diese Operationen gegen das Ergebnis der Introspection -Abfrage validiert.
Unter der Haube verwendet dieses Projekt GraphQL.js- und GraphQL -Tools, um das Schema zu laden, die Dokumente zu erhalten und die Vorgänge zu validieren.
Wichtig! Da eine Introspection -Abfrage erforderlich ist, um das Schema zu erhalten, muss die Selbstbeobachtung für die GraphQL -API, gegen die Sie Ihre Operationen validieren möchten, eingeschaltet werden. Aus diesem Grund eignet sich die Aktion wahrscheinlich für die Verwendung mit einer öffentlichen GraphQL-API, in Ihrer lokalen Entwicklungsumgebung oder wenn die Schema-Datei mit Ihrer Kundenanwendung zusammengeführt wird.
Sie müssen zunächst eine YAML -Datei erstellen, um den Workflow in Ihrem Projekt zu beschreiben (z. B. .github/workflows/operations.yml ).
Fügen Sie als nächstes einen Job in die Datei hinzu, in der das Aktionen/das Checkout -Paket verwendet wird, um die Dateien Ihres Repositorys zu überprüfen (Hinzufügen zum $GITHUB_WORKSPACE ). Sie können dann die Validierungsaktion in den geprüften Dateien als zweiten Schritt des Jobs ausführen.
Diese Aktion unterstützt die folgenden Eingaben:
base_dir (erforderlich): Das Basisverzeichnis zur Suche nach Operationen (im Vergleich zum Repo -Verzeichnis)schema_location (Erforderlich): Eine Endpunkt -URL oder ein Pfad einer .json / .graphql -Datei (relativ zum Repo -Verzeichnis)excluded_paths : Comma-getrennte Verzeichnis/Dateipfade in der base_dir ausschließen (relativ zu base_dir )token : Token, um mit einem Autorisierungsheader zu verwenden (nur das Trägerschema wird unterstützt) Das folgende Beispiel zeigt, wie Sie die GraphQL -Operationen validieren, wenn Sie an den main eines Repositorys drücken oder eine Pull -Anfrage stellen. Die Aktion zeigt auf eine lokale Schema -Datei im Repository bei swapi/schema.graphql , sucht nach Operationen im swapi -Verzeichnis und schließt die Datei swapi/schema.graphql aus, wenn nach Operationsdokumenten gesucht wird (da dies zu einem Fehler führen würde):
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 Zumindest müssen Sie die ${{ github.workspace }} als Ihre base_dir -Eingabe angeben. Möglicherweise möchten Sie die Suche auf ein bestimmtes Unterverzeichnis in dem Projekt einschränken, dass alle Operationen unten verschachtelt sind. Das Verzeichnis node_modules wird bei der Suche nach Operationen automatisch ignoriert, sodass Sie es nicht in die optionale Eingabe excluded_paths einbeziehen müssen.
Wenn Sie nun in den main oder eine PR eingereicht werden, können Sie die Registerkarte Aktionen Ihres Repositorys auf GitHub überprüfen, um das Ergebnis anzuzeigen. Wenn Operationen ungültig sind, werden sie im Protokoll vermerkt.
Wenn Sie Ihre Operationen gegen ein Schema validieren müssen, für das ein Token in einem Authorization erforderlich ist, können Sie es als token -Eingangswert hinzufügen:
# ...
- 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 }} Der Header wird nur mit der Authorization: Bearer token... nur mit Schema gesendet. In der Dokumentation von Github finden Sie in der Verwendung verschlüsselter Geheimnisse in einem Workflow.
Möchten Sie Ihre Operationen in Ihrer Entwicklungsumgebung validieren oder ohne auf Ihr Repository weiterzugeben? Kein Problem!
Sie können Act verwenden, um diese Aktion lokal auszuführen.
Installieren Sie die Abhängigkeiten:
npm iFühren Sie die Tests aus:
npm testPaket für die Verteilung:
npm run prepareDieses Projekt basierte ursprünglich auf Aktionen/JavaScript-Action.
Die Skripte und die Dokumentation in diesem Projekt werden unter der MIT -Lizenz veröffentlicht.