Compartilhar via


Atualização em lote com o agente de modernização do GitHub Copilot

A atualização em lote permite aplicar planos de modernização consistentes em vários repositórios simultaneamente. Este artigo mostra como atualizar vários aplicativos com eficiência em escala empresarial.

Usando a atualização em lote, você pode:

  • Atualize vários aplicativos simultaneamente usando o mesmo destino de atualização.
  • Aplique padrões consistentes usando padrões de atualização semelhantes entre aplicativos.
  • Aproveite a execução paralela ao delegar aos Agentes de Codificação na Nuvem.

A atualização em lote oferece os seguintes benefícios:

  • Execução consistente:

    • Abordagem padronizada: aplique os mesmos padrões de modernização em todos os repositórios.
    • Variabilidade reduzida: garanta caminhos de atualização consistentes para aplicativos semelhantes.
    • Estratégias reutilizáveis: use habilidades específicas da organização em diferentes aplicativos.
  • Escala e eficiência:

    • Processamento paralelo: use agentes de codificação de nuvem para processar vários repositórios simultaneamente.
    • Fluxos de trabalho automatizados: integre-se aos pipelines de CI/CD para modernização agendada.
    • Economia de tempo: reduza o tempo total de modernização de semanas para horas.

Pré-requisitos

  • Modernizar a CLI.
  • Uma avaliação em lote concluída (recomendada, mas não necessária).
  • Todos os repositórios usam a mesma linguagem de programação (Java ou .NET).
  • Acesso a todos os repositórios que você deseja atualizar.
  • Autenticação do GitHub configurada (gh auth login).

Importante

Todos os repositórios em uma atualização em lote devem usar a mesma linguagem de programação. Se um repositório usar um idioma diferente, a atualização em lote marcará o repositório como com falha e o ignorará.

Configurar repositórios

Para habilitar a atualização em lote, crie um .github/modernize/repos.json arquivo no diretório de trabalho que lista todos os repositórios que você deseja atualizar.

Dica

Para repositórios de exemplo, bifurque-os primeiro e verifique se você tem permissão de administrador para delegar o trabalho aos Agentes de Codificação na Nuvem.

[
  {
    "name": "PhotoAlbum-Java",
    "url": "https://github.com/Azure-Samples/PhotoAlbum-Java.git"
  },
  {
    "name": "ZavaSocialFrontEnd",
    "url": "https://github.com/Azure-Samples/ZavaSocialFrontEnd"
  }
]

Configuração do repositório

Cada entrada requer:

  • nome: um nome amigável para o repositório (usado em relatórios e dashboards).
  • url: A URL do clone do Git (formato HTTPS).

Dica

Você pode incluir repositórios de diferentes organizações e usar diferentes métodos de autenticação, desde que tenha acesso.

Local do arquivo

Você deve colocar o arquivo repos.json em .github/modernize/repos.json.

O agente de modernização detecta automaticamente esse arquivo ao executar operações em lote.

Escolha o modo de execução

A atualização em lote dá suporte a dois modos de execução e dois métodos de interação:

Modos de execução

Execução local

  • Melhor para: teste, conjuntos menores de repositórios (1 a 5 repositórios) ou quando você preferir o controle local.
  • Como funciona: processa repositórios sequencialmente em seu computador local.
  • Configuração necessária: nenhuma além dos pré-requisitos básicos.

Delegação do Agente de Codificação em Nuvem

  • Melhor para: operações em nível empresarial, portfólios grandes (mais de 5 repositórios) ou processamento paralelo.
  • Como funciona: envia tarefas aos Agentes de Codificação de Nuvem do GitHub para execução paralela na nuvem.
  • Configuração necessária: configuração do servidor MCP em cada repositório (configurado durante a instalação).

Dica

Ao processar repositórios em paralelo, a delegação do Cloud Coding Agent pode reduzir o tempo total de modernização de horas para minutos.

