Atualização em lote com a ferramenta 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

O agente de modernização dá suporte a várias maneiras de especificar os repositórios que você deseja atualizar:

  • Pasta atual: atualize o projeto no diretório de trabalho atual.
  • Entrada manual: insira caminhos de diretório local ou URLs remotas do Git diretamente.
  • Arquivo de configuração do repositório: use um arquivo de configuração JSON que lista todos os repositórios.

Arquivo de configuração do repositório

Para operações em lotes em vários repositórios, crie um arquivo de configuração JSON para listar todos os repositórios. Por exemplo, crie-o em .github/modernize/repos.json seu diretório de trabalho ou forneça um caminho personalizado.

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.

Formato simples (matriz de repositórios):

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

Formato completo (com ramificação e caminhos locais):

{
  "repos": [
    {
      "name": "PhotoAlbum-Java",
      "url": "https://github.com/Azure-Samples/PhotoAlbum-Java.git",
      "branch": "main"
    },
    {
      "name": "local-project",
      "path": "/absolute/path/to/project"
    }
  ]
}

Cada entrada de repositório dá suporte aos seguintes campos:

Campo Descrição Obrigatório
name Um nome amigável para o repositório (usado em relatórios e dashboards). Sim
url Git clone URL no formato HTTPS ou no formato SSH. Um de url ou path
path Caminho absoluto do diretório local. Um de url ou path
branch Branch para verificar após clonagem. No
description Descrição legível por humanos. No

Dica

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

O agente de modernização detecta automaticamente o arquivo repos.json em .github/modernize/repos.json quando você seleciona De um arquivo de configuração no modo interativo. Você também pode fornecer um caminho personalizado.

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.
  • Suportes: URLs Git e repositórios de caminho local.

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 para GitHub Cloud Coding Agents para execução paralela na nuvem.
  • Configuração necessária: configuração do servidor MCP em cada repositório (configurado durante a instalação).
  • Supports: somente repositórios com URLs GitHub (github.com). Não há suporte para provedores que não sejam do GitHub nem para caminhos locais.

Importante

A delegação do Cloud Coding Agent requer que os repositórios tenham URLs de repositório do GitHub (github.com). Repositórios especificados com caminhos locais ou hospedados em provedores não GitHub (GitLab, Azure DevOps) são ignorados durante a delegação de nuvem. Use a execução local para esses repositórios.

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 → selecione Atualizar (interativo, local)
  • modernize → selecione Atualizar → Delegar aos Agentes de Nuvem (interativo, nuvem)
  • modernize upgrade "Java 21" --source ./repos.json (não interativo, local)
  • modernize upgrade "Java 21" --source ./repos.json --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 linguagem: Detecta automaticamente a linguagem do projeto (Java ou .NET) a partir do 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. Selecione Atualizar no menu principal.

    Captura de tela da CLI de Modernização que mostra o menu principal com a opção Atualizar no terminal.

  3. Escolha como especificar seus repositórios de destino. Selecione De um arquivo de configuração para usar um repos.json arquivo.

    Captura de tela da CLI de Modernização que mostra a seleção do tipo de origem no terminal.

    Dica

    Você também pode selecionar entrada manual para inserir caminhos locais ou URLs remotas do Git diretamente ou pasta atual para atualizar o projeto em seu diretório atual.

  4. Se o repos.json arquivo for detectado no local padrão, o agente o preencherá automaticamente. Caso contrário, insira o caminho para o arquivo de configuração e pressione Enter.

  5. Todos os repositórios são selecionados por padrão. Desmarque todos os repositórios que você deseja ignorar e pressione Enter para confirmar sua seleção.

    • Use teclas de direção para navegar e pressionar Espaço para alternar repositórios individuais.

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

  6. Escolha o modo de execução. Selecione Atualizar localmente.

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

  7. Insira o prompt de destino de atualização (por exemplo, Java 21 ou .NET 10) ou pressione Enter para aceitar o padrão (versão mais recente do LTS).

  8. 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 'coding' do repositório com a seção de configuração do MCP realçada.

Steps

  1. Execute o agente de modernização:

    modernize
    
  2. Selecione Atualizar no menu principal.

    Captura de tela da CLI de Modernização que mostra o menu principal com a opção Atualizar no terminal.

  3. Escolha como especificar seus repositórios de destino. Selecione De um arquivo de configuração.

    Captura de tela da CLI de Modernização que mostra a seleção do tipo de origem no terminal.

  4. Se o repos.json arquivo for detectado no local padrão, o agente o preencherá automaticamente. Caso contrário, insira o caminho para o arquivo de configuração e pressione Enter.

  5. Todos os repositórios são selecionados por padrão. Desmarque todos os repositórios que você deseja ignorar e pressione Enter para confirmar sua seleção. Use teclas de direção para navegar e pressionar Espaço para alternar repositórios individuais.

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

  6. Escolha o modo de execução. Selecione Delegar para Agentes de 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.

  7. Insira o prompt de destino de atualização (por exemplo, Java 21) ou pressione Enter para aceitar o padrão.

  8. 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.

      Screenshot de 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 de Agentes com acompanhamento de progresso para tarefas individuais de atualização do Agente de Codificação na Nuvem.

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

      Captura de tela do GitHub que mostra o painel de Agentes com o resumo de atualização para tarefas individuais do Agente de Codificação em Nuvem (Cloud Coding Agent).

CLI (modo não interativo)

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

Atualize localmente usando um arquivo de configuração do repositório:

modernize upgrade "Java 21" --source .github/modernize/repos.json

Atualize vários repositórios especificando fontes diretamente:

modernize upgrade "Java 21" --source https://github.com/org/repo1 --source https://github.com/org/repo2

Atualizar usando agentes de codificação de nuvem:

modernize upgrade "Java 21" --source .github/modernize/repos.json --delegate cloud

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 GitHub autenticação 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 do GitHub Actions e os limites de cota.
  • Para .NET Framework, verifique se Windows configuração do executor 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, abra um problema no repositório github-copilot-appmod ou use o formulário de feedback de modernização do GitHub Copilot.