Tindakan GitHub ini memungkinkan Anda untuk memvalidasi operasi yang digunakan dalam aplikasi klien terhadap skema GraphQL. Tindakan ini akan memeriksa semua dokumen operasi di direktori tertentu dalam proyek Anda untuk memastikan bahwa kueri/mutasi dan pilihan lapangan mereka dapat dieksekusi dengan aman terhadap skema graphQL yang diberikan.
Lihat tindakan ini yang digunakan di sini: Mandiwise/GraphQL-Operation-Validation-Demo
Mungkin tidak layak untuk menulis dan mempertahankan tes untuk semua operasi GraphQL dalam aplikasi klien, sehingga tindakan ini dapat memberikan ukuran jaminan bahwa mereka akan valid ketika dieksekusi. Ini bekerja dengan mengirimkan kueri introspeksi ke skema, mencari direktori tertentu dalam proyek Anda untuk semua dokumen operasi GraphQL (baik dalam file .graphql atau .js ), dan memvalidasi operasi tersebut terhadap hasil kueri introspeksi.
Di bawah kap, proyek ini menggunakan alat GraphQL.js dan GraphQL untuk memuat skema, mendapatkan dokumen, dan memvalidasi operasi.
Penting! Karena kueri introspeksi diperlukan untuk mendapatkan skema, introspeksi harus dihidupkan untuk graphql API yang ingin Anda validasi operasi Anda. Untuk alasan ini, tindakan ini mungkin paling cocok untuk digunakan dengan API GraphQL publik, di lingkungan pengembangan lokal Anda, atau ketika file skema ditempatkan bersama dengan aplikasi klien Anda.
Pertama -tama Anda harus membuat file YAML untuk menggambarkan alur kerja dalam proyek Anda (misalnya .github/workflows/operations.yml ).
Selanjutnya, tambahkan pekerjaan ke file yang menggunakan paket tindakan/checkout untuk memeriksa file repositori Anda (menambahkannya ke $GITHUB_WORKSPACE ). Anda kemudian dapat menjalankan tindakan validasi pada file yang diperiksa sebagai langkah kedua pekerjaan.
Tindakan ini mendukung input berikut:
base_dir (wajib): Direktori dasar untuk mencari operasi (relatif ke direktori repo)schema_location (wajib): URL titik akhir atau jalur file .json / .graphql (relatif ke direktori repo)excluded_paths : Direktori yang dipisahkan koma/jalur file di base_dir untuk dikecualikan (relatif terhadap base_dir )token : Token untuk digunakan dengan header otorisasi (hanya skema pembawa yang didukung) Contoh berikut menggambarkan bagaimana Anda akan memvalidasi operasi GraphQL setiap kali Anda mendorong atau membuat permintaan tarik ke cabang main repositori. Tindakan menunjuk ke file skema lokal di repositori di swapi/schema.graphql , mencari operasi di direktori swapi , dan tidak termasuk file swapi/schema.graphql saat mencari dokumen operasi (karena ini akan menghasilkan kesalahan):
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 Paling tidak, Anda harus menentukan ${{ github.workspace }} sebagai input base_dir Anda, tetapi Anda mungkin ingin mempersempit pencarian ke subdirektori tertentu dalam proyek bahwa semua operasi bersarang di bawah ini. Direktori node_modules secara otomatis diabaikan saat mencari operasi, jadi Anda tidak perlu memasukkannya ke dalam input Opsional excluded_paths .
Sekarang ketika Anda mendorong ke cabang main atau PR diajukan, Anda dapat memeriksa tab Tindakan Repositori Anda di GitHub untuk melihat hasilnya. Jika ada operasi yang tidak valid, maka mereka akan dicatat dalam log.
Jika Anda perlu memvalidasi operasi Anda terhadap skema yang memerlukan token di header Authorization , maka Anda dapat menambahkannya sebagai nilai input 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 }} Header akan dikirim menggunakan Authorization: Bearer token... skema saja. Silakan lihat dokumentasi GitHub tentang menggunakan rahasia terenkripsi dalam alur kerja.
Ingin memvalidasi operasi Anda di lingkungan pengembangan Anda atau tanpa mendorong ke repositori Anda? Tidak masalah!
Anda dapat menggunakan ACT untuk menjalankan tindakan ini secara lokal.
Instal dependensi:
npm iJalankan tes:
npm testPaket untuk distribusi:
npm run prepareProyek ini awalnya didasarkan pada tindakan/aksi javascript.
Skrip dan dokumentasi dalam proyek ini dirilis di bawah lisensi MIT.