Integração com GitHub
Visão Geral
Seção intitulada “Visão Geral”Permita que seus agentes gerenciem repositórios, issues e releases através do GitHub. Crie e atualize issues, gerencie releases, acompanhe o desenvolvimento do projeto e otimize seu fluxo de trabalho de desenvolvimento de software com automação alimentada por IA.
Pré-requisitos
Seção intitulada “Pré-requisitos”Antes de usar a integração do GitHub, assegure-se de ter:
- Uma conta CrewAI AMP com assinatura ativa
- Uma conta GitHub com permissões adequadas no repositório
- Conta do GitHub conectada através da página de Integrações
Configurando a Integração com GitHub
Seção intitulada “Configurando a Integração com GitHub”1. Conecte sua conta GitHub
Seção intitulada “1. Conecte sua conta GitHub”- Acesse Integrações CrewAI AMP
- Encontre GitHub na seção de Integrações de Autenticação
- Clique em Conectar e complete o fluxo OAuth
- Conceda as permissões necessárias para gerenciamento de repositório e issues
- Copie seu Token Enterprise em Configurações de Integração
2. Instale o pacote necessário
Seção intitulada “2. Instale o pacote necessário”uv add crewai-toolsAções Disponíveis
Seção intitulada “Ações Disponíveis”github/create_issue
Descrição: Cria uma issue no GitHub.
Parâmetros:
owner(string, obrigatório): Proprietário - Especifique o nome do proprietário da conta do repositório associado a esta Issue. (exemplo: “abc”).repo(string, obrigatório): Repositório - Especifique o nome do repositório associado a esta Issue.title(string, obrigatório): Título da Issue - Especifique o título da issue a ser criada.body(string, opcional): Corpo da Issue - Especifique o conteúdo do corpo da issue a ser criada.assignees(string, opcional): Responsáveis - Especifique o login dos responsáveis no GitHub como um array de strings para esta issue. (exemplo:["octocat"]).
github/update_issue
Descrição: Atualiza uma issue no GitHub.
Parâmetros:
owner(string, obrigatório): Proprietário - Especifique o nome do proprietário da conta do repositório associado a esta Issue. (exemplo: “abc”).repo(string, obrigatório): Repositório - Especifique o nome do repositório associado a esta Issue.issue_number(string, obrigatório): Número da Issue - Especifique o número da issue a ser atualizada.title(string, obrigatório): Título da Issue - Especifique o título da issue a ser atualizada.body(string, opcional): Corpo da Issue - Especifique o conteúdo do corpo da issue a ser atualizada.assignees(string, opcional): Responsáveis - Especifique o login dos responsáveis no GitHub como um array de strings para esta issue. (exemplo:["octocat"]).state(string, opcional): Estado - Especifique o estado atualizado da issue.- Opções:
open,closed
- Opções:
github/get_issue_by_number
Descrição: Obtém uma issue pelo número no GitHub.
Parâmetros:
owner(string, obrigatório): Proprietário - Especifique o nome do proprietário da conta do repositório associado a esta Issue. (exemplo: “abc”).repo(string, obrigatório): Repositório - Especifique o nome do repositório associado a esta Issue.issue_number(string, obrigatório): Número da Issue - Especifique o número da issue a ser buscada.
github/lock_issue
Descrição: Bloqueia uma issue no GitHub.
Parâmetros:
owner(string, obrigatório): Proprietário - Especifique o nome do proprietário da conta do repositório associado a esta Issue. (exemplo: “abc”).repo(string, obrigatório): Repositório - Especifique o nome do repositório associado a esta Issue.issue_number(string, obrigatório): Número da Issue - Especifique o número da issue a ser bloqueada.lock_reason(string, obrigatório): Motivo do Bloqueio - Especifique um motivo para bloquear a discussão da issue ou pull request.- Opções:
off-topic,too heated,resolved,spam
- Opções:
github/search_issue
Descrição: Busca por issues no GitHub.
Parâmetros:
owner(string, obrigatório): Proprietário - Especifique o nome do proprietário da conta do repositório associado a esta Issue. (exemplo: “abc”).repo(string, obrigatório): Repositório - Especifique o nome do repositório associado a esta Issue.filter(object, obrigatório): Um filtro em forma normal disjuntiva - OU de grupos E de condições simples.Campos disponíveis:{"operator": "OR","conditions": [{"operator": "AND","conditions": [{"field": "assignee","operator": "$stringExactlyMatches","value": "octocat"}]}]}assignee,creator,mentioned,labels
github/create_release
Descrição: Cria um release no GitHub.
Parâmetros:
owner(string, obrigatório): Proprietário - Especifique o nome do proprietário da conta do repositório associado a este Release. (exemplo: “abc”).repo(string, obrigatório): Repositório - Especifique o nome do repositório associado a este Release.tag_name(string, obrigatório): Nome - Especifique o nome da tag do release a ser criada. (exemplo: “v1.0.0”).target_commitish(string, opcional): Destino - Especifique o destino do release. Pode ser o nome de um branch ou o SHA de um commit. Padrão é o branch principal. (exemplo: “master”).body(string, opcional): Descrição - Especifique uma descrição para este release.draft(string, opcional): Rascunho - Especifique se o release criado deve ser um rascunho (não publicado).- Opções:
true,false
- Opções:
prerelease(string, opcional): Pré-lançamento - Especifique se o release criado deve ser um pré-lançamento.- Opções:
true,false
- Opções:
discussion_category_name(string, opcional): Nome da Categoria de Discussão - Se especificado, uma discussão da categoria indicada é criada e vinculada ao release. O valor deve ser uma categoria já existente no repositório.generate_release_notes(string, opcional): Notas de Release - Especifique se o release criado deve criar automaticamente notas de release usando o nome e a descrição fornecidos.- Opções:
true,false
- Opções:
github/update_release
Descrição: Atualiza um release no GitHub.
Parâmetros:
owner(string, obrigatório): Proprietário - Especifique o nome do proprietário da conta do repositório associado a este Release. (exemplo: “abc”).repo(string, obrigatório): Repositório - Especifique o nome do repositório associado a este Release.id(string, obrigatório): ID do Release - Especifique o ID do release a ser atualizado.tag_name(string, opcional): Nome - Especifique o nome da tag do release a ser atualizado. (exemplo: “v1.0.0”).target_commitish(string, opcional): Destino - Especifique o destino do release. Pode ser o nome de um branch ou o SHA de um commit. Padrão é o branch principal. (exemplo: “master”).body(string, opcional): Descrição - Especifique uma descrição para este release.draft(string, opcional): Rascunho - Especifique se o release criado deve ser um rascunho (não publicado).- Opções:
true,false
- Opções:
prerelease(string, opcional): Pré-lançamento - Especifique se o release criado deve ser um pré-lançamento.- Opções:
true,false
- Opções:
discussion_category_name(string, opcional): Nome da Categoria de Discussão - Se especificado, uma discussão da categoria indicada é criada e vinculada ao release. O valor deve ser uma categoria já existente no repositório.generate_release_notes(string, opcional): Notas de Release - Especifique se o release criado deve criar automaticamente notas de release usando o nome e a descrição fornecidos.- Opções:
true,false
- Opções:
github/get_release_by_id
Descrição: Obtém um release por ID no GitHub.
Parâmetros:
owner(string, obrigatório): Proprietário - Especifique o nome do proprietário da conta do repositório associado a este Release. (exemplo: “abc”).repo(string, obrigatório): Repositório - Especifique o nome do repositório associado a este Release.id(string, obrigatório): ID do Release - Especifique o ID do release a ser recuperado.
github/get_release_by_tag_name
Descrição: Obtém um release pelo nome da tag no GitHub.
Parâmetros:
owner(string, obrigatório): Proprietário - Especifique o nome do proprietário da conta do repositório associado a este Release. (exemplo: “abc”).repo(string, obrigatório): Repositório - Especifique o nome do repositório associado a este Release.tag_name(string, obrigatório): Nome - Especifique o nome da tag do release a ser recuperado. (exemplo: “v1.0.0”).
github/delete_release
Descrição: Exclui um release no GitHub.
Parâmetros:
owner(string, obrigatório): Proprietário - Especifique o nome do proprietário da conta do repositório associado a este Release. (exemplo: “abc”).repo(string, obrigatório): Repositório - Especifique o nome do repositório associado a este Release.id(string, obrigatório): ID do Release - Especifique o ID do release a ser excluído.
Exemplos de Uso
Seção intitulada “Exemplos de Uso”Configuração Básica de Agente GitHub
Seção intitulada “Configuração Básica de Agente GitHub”from 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'])
# 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()Filtrando Ferramentas GitHub Específicas
Seção intitulada “Filtrando Ferramentas GitHub Específicas”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'])
# 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()Gerenciamento de Releases
Seção intitulada “Gerenciamento de Releases”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()Acompanhamento e Gerenciamento de Issues
Seção intitulada “Acompanhamento e Gerenciamento de Issues”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()Obtendo Ajuda
Seção intitulada “Obtendo Ajuda”Precisa de Ajuda?
Entre em contato com nossa equipe de suporte para auxílio na configuração ou solução de problemas com a integração do GitHub.