이 GitHub 작업을 사용하면 GraphQL 스키마에 대한 클라이언트 응용 프로그램에 사용 된 작업을 검증 할 수 있습니다. 이 작업은 프로젝트의 지정된 디렉토리의 모든 작업 문서를 확인하여 쿼리/돌연변이 및 해당 필드 선택이 주어진 GraphQL 스키마에 대해 안전하게 실행될 수 있는지 확인합니다.
여기에서 사용중인이 동작을 참조하십시오 : Mandiwise/GraphQL-Operation-Validation-Demo
클라이언트 애플리케이션의 모든 GraphQL 작업에 대한 테스트를 작성하고 유지하는 것은 불가능할 수 있으므로이 조치는 실행될 때 유효하다는 보증을 제공 할 수 있습니다. 내성 쿼리를 스키마로 보내고 모든 GraphQL 작동 문서 ( .graphql 또는 .js 파일)에 대한 프로젝트에서 지정된 디렉토리를 검색하고 내성 쿼리 결과에 대해 해당 작업을 검증하여 작동합니다.
후드 에서이 프로젝트는 GraphQL.js 및 GraphQL 도구를 사용하여 스키마를로드하고 문서를 가져 오며 작업을 검증합니다.
중요한! 스키마를 얻으려면 내성 쿼리가 필요하므로 작업을 검증하려는 GraphQL API에 대해 내성을 켜야합니다. 이러한 이유로,이 작업은 아마도 공개 그래프 QL API, 로컬 개발 환경 또는 스키마 파일이 클라이언트 응용 프로그램과 공동으로 배치 될 때 사용하기에 가장 적합합니다.
먼저 프로젝트의 워크 플로우 (예 : .github/workflows/operations.yml )를 설명하기 위해 Yaml 파일을 작성해야합니다.
다음으로 액션/체크 아웃 패키지를 사용하여 저장소 파일을 확인하는 파일에 작업을 추가하십시오 ( $GITHUB_WORKSPACE 에 추가). 그런 다음 체크 아웃 파일에서 유효성 검사를 작업의 두 번째 단계로 실행할 수 있습니다.
이 작업은 다음 입력을 지원합니다.
base_dir (필수) : 작업을 검색 할 기본 디렉토리 (리포 디렉토리에 비해)schema_location (필수) : .json / .graphql 파일의 엔드 포인트 URL 또는 경로 (리포 디렉토리에 비해)excluded_paths : base_dir 의 comma-separated directory/file paths to exclude ( 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... Scheme 전용. 워크 플로에서 암호화 된 비밀 사용에 대한 Github의 문서를 참조하십시오.
개발 환경에서 또는 저장소를 푸시하지 않고 운영을 검증하고 싶으십니까? 괜찮아요!
ACT를 사용 하여이 작업을 현지에서 실행할 수 있습니다.
종속성 설치 :
npm i테스트 실행 :
npm test배포를위한 패키지 :
npm run prepare이 프로젝트는 원래 Action/JavaScript-Action을 기반으로했습니다.
이 프로젝트의 스크립트 및 문서는 MIT 라이센스에 따라 릴리스됩니다.