このGitHubアクションにより、GraphQLスキーマに対してクライアントアプリケーションで使用される操作を検証できます。アクションは、プロジェクトの指定されたディレクトリのすべての操作ドキュメントをチェックして、特定のGraphQLスキーマに対してクエリ/変異とそのフィールド選択を安全に実行できるようにします。
ここで使用されているこのアクションを参照してください:mandiwise/graphql-operation-validation-demo
クライアントアプリケーションですべてのGRAPHQL操作のテストを書き込み、維持することは不可能かもしれません。そのため、このアクションは、実行時に有効になるという保証の尺度を提供できます。内省クエリをスキーマに送信し、プロジェクトの指定されたディレクトリをすべてのGraphQL操作ドキュメント( .graphqlまたは.jsファイルのいずれか)の検索、内省クエリの結果に対してそれらの操作を検証することで機能します。
ボンネットの下で、このプロジェクトはGraphQL.jsとGraphQLツールを使用してスキーマをロードし、ドキュメントを取得し、操作を検証します。
重要!スキーマを取得するには内省クエリが必要であるため、操作を検証するGraphQL APIに対して内省をオンにする必要があります。このため、アクションは、おそらく、ローカル開発環境で、またはSchemaファイルがクライアントアプリケーションと共同で開催される場合、パブリックGraphQL APIで使用するのに最適です。
最初に、プロジェクトのワークフロー( .github/workflows/operations.ymlなど)を説明するためにyamlファイルを作成する必要があります。
次に、アクション/チェックアウトパッケージを使用してリポジトリのファイルをチェックアウトするファイルにジョブを追加します( $GITHUB_WORKSPACEに追加)。その後、ジョブの2番目のステップとして、チェックアウトファイルの検証アクションを実行できます。
このアクションは、次の入力をサポートしています。
base_dir (必須):操作を検索するためのベースディレクトリ(レポディレクトリに関連して)schema_location (必須):. .json / .graphqlファイルのエンドポイントURLまたはパス(レポディレクトリに関連)excluded_paths : base_dirのcommaseparatedディレクトリ/ファイルパスを除外する( base_dirと比較)token :承認ヘッダーで使用するトークン(ベアラースキームのみがサポートされています)次の例は、リポジトリのmainブランチにプルリクエストをプッシュまたはプルリクエストするたびにGraphQL操作を検証する方法を示しています。アクションは、 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ライセンスの下でリリースされます。