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

A avaliação em lote permite que você analise vários aplicativos simultaneamente, fornecendo uma visão abrangente do cenário de modernização em seus aplicativos. Este artigo orienta você pelo processo de avaliação eficiente de vários repositórios.

A avaliação em lote é especialmente valiosa para o planejamento de migração, pois permite avaliar com eficiência a preparação e os requisitos de vários aplicativos ao mesmo tempo. Usando a avaliação em lote, você pode avaliar repositórios diferentes ao mesmo tempo e obter relatórios detalhados de avaliação para cada aplicativo. Ele produz dois tipos de relatórios para dar suporte ao seu planejamento de migração:

  • Relatório por aplicativo: fornece insights detalhados sobre todos os problemas de modernização identificados no nível do repositório individual.
  • Aggregated report: apresenta uma perspectiva geral de todos os aplicativos avaliados, oferecendo insights resumidos, recomendações sobre serviços Azure, plataformas de destino e caminhos de atualização. Além disso, o relatório agregado inclui atalhos para facilitar o acesso a cada relatório por aplicativo.

A avaliação em lote fornece os seguintes benefícios:

  • Visibilidade entre aplicativos:

    • Relatórios agregados: obtenha uma exibição abrangente entre aplicativos.
    • Análise entre repositórios: identifique padrões e dependências comuns entre aplicativos.
    • Insights de priorização: Entenda quais aplicações precisam de atenção imediata.
  • 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 avaliação agendada.
    • Economia de tempo: reduza o tempo total de avaliação de semanas para horas.

Pré-requisitos

  • Modernizar a CLI.
  • Acesso a todos os repositórios que você deseja avaliar.
  • GitHub autenticação está configurada (gh auth login).

Configurar repositórios

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

  • Pasta atual: avalie o projeto em seu 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.

Certifique-se de que você tenha as permissões corretas para os repositórios ou faça um fork deles.

Formato simples (matriz de repositórios):

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

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

Formato completo com agrupamento de aplicativos (opcional, para relatórios organizados):

Você pode adicionar uma apps[] seção para agrupar repositórios em aplicativos lógicos. Quando os aplicativos são definidos, o relatório agregado organiza os resultados por aplicativo e dá suporte à distribuição de relatórios para destinos externos.

{
  "repos": [
    {
      "name": "PhotoAlbum-Java",
      "url": "https://github.com/Azure-Samples/PhotoAlbum-Java.git",
      "branch": "main"
    },
    {
      "name": "PhotoAlbum",
      "url": "https://github.com/Azure-Samples/PhotoAlbum.git"
    }
  ],
  "apps": [
    {
      "identifier": "photo-app",
      "description": "Photo management application",
      "repos": ["PhotoAlbum-Java"],
      "output": {
        "type": "local",
        "path": "/path/to/reports/photo-app"
      }
    }
  ]
}

Cada entrada de aplicativo dá suporte a:

Campo Descrição Obrigatório
identifier Nome de exibição exclusivo do aplicativo. Sim
description Descrição legível por humanos. No
repos Lista de nomes de repositório que pertencem a este aplicativo. Sim
output Onde distribuir o relatório de avaliação deste aplicativo após ser gerado. No

O output campo dá suporte aos seguintes tipos de distribuição:

Tipo Descrição Campos obrigatórios
local Copie relatórios para um diretório local. path
git Envie relatórios por push para um repositório Git. O formato de URL é https://github.com/org/repo.git#branch:path. url

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.

Executar avaliação em lote

Dois modos de execução estão disponíveis:

  • Execução local: o agente de modernização processa repositórios um após o outro em seu computador local. Esse modo funciona melhor para um conjunto menor de aplicativos ou para testes iniciais. Dá suporte a repositórios de URL do Git e de caminho local.
  • Delegação do Agente de Codificação na Nuvem: o agente de modernização envia tarefas para os Agentes de Codificação na Nuvem do GitHub para processamento paralelo. Esse modo é mais rápido para cenários de vários repositórios.

Importante

A delegação do Cloud Coding Agent requer que os repositórios tenham URLs de repositório do GitHub (github.com). Repositórios de caminho local e provedores não GitHub (GitLab, Azure DevOps) não têm suporte para delegação de nuvem. Use a execução local para esses repositórios.

Dica

Usando a delegação do Cloud Coding Agent, você habilita a execução paralela em todos os repositórios. Essa abordagem reduz significativamente o tempo total de avaliação para grandes portfólios.

