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

A avaliação em lote permite-lhe analisar múltiplas aplicações simultaneamente, proporcionando uma visão abrangente do panorama da modernização nas suas aplicações. Este artigo orienta-o através do processo de avaliação eficiente de múltiplos repositórios.

A avaliação por lotes é especialmente valiosa para o planeamento da migração, pois permite avaliar de forma eficiente a prontidão e os requisitos de várias aplicações em simultâneo. Ao utilizar a avaliação em lote, pode avaliar diferentes repositórios ao mesmo tempo e obter relatórios detalhados de avaliação para cada aplicação. Produz dois tipos de relatórios para apoiar o seu planeamento migratorial:

  • Segundo o relatório da aplicação: Fornece informações detalhadas sobre todos os problemas de modernização identificados ao nível do repositório individual.
  • Relatório agregado: Apresenta uma perspetiva geral de todas as aplicações avaliadas, oferecendo insights resumidos, recomendações sobre serviços de Azure, plataformas-alvo e caminhos de atualização. Além disso, o relatório agregado inclui atalhos para fácil acesso a cada relatório por aplicação.

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

  • Visibilidade entre aplicações:

    • Relatórios agregados: Obtenha uma visão abrangente das aplicações.
    • Análise entre repositórios: Identificar padrões e dependências comuns entre aplicações.
    • Informações sobre priorização: Compreenda quais aplicações precisam de atenção imediata.
  • Escala e eficiência:

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

Pré-requisitos

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

Configurar repositórios

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

  • Pasta atual: Analise o projeto no seu diretório de trabalho corrente.
  • 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.

Certifica-te de que tens as permissões corretas para os repositórios ou cria um fork deles.

