สารบัญ
ผู้เขียนต้นฉบับ: @hamelsmu, @inc0, @jlewi
ออกฉลากบอทติดตั้งแอพนี้จากตลาด GitHub
แอพ GitHub ขับเคลื่อนโดยการเรียนรู้ของเครื่องเขียนใน Python การอภิปรายเกี่ยวกับแรงจูงใจในการสร้างแอพนี้ได้อธิบายไว้ในโพสต์บล็อกนี้
เมื่อมีการเปิดปัญหาบอทจะทำนายว่าฉลากควรเป็น: feature request bug หรือ question และใช้ฉลากโดยอัตโนมัติหากเหมาะสม นี่คือภาพหน้าจอของบอทในการดำเนินการ:
ตัวอย่างเพิ่มเติมสามารถดูได้ในหน้าแรกของแอปของเรา ควรสังเกตว่าบอทอาจไม่ใช้ฉลากใด ๆ ในสถานการณ์ที่การทำนายไม่แน่นอน ดูส่วนการปฏิเสธความรับผิดชอบสำหรับคำเตือนเพิ่มเติม
ในการใช้รหัสในที่เก็บนี้คุณจะต้องลงทะเบียนแอพ GitHub ของคุณเองและติดตั้งแอพนี้ในที่เก็บที่ต้องการและจัดเก็บความลับการตรวจสอบความถูกต้อง
ก่อนอื่นให้เดินผ่านส่วนที่จำเป็นต้องมีของคู่มือการเริ่มต้นใช้งานนี้ ยกเว้น ส่วน "ภาษาการเขียนโปรแกรมทับทิม" ในขณะที่เราจะใช้ Python แทนเป็นไคลเอนต์ที่เชื่อมต่อกับ GitHub API
ประการที่สองตั้งค่าสภาพแวดล้อมการพัฒนาของคุณ ตรวจสอบให้แน่ใจว่าคุณสร้างความลับ webhook แม้ว่าขั้นตอนนี้จะเป็นทางเลือก
ถัดไปตั้งค่าฐานข้อมูล Postgres คุณสามารถทำได้ฟรีบน Heroku คำแนะนำโดยละเอียด (ถูกขโมยอย่างไร้ยางอายจากที่นี่):
ในที่สุดคุณต้องสร้างตัวแปรสภาพแวดล้อมสำหรับความลับทั้งหมดซึ่งอธิบายไว้ด้านล่าง
PRIVATE_KEY : นี่คือคีย์ส่วนตัวที่คุณใช้เพื่อตรวจสอบสิทธิ์เป็นแอพที่มี GitHub APIWEBHOOK_SECRET : สิ่งนี้ใช้เพื่อตรวจสอบว่าแอปที่ได้รับจากแอปของคุณนั้นมาจาก GitHub อธิบายไว้ที่นี่DATABASE_URL : นี่คือ URL ที่มีข้อมูลการเข้าสู่ระบบสำหรับฐานข้อมูล PostgreSQL ของคุณโดยปกติจะอยู่ในรูปแบบ: postgres://<username>:<password>@<url>:5432/<database_name>APP_ID : นี่เป็นตัวระบุที่ไม่ซ้ำกันที่ GitHub มอบให้แก่คุณเมื่อคุณลงทะเบียนแอปของคุณFLASK_ENV : นี่มักจะตั้งค่าเป็นทั้ง production หรือ development คุณจะต้องใช้ deployment สำหรับการทดสอบในท้องถิ่นPORT : นี่คือพอร์ตแอปของคุณจะให้บริการ โปรดทราบว่าหากคุณกำลังนำไปใช้กับ Heroku Heroku จะแทนที่ตัวแปรนี้ด้วยค่าของตัวเองเมื่อสร้างแอปของคุณ สำหรับการพัฒนาในท้องถิ่นคุณจะต้องการให้สิ่งนี้ตรงกับ Port Smee ที่ให้บริการAPP_URL : นี่คือ URL สำหรับหน้าแรกของแอปของคุณที่มีให้กับผู้ใช้เป็นลิงค์ในความคิดเห็นที่เป็นปัญหา คุณสามารถตั้งค่าสิ่งนี้เป็นค่าโดยพลการสำหรับการพัฒนาในท้องถิ่นหมายเหตุ: หากคุณใช้ ZSH ปลั๊กอิน DOTENV จะเป็นประโยชน์สำหรับการจัดการตัวแปรสภาพแวดล้อม
ติดตั้งการพึ่งพา : ติดตั้งข้อกำหนด. txt ลงในสภาพแวดล้อมเสมือนจริง หากคุณใช้ pipenv ติดตั้งการพึ่งพาที่จำเป็นจาก pipfile.lock โดยพิมพ์ pipenv install ในรูทของที่เก็บนี้
เรียกใช้แอพ Flask : เรียกใช้ python flask_app/app.py จากรูทของที่เก็บนี้ สำหรับการทำงานนี้คุณต้องตั้งค่าตัวแปรสภาพแวดล้อมอย่างถูกต้องตามที่อธิบายไว้ในส่วนตัวแปรสภาพแวดล้อม
ตัวเลือก - เรียกใช้แอพเป็นคอนเทนเนอร์ Docker คอนเทนเนอร์ Docker ที่ให้บริการบอทที่มีป้ายกำกับปัญหาสามารถสร้างได้ด้วย bash script/bootstrap จากรูทของที่เก็บนี้ สคริปต์นี้สร้างภาพนักเทียบท่าชื่อ hamelsmu/mlapp ซึ่งมีอยู่ใน DockerHub หากคุณต้องการเรียกใช้คอนเทนเนอร์ Docker ในพื้นที่สำหรับการทดสอบคุณจะต้องผ่านตัวแปรสภาพแวดล้อมที่จำเป็นไปยังคอนเทนเนอร์ Docker ที่รันไทม์รวมทั้งเปิดเผยพอร์ตที่จำเป็นสำหรับแอป ดูส่วนการอ้างอิงสำหรับทรัพยากรเพิ่มเติมเกี่ยวกับการใช้ Docker
สินทรัพย์ใน repo นี้ช่วยให้คุณปรับใช้กับ Heroku (ง่ายขึ้น) หรือคลัสเตอร์ Kubernetes (ขั้นสูงมากขึ้น)
ใน Heroku ความลับสามารถส่งผ่านเป็นตัวแปรการกำหนดค่า นอกจากนี้เอกสารนี้อธิบายถึงวิธีที่คุณสามารถตั้งค่าความลับใน Kubernetes ตรวจสอบให้แน่ใจว่าคุณตั้งค่าตัวแปรสภาพแวดล้อม FLASK_ENV เป็นการ production หากคุณกำลังจะปรับใช้แอพต่อสาธารณะ
เรายินดีต้อนรับการมีส่วนร่วมทุกรูปแบบ เราสนใจเป็นพิเศษในสิ่งต่อไปนี้:
ผู้เขียนโครงการนี้สนใจที่จะเพิ่มคุณสมบัติต่อไปนี้ในอนาคตอันใกล้:
รหัสใน repo นี้และการสอนที่เกี่ยวข้องถือว่าคุ้นเคยกับ Docker โพสต์บล็อกนี้เสนอการแนะนำอย่างอ่อนโยนเกี่ยวกับ Docker สำหรับนักวิทยาศาสตร์ข้อมูล
ต้องการแรงบันดาลใจสำหรับผลิตภัณฑ์ข้อมูลอื่น ๆ ที่คุณสามารถสร้างได้โดยใช้การเรียนรู้ของเครื่องและชุดข้อมูลสาธารณะ GitHub? ดูตัวอย่างเหล่านี้:
หลักสูตรที่ยอดเยี่ยมเกี่ยวกับ Flask: Harvardx CS50 เว็บ
MOOCs โดย Fastai สำหรับการเรียนรู้ของเครื่องจักรและการเรียนรู้อย่างลึกซึ้ง
บอทออกฉลากมีวัตถุประสงค์เพื่อการศึกษาและการสาธิตเท่านั้น เป้าหมายของเราคือการให้ตัวอย่างการทำงานน้อยที่สุดสำหรับชุมชนที่มีความซับซ้อนน้อยที่สุดเท่าที่จะเป็นไปได้ ดังนั้นเราเชื่อว่ารูปแบบที่แสดงให้เห็นมีห้องพักที่ยอดเยี่ยมจากการปรับปรุง นอกจากนี้ แอพนี้ใช้งานได้เฉพาะในที่เก็บสาธารณะและจะไม่ทำอะไรเลยหากติดตั้งใน Repo ส่วนตัว