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

A atualização por lote permite-lhe aplicar planos de modernização consistentes em múltiplos repositórios simultaneamente. Este artigo mostra-lhe como atualizar múltiplas aplicações de forma eficiente à escala empresarial.

Ao usar a atualização em lote, pode fazer o seguinte:

  • Atualize várias aplicações simultaneamente usando o mesmo destino de atualização.
  • Aplique padrões consistentes usando padrões de atualização semelhantes entre aplicações.
  • Aproveite a execução paralela ao delegar a Agentes de Cloud Coding.

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

  • Execução consistente:

    • Abordagem padronizada: Aplicar os mesmos padrões de modernização em todos os repositórios.
    • Redução da variabilidade: Garantir caminhos de atualização consistentes para aplicações semelhantes.
    • Estratégias reutilizáveis: Utilize competências específicas da organização em várias aplicações.
  • Escala e eficiência:

    • Processamento paralelo: Use Agentes de Cloud Coding para processar múltiplos repositórios simultaneamente.
    • Fluxos de trabalho automatizados: Integrar com pipelines CI/CD para modernização agendada.
    • Poupança de tempo: Reduza o tempo total de modernização de semanas para horas.

Pré-requisitos

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

Importante

Todos os repositórios numa atualização em lote devem usar a mesma linguagem de programação. Se um repositório usar uma linguagem diferente, a atualização por lote marca o repositório como falhado e ignora-o.

Configurar repositórios

O agente de modernização suporta várias formas de especificar os repositórios que pretende atualizar:

  • Pasta atual: Faça um upgrade do projeto no seu diretório de trabalho atual.
  • Entrada manual: Introduza diretamente caminhos de diretórios locais ou URLs Git remotos.
  • Ficheiro de configuração do repositório: Use um ficheiro de configuração JSON que liste todos os repositórios.

Ficheiro de configuração do repositório

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

Sugestão

Para repositórios de exemplo, faça primeiro um fork e certifique-se de que tem permissão de administrador para delegar o trabalho aos Agentes de Programação na Nuvem.

