Partilhar via


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 no 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

Para permitir a atualização por lote, cria um .github/modernize/repos.json ficheiro no teu diretório de trabalho que liste todos os repositórios que queres atualizar.

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.

[
  {
    "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 exige:

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

Sugestão

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

Localização do ficheiro

Deve colocar o ficheiro repos.json em .github/modernize/repos.json.

O agente de modernização deteta automaticamente este ficheiro ao executar operações em lote.

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.

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 aos 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).

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 (interativo, local)
  • modernize → selecionar Cloud Coding Agents (interativo, cloud)
  • modernize upgrade "Java 21" (não interativo, local)
  • modernize upgrade "Java 21" --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. O agente deteta o repos.json ficheiro e apresenta a lista do repositório:

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

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

    • Imprensa Ctrl+A para selecionar todos os repositórios.
    • Ou usar as setas para navegar e pressionar Enter para selecionar repositórios individuais.
  4. Selecione 2. Atualiza a partir do menu principal.

    Captura de ecrã do Modernize CLI que mostra a opção de menu Atualizar Runtime & Framework no terminal.

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

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

  6. 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 aplicações Java, 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ã do 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. O agente deteta o repos.json ficheiro e apresenta a lista do repositório:

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

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

    • Imprensa Ctrl+A para selecionar todos os repositórios.
    • Ou usar as setas para navegar e pressionar Enter para selecionar repositórios individuais.
  4. Selecione 2. Atualiza a partir do menu principal.

  5. Para executar a atualização, selecione 2. Delegar aos agentes de programação em nuvem.

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

  6. 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ã do 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ã do 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ã do GitHub que mostra o painel de Agentes com o resumo da 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:

modernize upgrade "Java 21"

Atualize usando Cloud Coding Agents:

modernize upgrade "Java 21" --delegate cloud

O comando deteta automaticamente o repos.json ficheiro e processa todos os repositórios.

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 a autenticação no GitHub 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 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 de Ações do GitHub 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 em lote ou o agente de modernização, cria uma questão no repositório github-copilot-appmod ou usa o formulário de feedback de modernização do GitHub Copilot.