Métodos de interação

Modo interativo (TUI)

  • Experiência guiada com menus e indicadores.
  • Melhor para usuários iniciantes ou quando você deseja examinar as opções.
  • Dá suporte à execução local e na nuvem.

Modo não interativo (CLI/sem interface gráfica)

  • Baseado em linha de comando, totalmente automatizado.
  • Melhor para pipelines de CI/CD e automação.
  • Suporta execução local e na nuvem com o flag --delegate cloud.

Observação

Você pode combinar qualquer modo de execução com qualquer método de interação. Por exemplo:

  • modernize (interativo, local)
  • modernize → selecionar Agentes de Codificação de Nuvem (interativo, nuvem)
  • modernize upgrade "Java 21" (não interativo, local)
  • modernize upgrade "Java 21" --delegate cloud (não interativo, nuvem)

Como funciona a atualização em lote

O fluxo de trabalho de atualização em lote:

  1. Detecção de idioma: detecta automaticamente o idioma do projeto (Java ou .NET) no primeiro repositório.
  2. Criação de plano: cria um plano de atualização com base no prompt ou usa as versões mais recentes do LTS.
  3. Execução: aplica a atualização a cada repositório.
  4. Validação: compila e valida as alterações para cada repositório.

Executar a atualização em lote

Depois de configurar seus repositórios e escolher um modo de execução, inicie a atualização em lote.

Modo interativo (atualizar localmente)

  1. Execute o agente de modernização:

    modernize
    
  2. O agente detecta o repos.json arquivo e exibe a lista de repositórios:

    Captura de tela da CLI de Modernização que mostra a lista Escolher repositórios no terminal.

  3. Selecione repositórios para atualizar e pressione Enter para confirmar sua seleção.

    • Imprensa Ctrl+A para selecionar todos os repositórios.
    • Ou use teclas de direção para navegar e pressionar Enter para selecionar repositórios individuais.
  4. Selecione 2. Atualização no menu principal.

    Captura de tela da CLI de Modernização que mostra a opção de menu Atualizar Runtime &Framework no terminal.

  5. Para executar a atualização, selecione 1. Atualize localmente.

    Captura de tela do Modernize CLI que mostra a opção de menu Atualizar localmente no terminal.

  6. O agente automaticamente:

    • Cria um plano de atualização com base em sua solicitação.
    • Aplica o plano a cada repositório sequencialmente.
    • Compila e valida cada repositório após as alterações.
    • Exibe o progresso e o resumo de cada repositório.

    Captura de tela da CLI de Modernização que mostra o progresso da atualização para cada repositório no terminal.

Modo interativo (delegando a agentes de codificação na nuvem)

Pré-requisitos: configurar o servidor MCP

Antes de executar a atualização, configure o Servidor MCP de Modernização do GitHub Copilot em cada repositório.

Para aplicativos Java, adicione essa configuração na seção Cloud Coding Agent das configurações do repositório:

{
  "mcpServers": {
    "app-modernization": {
      "type": "local",
      "command": "npx",
      "tools": [
        "*"
      ],
      "args": [
        "-y",
        "@microsoft/github-copilot-app-modernization-mcp-server"
      ]
    }
  }
}

Captura de tela do GitHub que mostra o painel de configurações do agente de codificação do repositório com a seção de configuração do MCP realçada.