Modo interativo (avaliar localmente)

  1. Execute o agente de modernização:

    modernize
    
  2. Selecione Avaliar no menu principal.

    Captura de tela da CLI de Modernização que mostra o menu principal com a opção Avaliar 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 avaliar 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 de repositórios no terminal.

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

    Captura de tela da CLI de Modernização que mostra o menu do modo de avaliação no terminal.

  7. Selecione os domínios de avaliação a serem analisados. Escolha entre atualização do Java e Prontidão para a Nuvem e pressione Enter.

    Captura de tela da CLI de Modernização que mostra a seleção de domínio de avaliação no terminal.

  8. Examine e configure as opções de avaliação. A página de configuração mostra as opções agrupadas por idioma e domínio:

    • Java/GERAL: Cobertura de análise (somente Problemas, Problemas e Tecnologias ou Problemas, Tecnologias & Dependências).
    • Java/JAVA UPGRADE: Runtime de destino (OpenJDK 11, 17 ou 21).
    • Java/CLOUD READINESS: Serviços de Computação de Destino, Sistema Operacional de Destino e Contêinerização.
    • .NET/CLOUD READINESS: Serviços de Computação Alvo.

    Use as teclas de direção para navegar, pressione Enter para alterar um valor ou selecione Continuar para continuar com as configurações atuais.

    Captura de tela da CLI de Modernização que mostra a página de configuração de avaliação no terminal.

    Dica

    Os padrões recomendados funcionam para a maioria dos cenários. Você só precisará alterar essas configurações se tiver requisitos específicos, como direcionar uma versão específica do JDK ou Azure serviço de computação.

  9. Insira o caminho de saída para os resultados da avaliação ou pressione Enter para aceitar o padrão.

  10. O agente automaticamente:

    • Clona repositórios remotos (repositórios de caminho local são usados diretamente).

    • Executa a avaliação em cada repositório um por um.

    • Gera relatórios de avaliação individuais.

      Captura de tela do Modernize CLI que mostra a saída da geração de relatório de avaliação individual no terminal.

    • Cria um relatório agregado.

      Captura de tela da CLI de Modernização que mostra a saída da geração de relatório agregada no terminal.

  11. Quando a avaliação for concluída, o agente abrirá automaticamente o relatório agregado.

    Captura de tela da CLI de Modernização que mostra o conteúdo do relatório agregado.

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

Primeiro, configure os Agentes de Codificação de Nuvem em cada repositório de aplicativos. Para configurar os Agentes de Codificação na Nuvem, bifurque os repositórios de exemplo.

Configuração para aplicativos .NET

Configurar para ser executado em Windows para aplicativos do .NET Framework

Por padrão, o agente de codificação Copilot é executado em um ambiente Ubuntu Linux. Para aplicativos .NET Framework, você precisa de um ambiente Windows. Para habilitá-lo, configure .github/workflows/copilot-setup-steps.yaml no main branch do repositório de aplicativos, conforme mostrado no exemplo a seguir:

# Windows-based Copilot Setup Steps for .NET tasks
# Note: Windows runners have firewall limitations that may affect some network operations
# Use this workflow for .NET projects that require Windows-specific tooling

name: "Copilot Setup Step (Windows)"

on:
  workflow_dispatch:

jobs:
  copilot-setup-steps:
    runs-on: windows-latest
    permissions:
      contents: read
    steps:
      - name: Checkout code
        uses: actions/checkout@v5

Saiba mais em: Personalizando o ambiente de desenvolvimento do Copilot com as etapas de configuração do Copilot

Desabilitar firewall

Desabilite o firewall integrado do agente de codificação Copilot nas configurações de seu repositório, conforme mostrado na imagem a seguir.

Screenshot de GitHub que mostra as configurações do repositório com a configuração Habilitar firewall definida como Off.

Configuração para aplicativos Java

Configure o Servidor de Modernização MCP do GitHub Copilot na seção Cloud Coding Agent das configurações do repositório, conforme mostrado no exemplo a seguir:

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

Captura de tela do GitHub que mostra as configurações do agente de codificação no repositório com a seção de configuração MCP destacada.