Formato simples (array 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 ramais 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 suporta os seguintes campos:

Campo Descrição Obrigatório
name Um nome amigável para o repositório (usado em relatórios e dashboards). Sim
url URL de clonagem do Git nos formatos HTTPS ou SSH. Um de url ou path
path Caminho de diretório local absoluto. Um de url ou path
branch Faz um ramo para verificar depois da clonagem. No
description Descrição legível para humanos. No

Sugestão

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

O agente de modernização deteta automaticamente o ficheiro repos.json em .github/modernize/repos.json quando seleciona De um ficheiro de configuração em modo interativo. Também pode fornecer um caminho personalizado.

Escolha o seu modo de execução

A atualização em lote suporta dois modos de execução e dois métodos de interação:

Modos de execução

Execução local

  • Ideal para: Testes, conjuntos mais pequenos de repositórios (1-5 repositórios), ou quando preferes controlo local.
  • Como funciona: Processa repositórios sequencialmente na sua máquina local.
  • Configuração necessária: Nenhuma além dos pré-requisitos básicos.
  • Suporta: Tanto repositórios Git URL como caminhos locais.

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

  • Melhor para: operações em escala empresarial, grandes portfólios (5+ repositórios) ou processamento paralelo.
  • Como funciona: Submete tarefas a GitHub Cloud Coding Agents para execução paralela na cloud.
  • Configuração necessária: configuração do servidor MCP em cada repositório (configurada durante a configuração).
  • Apoios: Apenas repositórios com URLs do GitHub (github.com). Caminhos locais e fornecedores que não sejam GitHub não são suportados.

Importante

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

Sugestão

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 comandos.
  • É ideal para utilizadores iniciantes ou quando queres rever opções.
  • Suporta execução local e na cloud.

Modo não interativo (CLI/headless)

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

Observação

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

  • modernize → selecionar Upgrade (interativo, local)
  • modernize → selecionar Atualizar → Delegar para Agentes Cloud (interativo, cloud)
  • modernize upgrade "Java 21" --source ./repos.json (não interativo, local)
  • modernize upgrade "Java 21" --source ./repos.json --delegate cloud (não interativo, cloud)

Como funciona a atualização por lote

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

  1. Deteção de linguagem: Detete 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 seu pedido ou utiliza as versões mais recentes do LTS.
  3. Execução: Aplica a atualização a cada repositório.
  4. Validação: Constrói e valida alterações para cada repositório.

Executar a atualização por lote

Depois de configurares os teus repositórios e escolheres um modo de execução, inicia 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 ecrã do Modernize CLI que mostra o menu principal com a opção Upgrade no terminal.

  3. Escolha como especificar os seus repositórios-alvo. Selecione De um ficheiro de configuração para usar um repos.json ficheiro.

    Captura de ecrã do Modernize CLI que mostra a seleção do tipo de origem no terminal.

    Sugestão

    Também pode selecionar Introdução Manual para introduzir caminhos locais ou URLs Git remotos diretamente, ou pasta atual para atualizar o projeto no seu diretório atual.

  4. Se o repos.json ficheiro for detetado na localização predefinida, o agente preenche-o automaticamente. Caso contrário, introduza o caminho para o seu ficheiro de configuração e pressione Enter.

  5. Todos os repositórios são selecionados por padrão. Desmarque quaisquer repositórios que queira saltar e depois pressione Enter para confirmar a sua seleção.

    • Use as setas para navegar e pressione Espaço para alternar repositórios individuais.

    Captura de ecrã da CLI Modernize que mostra a lista de repositórios Choose no terminal.

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

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

  7. Insira o prompt de alvo 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 no seu pedido.
    • Aplica o plano a cada repositório sequencialmente.
    • Constrói e valida cada repositório após alterações.
    • Apresenta o progresso e o resumo de cada repositório.

    Captura de ecrã do Modernize CLI que mostra o progresso da atualização de cada repositório no terminal.

Modo interativo (delegação a Agentes de Codificação na Nuvem)

Pré-requisitos: Configurar o servidor MCP

Antes de executar a atualização, configure o GitHub Copilot Modernization MCP Server em cada repositório.

Para Java aplicações, adicione esta configuração na secção Cloud Coding Agent das definições do seu repositório:

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

Captura de ecrã de GitHub que mostra o painel de definições do agente de codificação do repositório com a secção de configuração MCP destacada.

Passos

  1. Execute o agente de modernização:

    modernize
    
  2. Selecione Atualizar no menu principal.

    Captura de ecrã do Modernize CLI que mostra o menu principal com a opção Upgrade no terminal.

  3. Escolha como especificar os seus repositórios-alvo. Selecione A partir de um ficheiro de configuração.

    Captura de ecrã do Modernize CLI que mostra a seleção do tipo de origem no terminal.

  4. Se o repos.json ficheiro for detetado na localização predefinida, o agente preenche-o automaticamente. Caso contrário, introduza o caminho para o seu ficheiro de configuração e pressione Enter.

  5. Todos os repositórios são selecionados por padrão. Desmarque quaisquer repositórios que queira saltar e depois pressione Enter para confirmar a sua seleção. Use as setas para navegar e pressione Espaço para alternar repositórios individuais.

    Captura de ecrã do Modernize CLI que mostra a lista de repositórios no terminal.

  6. Escolhe o modo de execução. Selecione Delegar para Agentes na Nuvem.

    Captura de ecrã do Modernize CLI que mostra a opção de menu Delegar para os Agentes de Cloud Coding no terminal.

  7. Introduza o prompt de alvo 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.

    • Submete uma tarefa de Cloud Coding Agent para cada repositório.

    • Executa trabalhos de forma independente em paralelo na cloud.

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

      Captura de ecrã do Modernize CLI que mostra o progresso da delegação de atualizações aos Cloud Coding Agents no terminal.

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

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

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

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

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

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

Modo não interativo (CLI)

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

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

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

Atualize múltiplos repositórios especificando diretamente as fontes:

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

Atualize usando Cloud Coding Agents:

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

Observação

Para execução headless em lote e mais opções de CLI, consulte a secção configuração multirrepositorio na referência de comandos CLI.

Analisar resultados

Quando a atualização em lote terminar:

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

  2. Revise as alterações individuais dos repositórios:

    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"
    

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

Problemas comuns

Erros de acesso ao repositório:

  • Verifique GitHub autenticação usando gh auth status.
  • Certifique-se de que tem acesso a todos os repositórios em repos.json.

Erros de incompatibilidade linguística:

  • Certifique-se de que todos os repositórios em repos.json usam a mesma linguagem (Java ou .NET).
  • Crie operações em lote separadas para diferentes línguas.

Falhas de clones:

  • Verifique se os repos.json URLs dos repositórios estão corretos e acessíveis.
  • Certifique-se de que tem as permissões de acesso adequadas a todos os repositórios.
  • Verifique a conectividade de rede e as definições da VPN.

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

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

Falhas individuais de repositórios:

  • O processo em lote continua mesmo que repositórios individuais falhem.
  • Revise o relatório agregado para identificar repositórios falhados.
  • Verifique os registos de erro para mensagens de erro específicas.
  • Retentar individualmente os repositórios que falharam.

Falhas do Agente de Codificação na Nuvem:

  • Verifique as permissões do GitHub Actions e os limites de quotas.
  • Para o .NET Framework, certifique-se de que a configuração do Windows Runner está corretamente definida.

Passos seguintes

Depois de completar a atualização em lote, pode:

Continue a melhorar:

Saiba mais:

Fornecer comentários

Valorizamos a sua opinião! Se tiveres algum feedback sobre a atualização por lotes ou o agente Modernization, cria um problema no repositório github-copilot-appmod ou usa o formulário de feedback de modernização GitHub Copilot.