การกระทำของ GitHub นี้ช่วยให้คุณสามารถตรวจสอบการดำเนินการที่ใช้ในแอปพลิเคชันไคลเอนต์กับ schema GraphQL การดำเนินการจะตรวจสอบเอกสารการดำเนินการทั้งหมดในไดเรกทอรีที่ระบุในโครงการของคุณเพื่อให้แน่ใจว่าการสืบค้น/การกลายพันธุ์และการเลือกฟิลด์ของพวกเขาสามารถดำเนินการได้อย่างปลอดภัยกับ schema GraphQL ที่กำหนด
ดูการดำเนินการนี้ที่ใช้งานได้ที่นี่: Mandiwise/graphql-operation-validation-demo
อาจเป็นไปไม่ได้ที่จะเขียนและบำรุงรักษาการทดสอบสำหรับการดำเนินการ GraphQL ทั้งหมดในแอปพลิเคชันไคลเอนต์ดังนั้นการกระทำนี้สามารถให้การวัดว่าพวกเขาจะถูกต้องเมื่อดำเนินการ มันใช้งานได้โดยการส่งแบบสอบถามวิปัสสนาไปยังสคีมาค้นหาไดเรกทอรีที่ระบุในโครงการของคุณสำหรับเอกสารการดำเนินการ GraphQL ทั้งหมด (ในไฟล์ .graphql หรือ .js ) และตรวจสอบการดำเนินการเหล่านั้นกับผลลัพธ์ของการสืบค้นวิปัสสนา
ภายใต้ประทุนโครงการนี้ใช้เครื่องมือ graphql.js และ graphql เพื่อโหลดสคีมารับเอกสารและตรวจสอบความถูกต้องของการดำเนินการ
สำคัญ! เนื่องจากต้องมีการสืบค้นวิปัสสนาเพื่อรับสคีมาจึงต้องเปิดใช้งานการวิปัสสนาสำหรับ GraphQL API ที่คุณต้องการตรวจสอบการดำเนินการของคุณ ด้วยเหตุนี้การกระทำจึงเหมาะที่สุดสำหรับการใช้งานกับ GraphQL Public API ในสภาพแวดล้อมการพัฒนาท้องถิ่นของคุณหรือเมื่อไฟล์สคีมาอยู่ร่วมกับแอปพลิเคชันไคลเอนต์ของคุณ
ก่อนอื่นคุณจะต้องสร้างไฟล์ YAML เพื่ออธิบายเวิร์กโฟลว์ในโครงการของคุณ (เช่น .github/workflows/operations.yml )
ถัดไปเพิ่มงานลงในไฟล์ที่ใช้แพ็คเกจการกระทำ/เช็คเอาต์เพื่อตรวจสอบไฟล์ของที่เก็บของคุณ (เพิ่มลงใน $GITHUB_WORKSPACE ) จากนั้นคุณสามารถเรียกใช้การดำเนินการตรวจสอบความถูกต้องบนไฟล์เช็คเอาท์เป็นขั้นตอนที่สองของงาน
การดำเนินการนี้รองรับอินพุตต่อไปนี้:
base_dir (จำเป็น): ไดเรกทอรีพื้นฐานเพื่อค้นหาการดำเนินการ (สัมพันธ์กับไดเรกทอรี repo)schema_location (จำเป็น): URL ปลายทางหรือเส้นทางของไฟล์ .json / .graphql (เทียบกับไดเรกทอรี repo)excluded_paths : เส้นทางไดเรกทอรี/ไฟล์ที่คั่นด้วยเครื่องหมายจุลภาคใน base_dir เพื่อยกเว้น (สัมพันธ์กับ base_dir )token : โทเค็นที่จะใช้กับส่วนหัวการอนุญาต (รองรับโครงการผู้ถือเท่านั้น) ตัวอย่างต่อไปนี้แสดงให้เห็นว่าคุณจะตรวจสอบการดำเนินการของ GraphQL ได้อย่างไรเมื่อใดก็ตามที่คุณผลักดันหรือส่งคำขอดึงไปยังสาขา main ของที่เก็บ การกระทำชี้ไปที่ไฟล์สคีมาในพื้นที่ในที่เก็บที่ 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