Formato simples (array 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 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

Formato completo com agrupamento de aplicações (opcional, para relatórios organizados):

Pode adicionar uma apps[] secção para agrupar repositórios em aplicações lógicas. Quando as aplicações são definidas, o relatório agregado organiza os resultados por aplicação e suporta a 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 da aplicação suporta:

Campo Descrição Obrigatório
identifier Nome de exibição único da aplicação. Sim
description Descrição legível para humanos. No
repos Lista de nomes de repositórios que pertencem a esta aplicação. Sim
output Onde distribuir o relatório de avaliação desta aplicação depois de gerado. No

O output campo suporta os seguintes tipos de distribuição:

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

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.

Executar avaliação em lote

Estão disponíveis dois modos de execução:

  • Execução local: O agente de modernização processa repositórios um após outro na sua máquina local. Este modo funciona melhor para um conjunto mais pequeno de aplicações ou para testes iniciais. Suporta tanto URL Git como repositórios de caminhos locais.
  • : O agente de modernização submete tarefas aos Agentes de Codificação GitHub na Nuvem para processamento paralelo na cloud. Este modo é mais rápido para cenários de múltiplos repositórios.

Importante

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

Sugestão

Ao usar a delegação do Cloud Coding Agent, permite a execução paralela em todos os repositórios. Esta abordagem reduz significativamente o tempo total de avaliação para carteiras grandes.

Modo interativo (avaliar localmente)

  1. Execute o agente de modernização:

    modernize
    
  2. Selecione Avaliar no menu principal.

    Captura de ecrã do Modernize CLI que mostra o menu principal com a opção Avaliar 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 entrada manual para introduzir caminhos locais ou URLs Git remotos diretamente, ou a pasta Current para avaliar 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ã do Modernize CLI que mostra a lista de repositórios no terminal.

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

    Captura de ecrã do Modernize CLI que mostra o menu do modo de avaliação no terminal.

  7. Selecione os domínios de avaliação a analisar. Escolha entre Java upgrade e Cloud Readiness, e depois pressione Enter.

    Captura de ecrã do Modernize CLI que mostra a seleção do domínio de avaliação no terminal.

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

    • Java / GERAL: Cobertura de Análise (Apenas Questões, Questões e Tecnologias, ou Questões, Tecnologias e Dependências).
    • Java / JAVA UPGRADE: Tempo de execução alvo (OpenJDK 11, 17 ou 21).
    • Java / CLOUD READINESS: Serviços de Computação Target, Sistema Operativo Target e Containerização.
    • .NET / CLOUD READINESS: Serviços de Computação de Destino.

    Use as setas para navegar, pressione Enter para alterar um valor, ou selecione Continuar para prosseguir com as definições atuais.

    Captura de ecrã do Modernize CLI que mostra a página de configuração de avaliação no terminal.

    Sugestão

    Os padrões recomendados funcionam na maioria dos cenários. Só precisa de alterar estas definições se tiver requisitos específicos, como direcionar uma versão específica do JDK ou um serviço de computação do Azure.

  9. Introduza 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 (os repositórios de caminhos locais são usados diretamente).

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

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

      Captura de ecrã do Modernize CLI que mostra a saída da geração de relatórios individuais de avaliação no terminal.

    • Cria um relatório agregado.

      Captura de ecrã do Modernize CLI que mostra a saída da geração agregada de relatórios no terminal.

  11. Quando a avaliação termina, o agente abre automaticamente o relatório agregado.

    Captura de ecrã do Modernize CLI que mostra o conteúdo do relatório agregado.

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

Primeiro, configure os Agentes de Codificação na Nuvem em cada repositório de aplicações. Para configurar Agentes de Codificação na Nuvem, faça um fork dos repositórios de exemplo.

Configuração para aplicações .NET

Configurar para correr no Windows para aplicações do .NET Framework

Por defeito, o Copilot Coding Agent corre num ambiente Ubuntu Linux. Para aplicações .NET Framework, precisas de um ambiente Windows. Para o ativar, configure .github/workflows/copilot-setup-steps.yaml no ramo main do seu repositório de aplicações, como mostrado no seguinte exemplo:

# 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: Personalização do ambiente de desenvolvimento do Copilot com as etapas de configuração do Copilot

Desativar firewall

Desative o firewall integrado do agente de codificação Copilot nas definições do seu repositório, conforme mostrado na imagem seguinte:

Captura de ecrã de GitHub que mostra as definições do repositório com a opção Ativar firewall em Desligado.

Configuração para aplicações Java

Configure o GitHub Copilot Modernization MCP Server na secção Cloud Coding Agent das definições do seu repositório, conforme mostrado no seguinte exemplo:

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

Captura de ecrã de GitHub que mostra as 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 Avaliar no menu principal.

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

  3. Escolha como especificar os seus repositórios-alvo. Selecione De um ficheiro de configuração para usar um ficheiro repos.json, ou selecione Entrada manual para introduzir diretamente os URLs dos repositórios GitHub.

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

  4. Se De um ficheiro de configuração for selecionado e o ficheiro repos.json 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 o menu de avaliação com a opção Delegar para Agentes de Codificação na Nuvem selecionada.

    Observação

    Quando se delega para Agentes de Programação na Nuvem, os passos de seleção de domínio e configuração de avaliação não são suportados. O agente cloud usa as configurações padrão para executar a avaliação.

  7. Introduza 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 aos Agentes de Codificação na Nuvem e executa-as na cloud em paralelo.

    Captura de ecrã do Modernize CLI que mostra o resultado do progresso da delegação de avaliação aos Agentes de Cloud Coding no terminal.

    O agente recolhe os resultados da avaliação por aplicação para local e gera o relatório agregado localmente.

    Captura de ecrã da CLI Modernize que mostra os Relatórios de Avaliação Agregada no terminal.

  9. Quando a avaliação termina, o agente abre automaticamente o relatório agregado.

Modo não interativo (CLI)

Também pode usar o modo não interativo especificando diretamente os argumentos de comando. Use o comando modernize assess:

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

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

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

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 mais informações, consulte avaliar - comandos CLI.

Compreender o relatório agregado

O relatório agregado oferece uma visão abrangente das candidaturas avaliadas da seguinte forma:

Dashboard

  • Resumo da saúde do portefólio: total de aplicações, quantas precisam de atualizações e contagem agregada de bloqueadores e de problemas.
  • Distribuição tecnológica: que frameworks estão em uso e quantas aplicações os partilham.
  • Distribuição do esforço: se a migração global é uma tarefa pequena ou grande.

Recomendações

  • Azure Services: mapeia dependências atuais para equivalentes Azure recomendados. As dependências partilhadas nas aplicações são decididas uma única vez, por isso evitas retrabalho por aplicação.
  • Plataforma Target: orienta a escolha de alojamento, como Azure Container Apps versus AKS, e destaca oportunidades de consolidação.
  • Caminho de Atualização: identifica quais as aplicações que necessitam de atualizações da framework como pré-requisito, separando o trabalho de atualização do trabalho de migração.
  • Ondas de Migração: sequenciam as aplicações por prontidão e risco em fases. Esta abordagem permite vitórias precoces enquanto as aplicações mais difíceis são preparadas em paralelo.

Matriz de Avaliação de Candidaturas

  • Visão geral rápida para cada aplicação sobre aspetos do framework, plataforma alvo, recomendação de atualização, divisão de problemas (Obrigatório, Potencial, Opcional), dimensionamento do esforço e mais.
  • Links para relatórios individuais de aplicações para análise detalhada quando necessário.

Resolução de problemas de avaliação por lotes

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 listados em repos.json.

Falhas de clones:

  • Verifique se os repos.json URLs dos repositórios estão corretos e acessíveis.
  • Certifica-te de que tens as permissões de acesso corretas para todos os repositórios.
  • Verifica a tua conectividade de rede e as definições da VPN.

Falhas na avaliação:

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

Problemas com delegação de Agentes de Codificação na Nuvem:

  • Certifica-te de que tens as permissões corretas para criar fluxos de trabalho no GitHub Actions.
  • Verifique as permissões do GitHub Actions e os limites de quotas para a sua organização.
  • Para aplicações do .NET Framework, certifique-se de que a configuração do Windows Runner está corretamente definida.
  • Verifica a configuração do teu servidor MCP.

Passos seguintes

Após completar a avaliação em lote, poderá:

Continue o fluxo de trabalho de modernização:

Saiba mais:

Fornecer comentários

Valorizamos a sua opinião! Se tiveres algum feedback sobre a avaliação por lote 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.