تكامل GitHub
نظرة عامة
Section titled “نظرة عامة”مكّن وكلاءك من إدارة المستودعات والمشكلات والإصدارات عبر GitHub. أنشئ المشكلات وحدّثها، وأدر الإصدارات، وتتبع تطور المشاريع، وبسّط سير عمل تطوير البرمجيات باستخدام الأتمتة المدعومة بالذكاء الاصطناعي.
المتطلبات الأساسية
Section titled “المتطلبات الأساسية”قبل استخدام تكامل GitHub، تأكد من توفر ما يلي:
- حساب CrewAI AMP مع اشتراك فعّال
- حساب GitHub بصلاحيات المستودع المناسبة
- ربط حساب GitHub الخاص بك عبر صفحة التكاملات
إعداد تكامل GitHub
Section titled “إعداد تكامل GitHub”1. ربط حساب GitHub الخاص بك
Section titled “1. ربط حساب GitHub الخاص بك”- انتقل إلى تكاملات CrewAI AMP
- ابحث عن GitHub في قسم تكاملات المصادقة
- انقر على Connect وأكمل عملية OAuth
- امنح الصلاحيات اللازمة لإدارة المستودعات والمشكلات
- انسخ رمز المؤسسة من إعدادات التكامل
2. تثبيت الحزمة المطلوبة
Section titled “2. تثبيت الحزمة المطلوبة”uv add crewai-tools3. إعداد متغير البيئة
Section titled “3. إعداد متغير البيئة”export CREWAI_PLATFORM_INTEGRATION_TOKEN="your_enterprise_token"أو أضفه إلى ملف .env:
CREWAI_PLATFORM_INTEGRATION_TOKEN=your_enterprise_tokenالإجراءات المتاحة
Section titled “الإجراءات المتاحة”github/create_issue
الوصف: إنشاء مشكلة في GitHub.
المعاملات:
owner(string, مطلوب): المالك - حدد اسم مالك الحساب للمستودع المرتبط بهذه المشكلة. (مثال: “abc”).repo(string, مطلوب): المستودع - حدد اسم المستودع المرتبط بهذه المشكلة.title(string, مطلوب): عنوان المشكلة - حدد عنوان المشكلة المراد إنشاؤها.body(string, اختياري): محتوى المشكلة - حدد محتوى نص المشكلة المراد إنشاؤها.assignees(string, اختياري): المكلّفون - حدد اسم (أسماء) تسجيل الدخول في GitHub للمكلّفين كمصفوفة من السلاسل النصية لهذه المشكلة. (مثال:["octocat"]).
github/update_issue
الوصف: تحديث مشكلة في GitHub.
المعاملات:
owner(string, مطلوب): المالك - حدد اسم مالك الحساب للمستودع المرتبط بهذه المشكلة. (مثال: “abc”).repo(string, مطلوب): المستودع - حدد اسم المستودع المرتبط بهذه المشكلة.issue_number(string, مطلوب): رقم المشكلة - حدد رقم المشكلة المراد تحديثها.title(string, مطلوب): عنوان المشكلة - حدد عنوان المشكلة المراد تحديثها.body(string, اختياري): محتوى المشكلة - حدد محتوى نص المشكلة المراد تحديثها.assignees(string, اختياري): المكلّفون - حدد اسم (أسماء) تسجيل الدخول في GitHub للمكلّفين كمصفوفة من السلاسل النصية لهذه المشكلة. (مثال:["octocat"]).state(string, اختياري): الحالة - حدد الحالة المحدّثة للمشكلة.- الخيارات:
open,closed
- الخيارات:
github/get_issue_by_number
الوصف: الحصول على مشكلة بواسطة الرقم في GitHub.
المعاملات:
owner(string, مطلوب): المالك - حدد اسم مالك الحساب للمستودع المرتبط بهذه المشكلة. (مثال: “abc”).repo(string, مطلوب): المستودع - حدد اسم المستودع المرتبط بهذه المشكلة.issue_number(string, مطلوب): رقم المشكلة - حدد رقم المشكلة المراد جلبها.
github/lock_issue
الوصف: قفل مشكلة في GitHub.
المعاملات:
owner(string, مطلوب): المالك - حدد اسم مالك الحساب للمستودع المرتبط بهذه المشكلة. (مثال: “abc”).repo(string, مطلوب): المستودع - حدد اسم المستودع المرتبط بهذه المشكلة.issue_number(string, مطلوب): رقم المشكلة - حدد رقم المشكلة المراد قفلها.lock_reason(string, مطلوب): سبب القفل - حدد سبب قفل محادثة المشكلة أو طلب السحب.- الخيارات:
off-topic,too heated,resolved,spam
- الخيارات:
github/search_issue
الوصف: البحث عن المشكلات في GitHub.
المعاملات:
owner(string, مطلوب): المالك - حدد اسم مالك الحساب للمستودع المرتبط بهذه المشكلة. (مثال: “abc”).repo(string, مطلوب): المستودع - حدد اسم المستودع المرتبط بهذه المشكلة.filter(object, مطلوب): فلتر بصيغة التعبير العادي المنفصل - OR لمجموعات AND من شروط فردية.الحقول المتاحة:{"operator": "OR","conditions": [{"operator": "AND","conditions": [{"field": "assignee","operator": "$stringExactlyMatches","value": "octocat"}]}]}assignee,creator,mentioned,labels
github/create_release
الوصف: إنشاء إصدار في GitHub.
المعاملات:
owner(string, مطلوب): المالك - حدد اسم مالك الحساب للمستودع المرتبط بهذا الإصدار. (مثال: “abc”).repo(string, مطلوب): المستودع - حدد اسم المستودع المرتبط بهذا الإصدار.tag_name(string, مطلوب): الاسم - حدد اسم وسم الإصدار المراد إنشاؤه. (مثال: “v1.0.0”).target_commitish(string, اختياري): الهدف - حدد هدف الإصدار. يمكن أن يكون اسم فرع أو SHA لعملية إيداع. الافتراضي هو الفرع الرئيسي. (مثال: “master”).body(string, اختياري): المحتوى - حدد وصفاً لهذا الإصدار.draft(string, اختياري): مسودة - حدد ما إذا كان الإصدار المُنشأ يجب أن يكون مسودة (غير منشور).- الخيارات:
true,false
- الخيارات:
prerelease(string, اختياري): إصدار تجريبي - حدد ما إذا كان الإصدار المُنشأ يجب أن يكون إصداراً تجريبياً.- الخيارات:
true,false
- الخيارات:
discussion_category_name(string, اختياري): اسم فئة المناقشة - إذا حُدد، يتم إنشاء مناقشة من الفئة المحددة وربطها بالإصدار.generate_release_notes(string, اختياري): ملاحظات الإصدار - حدد ما إذا كان يجب إنشاء ملاحظات الإصدار تلقائياً.- الخيارات:
true,false
- الخيارات:
github/update_release
الوصف: تحديث إصدار في GitHub.
المعاملات:
owner(string, مطلوب): المالك - حدد اسم مالك الحساب للمستودع المرتبط بهذا الإصدار. (مثال: “abc”).repo(string, مطلوب): المستودع - حدد اسم المستودع المرتبط بهذا الإصدار.id(string, مطلوب): معرّف الإصدار - حدد معرّف الإصدار المراد تحديثه.tag_name(string, اختياري): الاسم - حدد اسم وسم الإصدار المراد تحديثه. (مثال: “v1.0.0”).target_commitish(string, اختياري): الهدف - حدد هدف الإصدار. يمكن أن يكون اسم فرع أو SHA لعملية إيداع. الافتراضي هو الفرع الرئيسي. (مثال: “master”).body(string, اختياري): المحتوى - حدد وصفاً لهذا الإصدار.draft(string, اختياري): مسودة - حدد ما إذا كان الإصدار يجب أن يكون مسودة (غير منشور).- الخيارات:
true,false
- الخيارات:
prerelease(string, اختياري): إصدار تجريبي - حدد ما إذا كان الإصدار يجب أن يكون إصداراً تجريبياً.- الخيارات:
true,false
- الخيارات:
discussion_category_name(string, اختياري): اسم فئة المناقشة - إذا حُدد، يتم إنشاء مناقشة من الفئة المحددة وربطها بالإصدار.generate_release_notes(string, اختياري): ملاحظات الإصدار - حدد ما إذا كان يجب إنشاء ملاحظات الإصدار تلقائياً.- الخيارات:
true,false
- الخيارات:
github/get_release_by_id
الوصف: الحصول على إصدار بواسطة المعرّف في GitHub.
المعاملات:
owner(string, مطلوب): المالك - حدد اسم مالك الحساب للمستودع المرتبط بهذا الإصدار. (مثال: “abc”).repo(string, مطلوب): المستودع - حدد اسم المستودع المرتبط بهذا الإصدار.id(string, مطلوب): معرّف الإصدار - حدد معرّف الإصدار المراد جلبه.
github/get_release_by_tag_name
الوصف: الحصول على إصدار بواسطة اسم الوسم في GitHub.
المعاملات:
owner(string, مطلوب): المالك - حدد اسم مالك الحساب للمستودع المرتبط بهذا الإصدار. (مثال: “abc”).repo(string, مطلوب): المستودع - حدد اسم المستودع المرتبط بهذا الإصدار.tag_name(string, مطلوب): الاسم - حدد وسم الإصدار المراد جلبه. (مثال: “v1.0.0”).
github/delete_release
الوصف: حذف إصدار في GitHub.
المعاملات:
owner(string, مطلوب): المالك - حدد اسم مالك الحساب للمستودع المرتبط بهذا الإصدار. (مثال: “abc”).repo(string, مطلوب): المستودع - حدد اسم المستودع المرتبط بهذا الإصدار.id(string, مطلوب): معرّف الإصدار - حدد معرّف الإصدار المراد حذفه.
أمثلة الاستخدام
Section titled “أمثلة الاستخدام”إعداد Agent أساسي لـ GitHub
Section titled “إعداد Agent أساسي لـ GitHub”from crewai import Agent, Task, Crewfrom crewai import Agent, Task, Crew
# Create an agent with Github capabilitiesgithub_agent = Agent( role="Repository Manager", goal="Manage GitHub repositories, issues, and releases efficiently", backstory="An AI assistant specialized in repository management and issue tracking.", apps=['github'] # All Github actions will be available)
# Task to create a new issuecreate_issue_task = Task( description="Create a bug report issue for the login functionality in the main repository", agent=github_agent, expected_output="Issue created successfully with issue number")
# Run the taskcrew = Crew( agents=[github_agent], tasks=[create_issue_task])
crew.kickoff()تصفية أدوات GitHub محددة
Section titled “تصفية أدوات GitHub محددة”issue_manager = Agent( role="Issue Manager", goal="Create and manage GitHub issues efficiently", backstory="An AI assistant that focuses on issue tracking and management.", apps=['github/create_issue'])
# Task to manage issue workflowissue_workflow = Task( description="Create a feature request issue and assign it to the development team", agent=issue_manager, expected_output="Feature request issue created and assigned successfully")
crew = Crew( agents=[issue_manager], tasks=[issue_workflow])
crew.kickoff()إدارة الإصدارات
Section titled “إدارة الإصدارات”from crewai import Agent, Task, Crew
release_manager = Agent( role="Release Manager", goal="Manage software releases and versioning", backstory="An experienced release manager who handles version control and release processes.", apps=['github'])
# Task to create a new releaserelease_task = Task( description=""" Create a new release v2.1.0 for the project with: - Auto-generated release notes - Target the main branch - Include a description of new features and bug fixes """, agent=release_manager, expected_output="Release v2.1.0 created successfully with release notes")
crew = Crew( agents=[release_manager], tasks=[release_task])
crew.kickoff()تتبع المشكلات وإدارتها
Section titled “تتبع المشكلات وإدارتها”from crewai import Agent, Task, Crew
project_coordinator = Agent( role="Project Coordinator", goal="Track and coordinate project issues and development progress", backstory="An AI assistant that helps coordinate development work and track project progress.", apps=['github'])
# Complex task involving multiple GitHub operationscoordination_task = Task( description=""" 1. Search for all open issues assigned to the current milestone 2. Identify overdue issues and update their priority labels 3. Create a weekly progress report issue 4. Lock resolved issues that have been inactive for 30 days """, agent=project_coordinator, expected_output="Project coordination completed with progress report and issue management")
crew = Crew( agents=[project_coordinator], tasks=[coordination_task])
crew.kickoff()الحصول على المساعدة
Section titled “الحصول على المساعدة”تحتاج مساعدة؟
تواصل مع فريق الدعم للحصول على المساعدة في إعداد تكامل GitHub أو استكشاف الأخطاء وإصلاحها.