--- title: تكامل GitHub description: "إدارة المستودعات والمشكلات مع تكامل GitHub لـ CrewAI." icon: "github" mode: "wide" --- ## نظرة عامة مكّن وكلاءك من إدارة المستودعات والمشكلات والإصدارات عبر GitHub. أنشئ المشكلات وحدّثها، وأدر الإصدارات، وتتبع تطور المشاريع، وبسّط سير عمل تطوير البرمجيات باستخدام الأتمتة المدعومة بالذكاء الاصطناعي. ## المتطلبات الأساسية قبل استخدام تكامل GitHub، تأكد من توفر ما يلي: - حساب [CrewAI AMP](https://app.crewai.com) مع اشتراك فعّال - حساب GitHub بصلاحيات المستودع المناسبة - ربط حساب GitHub الخاص بك عبر [صفحة التكاملات](https://app.crewai.com/crewai_plus/connectors) ## إعداد تكامل GitHub ### 1. ربط حساب GitHub الخاص بك 1. انتقل إلى [تكاملات CrewAI AMP](https://app.crewai.com/crewai_plus/connectors) 2. ابحث عن **GitHub** في قسم تكاملات المصادقة 3. انقر على **Connect** وأكمل عملية OAuth 4. امنح الصلاحيات اللازمة لإدارة المستودعات والمشكلات 5. انسخ رمز المؤسسة من [إعدادات التكامل](https://app.crewai.com/crewai_plus/settings/integrations) ### 2. تثبيت الحزمة المطلوبة ```bash uv add crewai-tools ``` ### 3. إعداد متغير البيئة لاستخدام التكاملات مع `Agent(apps=[])`, يجب تعيين متغير البيئة `CREWAI_PLATFORM_INTEGRATION_TOKEN` برمز المؤسسة الخاص بك. ```bash export CREWAI_PLATFORM_INTEGRATION_TOKEN="your_enterprise_token" ``` أو أضفه إلى ملف `.env`: ``` CREWAI_PLATFORM_INTEGRATION_TOKEN=your_enterprise_token ``` ## الإجراءات المتاحة **الوصف:** إنشاء مشكلة في GitHub. **المعاملات:** - `owner` (string, مطلوب): المالك - حدد اسم مالك الحساب للمستودع المرتبط بهذه المشكلة. (مثال: "abc"). - `repo` (string, مطلوب): المستودع - حدد اسم المستودع المرتبط بهذه المشكلة. - `title` (string, مطلوب): عنوان المشكلة - حدد عنوان المشكلة المراد إنشاؤها. - `body` (string, اختياري): محتوى المشكلة - حدد محتوى نص المشكلة المراد إنشاؤها. - `assignees` (string, اختياري): المكلّفون - حدد اسم (أسماء) تسجيل الدخول في GitHub للمكلّفين كمصفوفة من السلاسل النصية لهذه المشكلة. (مثال: `["octocat"]`). **الوصف:** تحديث مشكلة في GitHub. **المعاملات:** - `owner` (string, مطلوب): المالك - حدد اسم مالك الحساب للمستودع المرتبط بهذه المشكلة. (مثال: "abc"). - `repo` (string, مطلوب): المستودع - حدد اسم المستودع المرتبط بهذه المشكلة. - `issue_number` (string, مطلوب): رقم المشكلة - حدد رقم المشكلة المراد تحديثها. - `title` (string, مطلوب): عنوان المشكلة - حدد عنوان المشكلة المراد تحديثها. - `body` (string, اختياري): محتوى المشكلة - حدد محتوى نص المشكلة المراد تحديثها. - `assignees` (string, اختياري): المكلّفون - حدد اسم (أسماء) تسجيل الدخول في GitHub للمكلّفين كمصفوفة من السلاسل النصية لهذه المشكلة. (مثال: `["octocat"]`). - `state` (string, اختياري): الحالة - حدد الحالة المحدّثة للمشكلة. - الخيارات: `open`, `closed` **الوصف:** الحصول على مشكلة بواسطة الرقم في GitHub. **المعاملات:** - `owner` (string, مطلوب): المالك - حدد اسم مالك الحساب للمستودع المرتبط بهذه المشكلة. (مثال: "abc"). - `repo` (string, مطلوب): المستودع - حدد اسم المستودع المرتبط بهذه المشكلة. - `issue_number` (string, مطلوب): رقم المشكلة - حدد رقم المشكلة المراد جلبها. **الوصف:** قفل مشكلة في GitHub. **المعاملات:** - `owner` (string, مطلوب): المالك - حدد اسم مالك الحساب للمستودع المرتبط بهذه المشكلة. (مثال: "abc"). - `repo` (string, مطلوب): المستودع - حدد اسم المستودع المرتبط بهذه المشكلة. - `issue_number` (string, مطلوب): رقم المشكلة - حدد رقم المشكلة المراد قفلها. - `lock_reason` (string, مطلوب): سبب القفل - حدد سبب قفل محادثة المشكلة أو طلب السحب. - الخيارات: `off-topic`, `too heated`, `resolved`, `spam` **الوصف:** البحث عن المشكلات في GitHub. **المعاملات:** - `owner` (string, مطلوب): المالك - حدد اسم مالك الحساب للمستودع المرتبط بهذه المشكلة. (مثال: "abc"). - `repo` (string, مطلوب): المستودع - حدد اسم المستودع المرتبط بهذه المشكلة. - `filter` (object, مطلوب): فلتر بصيغة التعبير العادي المنفصل - OR لمجموعات AND من شروط فردية. ```json { "operator": "OR", "conditions": [ { "operator": "AND", "conditions": [ { "field": "assignee", "operator": "$stringExactlyMatches", "value": "octocat" } ] } ] } ``` الحقول المتاحة: `assignee`, `creator`, `mentioned`, `labels` **الوصف:** إنشاء إصدار في 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. **المعاملات:** - `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. **المعاملات:** - `owner` (string, مطلوب): المالك - حدد اسم مالك الحساب للمستودع المرتبط بهذا الإصدار. (مثال: "abc"). - `repo` (string, مطلوب): المستودع - حدد اسم المستودع المرتبط بهذا الإصدار. - `id` (string, مطلوب): معرّف الإصدار - حدد معرّف الإصدار المراد جلبه. **الوصف:** الحصول على إصدار بواسطة اسم الوسم في GitHub. **المعاملات:** - `owner` (string, مطلوب): المالك - حدد اسم مالك الحساب للمستودع المرتبط بهذا الإصدار. (مثال: "abc"). - `repo` (string, مطلوب): المستودع - حدد اسم المستودع المرتبط بهذا الإصدار. - `tag_name` (string, مطلوب): الاسم - حدد وسم الإصدار المراد جلبه. (مثال: "v1.0.0"). **الوصف:** حذف إصدار في GitHub. **المعاملات:** - `owner` (string, مطلوب): المالك - حدد اسم مالك الحساب للمستودع المرتبط بهذا الإصدار. (مثال: "abc"). - `repo` (string, مطلوب): المستودع - حدد اسم المستودع المرتبط بهذا الإصدار. - `id` (string, مطلوب): معرّف الإصدار - حدد معرّف الإصدار المراد حذفه. ## أمثلة الاستخدام ### إعداد Agent أساسي لـ GitHub ```python 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() ``` ### تصفية أدوات GitHub محددة ```python 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() ``` ### إدارة الإصدارات ```python 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() ``` ### تتبع المشكلات وإدارتها ```python 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 أو استكشاف الأخطاء وإصلاحها.