تخطَّ إلى المحتوى

تكامل GitHub

مكّن وكلاءك من إدارة المستودعات والمشكلات والإصدارات عبر GitHub. أنشئ المشكلات وحدّثها، وأدر الإصدارات، وتتبع تطور المشاريع، وبسّط سير عمل تطوير البرمجيات باستخدام الأتمتة المدعومة بالذكاء الاصطناعي.

قبل استخدام تكامل GitHub، تأكد من توفر ما يلي:

  • حساب CrewAI AMP مع اشتراك فعّال
  • حساب GitHub بصلاحيات المستودع المناسبة
  • ربط حساب GitHub الخاص بك عبر صفحة التكاملات
  1. انتقل إلى تكاملات CrewAI AMP
  2. ابحث عن GitHub في قسم تكاملات المصادقة
  3. انقر على Connect وأكمل عملية OAuth
  4. امنح الصلاحيات اللازمة لإدارة المستودعات والمشكلات
  5. انسخ رمز المؤسسة من إعدادات التكامل

2. تثبيت الحزمة المطلوبة

Section titled “2. تثبيت الحزمة المطلوبة”
Terminal window
uv add crewai-tools
Terminal window
export CREWAI_PLATFORM_INTEGRATION_TOKEN="your_enterprise_token"

أو أضفه إلى ملف .env:

CREWAI_PLATFORM_INTEGRATION_TOKEN=your_enterprise_token
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, مطلوب): معرّف الإصدار - حدد معرّف الإصدار المراد حذفه.
from crewai import Agent, Task, Crew
from crewai import Agent, Task, Crew
# Create an agent with Github capabilities
github_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 issue
create_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 task
crew = Crew(
agents=[github_agent],
tasks=[create_issue_task]
)
crew.kickoff()
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 workflow
issue_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()
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 release
release_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 operations
coordination_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()

تحتاج مساعدة؟

تواصل مع فريق الدعم للحصول على المساعدة في إعداد تكامل GitHub أو استكشاف الأخطاء وإصلاحها.