Steps

  1. Execute o agente de modernização:

    modernize
    
  2. Selecione Avaliar no menu principal.

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

  3. Escolha como especificar seus repositórios de destino. Selecione A partir de um arquivo de configuração para usar um arquivo repos.json ou selecione Entrada manual para inserir URLs de repositórios do GitHub diretamente.

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

  4. Se você selecionou De um arquivo de configuração e o repos.json arquivo é detectado no local padrão, o agente o preenche 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 o menu avaliar com a opção Delegar para Agentes de Codificação na Nuvem selecionada.

    Observação

    Quando você delega aos Agentes de Codificação na Nuvem, não há suporte para as etapas de configuração de avaliação e seleção de domínio. O agente de nuvem usa as configurações padrão para executar a avaliação.

  7. Insira o caminho de saída para os resultados da avaliação ou pressione Enter para aceitar o padrão.

  8. O agente delega automaticamente tarefas de avaliação para cada repositório para Agentes de Codificação na Nuvem e executa-as na nuvem em paralelo.

    Captura de tela da CLI de Modernização que mostra a saída do progresso da delegação da avaliação aos Agentes de Codificação de Nuvem no terminal.

    O agente puxa os resultados da avaliação por aplicativo de volta para o local e gera o relatório agregado localmente.

    Captura de tela do Modernize CLI que mostra a Agregação de Relatórios de Avaliação no terminal.

  9. Quando a avaliação for concluída, o agente abrirá automaticamente o relatório agregado.

CLI (modo não interativo)

Você também pode usar o modo não interativo especificando argumentos de comando diretamente. Use o comando modernize assess:

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

modernize assess --source .github/modernize/repos.json

Avalie vários repositórios especificando fontes diretamente:

modernize assess --source https://github.com/org/repo1 --source https://github.com/org/repo2

Avalie delegando aos Agentes de Codificação na Nuvem:

modernize assess --source .github/modernize/repos.json --delegate cloud --wait

Para obter mais informações, consulte avaliar – comandos da CLI.

Noções básicas sobre o relatório agregado

O relatório agregado fornece uma visão abrangente nos aplicativos avaliados, como se segue:

Dashboard

  • Instantâneo da integridade do portfólio: total de aplicativos, quantos precisam de upgrades e agregação de contagens de bloqueadores e problemas.
  • Distribuição de tecnologia: quais estruturas estão em uso e quantos aplicativos as compartilham.
  • Distribuição de esforço: se a migração geral é uma tarefa pequena ou grande.

Recomendações

  • Azure Services: mapeia as dependências atuais para equivalentes de Azure recomendados. As dependências compartilhadas entre os aplicativos são decididas apenas uma vez, portanto, você evita o retrabalho em cada aplicativo.
  • Plataforma de destino: orienta a opção de hospedagem, como Aplicativos de Contêiner do Azure versus AKS, e apresenta oportunidades de consolidação.
  • Caminho de Atualização: identifica quais aplicativos precisam de atualizações de estrutura como um pré-requisito, separando o trabalho de atualização do trabalho de migração.
  • Ondas de Migração: sequencia aplicativos por preparação e risco em fases. Essa abordagem permite ganhos antecipados enquanto aplicativos mais difíceis são preparados em paralelo.

Matriz de Avaliação de Aplicativo

  • Visão geral rápida de cada aplicativo sobre aspectos da estrutura, plataforma de destino, recomendação de atualização, detalhamento de problemas (Obrigatório, Potencial, Opcional), dimensionamento de esforço e muito mais.
  • Links para relatórios de aplicativos individuais para análise detalhada quando necessário.

Solução de problemas de avaliação 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 listados em repos.json.

Falhas de clonagem:

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

Falhas de avaliação:

  • Verifique se o repositório contém projetos válidos de Java ou .NET.
  • Verifique se existem arquivos de build, como pom.xml, build.gradle, *.csproj, *.sln ou *.slnx.
  • Examine as mensagens de erro na saída do console.

Problemas de delegação do Cloud Coding Agent:

  • Verifique se você tem as permissões certas para criar fluxos de trabalho GitHub Actions.
  • Verifique GitHub Actions permissões e limites de cota para sua organização.
  • Para aplicativos .NET Framework, verifique se Windows configuração do executor está definida corretamente.
  • Verifique a configuração do servidor MCP.

Próximas Etapas 

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

Continue o fluxo de trabalho de modernização:

Saiba mais:

Fornecer comentários

Valorizamos sua entrada! Se você tiver algum comentário sobre a avaliação em lote ou sobre 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.