Steps

  1. Execute o agente de modernização:

    modernize
    
  2. O agente detecta o repos.json arquivo e exibe a lista de repositórios:

    Captura de tela da CLI de Modernização que mostra a lista de repositórios no terminal.

  3. Selecione repositórios para atualizar e pressione Enter para confirmar sua seleção.

    • Imprensa Ctrl+A para selecionar todos os repositórios.
    • Ou use teclas de direção para navegar e pressionar Enter para selecionar repositórios individuais.
  4. Selecione 2. Atualização no menu principal.

  5. Para executar a atualização, selecione 2. Delegar aos Agentes de Codificação na Nuvem.

    Captura de tela da CLI de Modernização que mostra a opção de menu Delegar para Agentes de Codificação na Nuvem no terminal.

  6. O agente automaticamente:

    • Cria planos de atualização para cada repositório.

    • Envia uma tarefa do Cloud Coding Agent para cada repositório.

    • Executa trabalhos de forma independente em paralelo na nuvem.

    • Exibe IDs de trabalho e URLs de PR para cada repositório.

      Captura de tela da CLI de Modernização que mostra o progresso da delegação de atualizações para agentes de codificação de nuvem no terminal.

    • Delega tarefas ao AgentHQ para execução paralela.

      Captura de tela do GitHub que mostra o painel Agentes com as tarefas de atualização delegadas ao AgentHQ.

    • Acompanha o progresso de cada tarefa individual em tempo real.

      Captura de tela do GitHub que mostra o painel Agentes com acompanhamento de progresso para tarefas individuais de atualização do Cloud Coding Agent.

    • Exibe o resumo da atualização para cada tarefa concluída.

      Captura de tela do GitHub que mostra o painel Agentes com o resumo de atualização para tarefas individuais do Cloud Coding Agent.

CLI (modo não interativo)

Para automação e integração de CI/CD, use o modernize upgrade comando:

Atualizar localmente:

modernize upgrade "Java 21"

Atualizar usando agentes de codificação de nuvem:

modernize upgrade "Java 21" --delegate cloud

O comando detecta automaticamente o repos.json arquivo e processa todos os repositórios.

Observação

Para obter a execução sem cabeça em lote e mais opções da CLI, consulte a seção de configuração de vários repositórios na referência de comandos da CLI.

Analisar resultados

Quando a atualização em lote for concluída:

  1. Verifique o relatório agregado exibido no terminal.

  2. Examine as alterações individuais do repositório:

    cd <repository-name>
    git status
    git diff
    
  3. Crie solicitações de pull para atualizações bem-sucedidas:

    cd <repository-name>
    gh pr create --title "Upgrade to Java 21" --body "Automated upgrade by modernization agent"
    

Solução de problemas de atualizações em lote

Problemas comuns

Erros de acesso ao repositório:

  • Verifique a autenticação do GitHub usando gh auth status.
  • Verifique se você tem acesso a todos os repositórios em repos.json.

Erros de incompatibilidade de linguagem:

  • Verifique se todos os repositórios em repos.json usam o mesmo idioma (Java ou .NET).
  • Crie operações em lote separadas para idiomas diferentes.

Falhas de clonagem:

  • Verifique se as URLs do repositório estão corretas repos.json e acessíveis.
  • Verifique se você tem permissões de acesso adequadas para todos os repositórios.
  • Verifique a conectividade de rede e as configurações de VPN.

Falhas de build após a atualização:

  • Examine as mensagens de erro de build no relatório agregado.
  • Verifique se você precisa atualizar outras dependências.
  • Verifique a compatibilidade de bibliotecas de terceiros com a nova versão.

Falhas individuais do repositório:

  • O processo em lote continua mesmo se os repositórios individuais falharem.
  • Examine o relatório agregado para identificar repositórios com falha.
  • Verifique os logs de erros em busca de mensagens de erro específicas.
  • Repetir os repositórios que falharam, um a um.

Falhas do Cloud Coding Agent:

  • Verifique as permissões e os limites de cota do GitHub Actions.
  • Para o .NET Framework, verifique se a configuração do executor do Windows está definida corretamente.

Próximas Etapas 

Depois de concluir a atualização em lote, você pode:

Continue melhorando:

Saiba mais:

Fornecer comentários

Valorizamos sua entrada! Se você tiver algum comentário sobre a atualização em lote ou o agente de modernização, crie um problema no repositório github-copilot-appmod ou use o formulário de comentários de modernização do GitHub Copilot.