ห้องสมุด Python ที่ให้บริการพิมพ์เขียวสำหรับการรับ GitHub, Gitlab หรือ Gitea Webhooks และทำหน้าที่กับพวกเขา ห้องสมุดมี webhooks ที่อนุญาตให้มีการปรับใช้อัตโนมัติการทดสอบและการรวมเข้าด้วยกัน อย่างไรก็ตามเนื่องจากธรรมชาติที่เปิดกว้างของพิมพ์เขียวพฤติกรรมนี้สามารถปรับแต่งได้ง่ายด้วยต้นไม้พึ่งพาคลาสที่เปิดกว้างมาก
การตั้งค่า webhook ทางด้าน Git ในระหว่างการตั้งค่าให้แน่ใจว่าได้ให้ความสนใจอย่างใกล้ชิดกับโอกาสใด ๆ ในการป้อนรหัสลับใด ๆ คุณจะต้องใช้คีย์นั้นในภายหลังหากคุณต้องการเปิดใช้งานการตรวจสอบ WebHook นี่เป็นสิ่งที่ฉันแนะนำให้คุณทำอย่างมาก สำหรับ GitHub ที่จะเป็นสายลับที่คุณให้ไว้ในระหว่างการสร้างสำหรับ Gitlab ซึ่งจะเป็นโทเค็นลับและสำหรับ Gitea ซึ่งจะเป็นโทเค็นการอนุญาต
ติดตั้งแพ็คเกจนี้
ใช้ PIP
pip install gitAppWebhookโดยการโคลนนิ่งที่เก็บข้อมูล
git clone https://github.com/TCA166/gitWebhook.git
pip install -r gitWebhook/requirements.txtโดยรวม repo นี้เป็น submodule
git submodule add https://github.com/example/repo.git gitWebhook
pip install -r gitWebhook/requirements.txt ในขณะที่การติดตั้งฟังก์ชั่นแพ็คเกจ PIP เป็นแพ็คเกจอื่น ๆ สิ่งที่มีโฟลเดอร์ repo นี้คือมันทำหน้าที่เหมือนแพ็คเกจท้องถิ่น นั่นหมายความว่าการโคลน repo นี้ลงในโฟลเดอร์โครงการของคุณจะช่วยให้คุณสามารถนำเข้า gitWebhook ราวกับว่ามันถูกติดตั้งผ่าน PIP เช่นเดียวกับการเพิ่มเป็น submodule ที่มีประโยชน์เพิ่มเติมของการทำความเข้าใจ GIT สิ่งที่เกิดขึ้นดีกว่า
สร้างอินสแตนซ์ของ webhookBlueprint (หรือของคลาสย่อย) ด้วยการตั้งค่าของคุณ
import gitWebhook
wb = gitWebhook . webhookBlueprint ( token , url_prefix = "/" )ลงทะเบียนอินสแตนซ์ภายในแอพขวดที่คุณเลือก
from flask import Flask
app = Flask ( __name__ )
app . register_blueprint ( wb )หากคุณหลงทางคุณสามารถดูทรัพยากรอย่างเป็นทางการของ GitHub หรือดู wsgi.py ได้เสมอซึ่งเป็นตัวอย่างที่ตั้งค่า Webapp Flask ที่กำหนดค่าไว้
ห้องสมุดนี้มีคลาสที่ได้จากพิมพ์เขียวพื้นฐานสำหรับการรับ webhooks และคลาสที่ได้รับเพียงไม่กี่คลาสที่มีความสามารถในการประมวลผล webhook ที่แตกต่างกัน
คลาสพื้นฐานนี้เองไม่มีความสามารถในการประมวลผล webhook แต่ทำหน้าที่เป็นฐานที่ Webhook ที่ได้รับพิมพ์เขียวอาจได้มาจาก มันใช้การตรวจสอบทั้งหมดที่จำเป็นสำหรับ GitHub และ Gitlab พิมพ์เขียวและควรเป็นชั้นเรียนที่คุณควรได้รับ
คลาสนี้ได้มาจาก webhookBlueprint มีวัตถุประสงค์เพื่อใช้เป็นวิธีการปรับใช้และทดสอบบนเซิร์ฟเวอร์โดยอัตโนมัติ หากคุณไม่ต้องการใช้การกระทำของ GitHub คุณสามารถใช้แอพ Flask กับพิมพ์เขียวนี้ลงทะเบียนได้เสมอ
เมื่อได้รับคำขอ POST ไปยัง / จุดสิ้นสุดพิมพ์เขียว:
git pull คลาสนี้ได้มาจาก webhookBlueprint มีวัตถุประสงค์เพื่อใช้เป็นวิธีการรวมบริการที่แตกต่างกัน คุณให้ข้อมูลเกี่ยวกับการเริ่มต้นด้วยรายการของการเรียกใช้ Callable ใน webhook payloads เป็นอาร์กิวเมนต์เดียวและฟังก์ชั่นเหล่านี้จะถูกเรียกเมื่อได้รับ webhook ดังนั้นคุณสามารถรวมบริการเข้ากับคลาสนี้ได้อย่างง่ายดายโดยเพียงแค่มีการรวมเข้าด้วยกันใน Callable ดังกล่าว
เมื่อได้รับคำขอ POST ไปยัง / จุดสิ้นสุดพิมพ์เขียว:
functionsคุณสามารถปรับแต่งคลาสใดก็ได้ตามความชอบของคุณได้สองวิธี
webhookTokenunittest.testSuite (PullerWebhookBlueprint)logging.LoggerreceiveWebhook และ processWebhook แทนที่อดีตเพื่อเปลี่ยนวิธีการจัดการและตรวจสอบคำขอดิบ แทนที่หลังเพื่อเปลี่ยนสิ่งที่ทำเมื่อ webhook ได้รับการตรวจสอบแล้ว งานนี้ได้รับใบอนุญาตภายใต้ใบอนุญาต MIT