Refatorizar uma implementação do Team Foundation Server para o Azure DevOps ServicesRefactor a Team Foundation Server deployment to Azure DevOps Services

Este artigo mostra como a empresa fictícia Contoso refactoria a sua implementação no local Visual Studio Team Foundation Server migrando-o para a Azure DevOps Services em Azure.This article shows how the fictional company Contoso refactors its on-premises Visual Studio Team Foundation Server deployment by migrating it to Azure DevOps Services in Azure. A equipa de desenvolvimento da Contoso usou o Team Foundation Server para a colaboração da equipa e o controlo de fontes nos últimos cinco anos.The Contoso development team has used Team Foundation Server for team collaboration and source control for the past five years. Agora, a equipa quer avançar para uma solução baseada na nuvem para o teste de dev e para o controlo de fontes.Now, the team wants to move to a cloud-based solution for dev and test work and for source control. A Azure DevOps Services desempenhará um papel à medida que a equipa de Contoso se muda para um modelo Azure DevOps e desenvolve novas aplicações nativas da nuvem.Azure DevOps Services will play a role as the Contoso team moves to an Azure DevOps model and develops new cloud-native applications.

Impulsionadores de negóciosBusiness drivers

A equipa de liderança da Contoso IT tem trabalhado em estreita colaboração com parceiros de negócio para identificar objetivos futuros.The Contoso IT leadership team has worked closely with business partners to identify future goals. Os parceiros não estão muito preocupados com ferramentas e tecnologias dev, mas a equipa capturou estes pontos:The partners aren't overly concerned with dev tools and technologies, but the team has captured these points:

  • Software: Independentemente do core business, todas as empresas são agora empresas de software, incluindo a Contoso.Software: Regardless of the core business, all companies are now software companies, including Contoso. A liderança do negócio está interessada em como a TI pode ajudar a liderar a empresa com novas práticas de trabalho para os utilizadores e novas experiências para os seus clientes.Business leadership is interested in how IT can help lead the company with new working practices for users and new experiences for its customers.
  • Eficiência: A Contoso precisa de agilizar os seus processos e remover procedimentos desnecessários para programadores e utilizadores.Efficiency: Contoso needs to streamline its processes and remove unnecessary procedures for developers and users. Ao fazê-lo, a empresa irá cumprir os requisitos do cliente de forma mais eficiente.Doing so will allow the company to deliver on customer requirements more efficiently. O negócio precisa que a TI se mova rapidamente, sem perder tempo ou dinheiro.The business needs IT to move quickly, without wasting time or money.
  • Agilidade: Para permitir o seu sucesso numa economia global, a Contoso IT precisa de ser mais sensível às necessidades do negócio.Agility: To enable its success in a global economy, Contoso IT needs to be more responsive to the needs of the business. Deve poder reagir mais rapidamente às mudanças no mercado.It must be able to react more quickly to changes in the marketplace. Não deve entrar no caminho nem tornar-se um bloqueador de negócios.IT must not get in the way or become a business blocker.

Objetivos de migraçãoMigration goals

A equipa de nuvem Contoso estabeleceu os seguintes objetivos para a sua migração para os Serviços Azure DevOps:The Contoso cloud team has pinned down the following goals for its migration to Azure DevOps Services:

  • A equipa precisa de uma ferramenta para migrar os seus dados para a nuvem.The team needs a tool to migrate its data to the cloud. Devem ser necessários poucos processos manuais.Few manual processes should be needed.
  • Os dados de itens de trabalho e o histórico do último ano devem ser migrados.Work item data and history for the last year must be migrated.
  • A equipa não quer criar novos nomes de utilizador e senhas.The team doesn't want to set up new user names and passwords. Todas as atribuições atuais do sistema têm de ser mantidas.All current system assignments must be maintained.
  • A equipa quer afastar-se do Team Foundation Version Control (TFVC) para Git para controlo de fontes.The team wants to move away from Team Foundation Version Control (TFVC) to Git for source control.
  • A transição para Git será uma migração de ponta que importa apenas a versão mais recente do código fonte.The transition to Git will be a tip migration that imports only the latest version of the source code. A transição acontecerá durante um tempo de paragem, quando todo o trabalho será interrompido à medida que a base de código muda.The transition will happen during a downtime, when all work will be halted as the code base shifts. A equipa entende que apenas o histórico do ramo principal estará disponível após a mudança.The team understands that only the current main branch history will be available after the move.
  • A equipa está preocupada com a mudança e quer testá-la antes de fazer um movimento completo.The team is concerned about the change and wants to test it before it does a full move. A equipa quer manter o acesso ao Team Foundation Server mesmo depois da mudança para os Serviços Azure DevOps.The team wants to retain access to Team Foundation Server even after the move to Azure DevOps Services.
  • A equipa tem várias coleções e, para melhor compreender o processo, quer começar por uma que tem apenas alguns projetos.The team has multiple collections and, to better understand the process, it wants to start with one that has only a few projects.
  • A equipa entende que as coleções do Team Foundation Server são uma relação um-para-um com as organizações de Serviços Azure DevOps, pelo que terá múltiplos URLs.The team understands that Team Foundation Server collections are a one-to-one relationship with Azure DevOps Services organizations, so it will have multiple URLs. Mas isto corresponde ao seu atual modelo de separação para bases de código e projetos.But this matches its current model of separation for code bases and projects.

Arquitetura propostaProposed architecture

  • A Contoso irá mover os seus projetos do Team Foundation Server para a nuvem, e deixará de acolher os seus projetos ou controlo de fontes no local.Contoso will move its Team Foundation Server projects to the cloud, and it will no longer host its projects or source control on-premises.
  • O Team Foundation Server será migrado para os Serviços Azure DevOps.Team Foundation Server will be migrated to Azure DevOps Services.
  • Atualmente, a Contoso tem uma coleção de Servidores da Team Foundation, ContosoDev nomeada, que será migrada para uma organização de Serviços Azure DevOps chamada contosodevmigration.visualstudio.com .Currently, Contoso has one Team Foundation Server collection, named ContosoDev, which will be migrated to an Azure DevOps Services organization called contosodevmigration.visualstudio.com.
  • Os projetos, itens de trabalho, bugs e iterações do ano passado serão migrados para os Serviços Azure DevOps.The projects, work items, bugs, and iterations from the last year will be migrated to Azure DevOps Services.
  • A Contoso utilizará o seu exemplo de Azure Ative Directory (Azure AD), que criou quando implantou a sua infraestrutura Azure no início do planeamento migratório.Contoso will use its Azure Active Directory (Azure AD) instance, which it set up when it deployed its Azure infrastructure at the beginning of the migration planning.

Diagrama da arquitetura proposta.

Processo de migraçãoMigration process

A Contoso concluirá o processo de migração da seguinte forma:Contoso will complete the migration process as follows:

  1. É necessária uma preparação significativa.Significant preparation is required. Em primeiro lugar, a Contoso tem de atualizar a sua implementação do Team Foundation Server para um nível suportado.First, Contoso must upgrade its Team Foundation Server implementation to a supported level. O Contoso está atualmente a executar o Team Foundation Server 2017 Update 3, mas para utilizar a migração de bases de dados precisa de executar uma versão suportada para 2018 com as últimas atualizações.Contoso is currently running Team Foundation Server 2017 Update 3, but to use database migration it needs to run a supported 2018 version with the latest updates.
  2. Depois de contoso atualizar, irá executar a ferramenta de migração do Team Foundation Server e validar a sua coleção.After Contoso upgrades, it will run the Team Foundation Server migration tool and validate its collection.
  3. Contoso construirá um conjunto de ficheiros de preparação e, em seguida, realizará uma corrida a seco de migração para testes.Contoso will build a set of preparation files and then perform a migration dry run for testing.
  4. Em seguida, a Contoso executará outra migração, desta vez uma migração completa com itens de trabalho, erros, sprints e código.Contoso will then run another migration, this time a full migration that includes work items, bugs, sprints, and code.
  5. Após a migração, Contoso mudará o seu código de TFVC para Git.After the migration, Contoso will move its code from TFVC to Git.

Diagrama do processo de migração de Contoso.

Pré-requisitosPrerequisites

Para executar este cenário, a Contoso precisa de cumprir os seguintes pré-requisitos:To run this scenario, Contoso needs to meet the following prerequisites:

RequisitosRequirements DetalhesDetails
Subscrição do AzureAzure subscription A Contoso criou subscrições num artigo anterior nesta série.Contoso created subscriptions in an earlier article in this series. Se não tiver uma subscrição do Azure, crie uma conta gratuita.If you don't have an Azure subscription, create a free account.

Se criar uma conta gratuita, será o administrador da sua subscrição e poderá executar todas as ações.If you create a free account, you're the administrator of your subscription and can perform all actions.

Se utilizar uma subscrição já existente e não for o administrador, terá de trabalhar com o mesmo para que lhe atribua as permissões Proprietário ou Contribuidor.If you use an existing subscription and you're not the administrator, you need to work with the admin to assign you Owner or Contributor permissions.

Se precisar de mais permissões granulares, consulte o acesso à Recuperação do Local de Gestão com o controlo de acesso baseado em funções Azure (Azure RBAC).If you need more granular permissions, see Manage Site Recovery access with Azure role-based access control (Azure RBAC).
Infraestrutura do AzureAzure infrastructure A Contoso criou a sua infraestrutura Azure, tal como descrita na infraestrutura Azure para a migração.Contoso set up its Azure infrastructure as described in Azure infrastructure for migration.
No local, exemplo do servidor da Fundação da Fundação da EquipaOn-premises Team Foundation Server instance A instância no local precisa de executar o Team Foundation Server 2018 ou ser atualizado para ele como parte deste processo.The on-premises instance needs to either run Team Foundation Server 2018 upgrade 2 or be upgraded to it as part of this process.

Passos do cenárioScenario steps

Eis como a Contoso vai concluir a migração:Here's how Contoso will complete the migration:

  • Passo 1: Criar uma conta de armazenamento Azure.Step 1: Create an Azure storage account. Esta conta de armazenamento será utilizada durante o processo de migração.This storage account will be used during the migration process.
  • Passo 2: Atualizar o servidor da Fundação team.Step 2: Upgrade Team Foundation Server. A Contoso irá atualizar a sua implementação para o Team Foundation Server 2018.Contoso will upgrade its deployment to Team Foundation Server 2018 upgrade 2.
  • Passo 3: Validar a coleção do Servidor da Fundação da Equipa.Step 3: Validate the Team Foundation Server collection. A Contoso validará a coleção Team Foundation Server em preparação para a migração.Contoso will validate the Team Foundation Server collection in preparation for the migration.
  • Passo 4: Construir os ficheiros de migração.Step 4: Build the migration files. O Contoso criará os ficheiros de migração utilizando a ferramenta de migração do Servidor da Fundação da Equipa.Contoso will create the migration files by using the Team Foundation Server migration tool.

Passo 1: Criar uma conta de armazenamento AzureStep 1: Create an Azure storage account

  1. No portal Azure, os administradores da Contoso criam uma conta de armazenamento ( contosodevmigration ).In the Azure portal, Contoso admins create a storage account (contosodevmigration).

  2. Colocam a conta na região secundária, que utilizam para o failover Central US ().They place the account in the secondary region, which they use for failover (Central US). Utilizam uma conta padrão para fins gerais com armazenamento localmente redundante.They use a general-purpose standard account with locally redundant storage.

    Screenshot do painel "Criar conta de armazenamento".

Precisa de mais ajuda?Need more help?

Passo 2: Servidor de upgrade da Fundação teamStep 2: Upgrade Team Foundation Server

Os administradores da Contoso atualizam a instância do Servidor da Fundação da Equipa para o Team Foundation Server 2018 Update 2.Contoso admins upgrade the Team Foundation Server instance to Team Foundation Server 2018 Update 2. Antes de começarem,:Before they start, they:

A atualização é feita da seguinte forma:They upgrade as follows:

  1. Para começar, os administradores fazem o back up da sua instância do Team Foundation Server, que está a funcionar numa máquina virtual VMware (VM), e tiram uma foto VMware.To start, the admins back up their Team Foundation Server instance, which is running on a VMware virtual machine (VM), and they take a VMware snapshot.

    Screenshot do painel "Getting Started" para atualizar o Team Foundation Server.

  2. O instalador do Team Foundation Server começa e escolhe o local de instalação.The Team Foundation Server installer starts, and they choose the installation location. O instalador precisa de acesso à Internet.The installer needs internet access.

    Screenshot do site de instalação do Team Foundation Server em Visual Studio.

  3. Após a conclusão da instalação, o Assistente de Configuração do Servidor é iniciado.After the installation finishes, the Server Configuration Wizard starts.

    Screenshot do assistente de configuração Team Foundation Server 2018 Update 2.

  4. Após a verificação, o Assistente de Configuração do Servidor completa a atualização.After verification, the Server Configuration Wizard completes the upgrade.

    Screenshot do painel de funcionaamento do assistente de configuração do Servidor da Fundação da Equipa.

  5. Os administradores verificam a instalação do Team Foundation Server através da revisão de projetos, artigos de trabalho e código.The admins verify the Team Foundation Server installation by reviewing projects, work items, and code.

    Screenshot do painel "Remanso do Produto" para verificar a instalação do Servidor da Fundação da Equipa.

Nota

Algumas atualizações do Team Foundation Server precisam de executar o Configure Features Wizard após o final da atualização.Some Team Foundation Server upgrades need to run the Configure Features Wizard after the upgrade finishes. Saiba mais.Learn more.

Precisa de mais ajuda?Need more help?

Saiba mais sobre a atualização do Servidor da Fundação team.Learn about upgrading Team Foundation Server.

Passo 3: Validar a coleção do Servidor da Fundação da EquipaStep 3: Validate the Team Foundation Server collection

Os administradores da Contoso executam a ferramenta de migração do Team Foundation Server contra a base de dados de contosodev recolha para validá-la antes da migração.Contoso admins run the Team Foundation Server migration tool against the contosodev collection database to validate it before migration.

  1. Descarregam e desapertam a ferramenta de migração do Team Foundation Server.They download and unzip the Team Foundation Server migration tool. É importante descarregar a versão para a atualização do Team Foundation Server que está a decorrer.It's important to download the version for the Team Foundation Server update that's running. É possível dar entrada da versão na consola de administrador.The version can be checked in the admin console.

    Screenshot do painel do Servidor da Fundação team para verificar a versão do produto.

  2. Executam a ferramenta para realizar a validação especificando o URL da coleção do projeto, como mostra o seguinte comando:They run the tool to perform the validation by specifying the URL of the project collection, as shown in the following command:

    TfsMigrator validate /collection:http://contosotfs:8080/tfs/ContosoDev

    A ferramenta mostra um erro.The tool shows an error.

    Screenshot de um erro de validação na ferramenta de migração do Team Foundation Server.

  3. Localizam os ficheiros de registo na Logs pasta, pouco antes da localização da ferramenta.They locate the log files in the Logs folder, just before the tool location. É gerado um ficheiro de registo para cada validação de relevo.A log file is generated for each major validation. TfsMigration.log contém as informações principais.TfsMigration.log holds the main information.

    Screenshot da localização do ficheiro de registo no Servidor da Fundação da Equipa.

  4. Eles encontram esta entrada, que está relacionada com a identidade.They find this entry, which is related to identity.

    Screenshot mostrando o erro encontrado durante a validação de identidade.

  5. Eles correm TfsMigrator validate /help na linha de comando, e vêem que o comando /tenantDomainName parece ser necessário para validar identidades.They run TfsMigrator validate /help at the command line, and they see that the command /tenantDomainName seems to be required to validate identities.

    Screenshot mostrando o comando necessário para validar identidades.

  6. Eles executam novamente o comando de validação e incluem este valor e o seu nome AD Azure, TfsMigrator validate /collection:http://contosotfs:8080/tfs/ContosoDev /tenantDomainName:contosomigration.onmicrosoft.com .They run the validation command again and include this value and their Azure AD name, TfsMigrator validate /collection:http://contosotfs:8080/tfs/ContosoDev /tenantDomainName:contosomigration.onmicrosoft.com.

    Screenshot do pedido de comando mostrando o comando correto.

  7. Na janela de entrada AD AZure que se abre, introduzem as credenciais de um utilizador administrativo global.In the Azure AD sign-in window that opens, they enter the credentials of a global admin user.

    Screenshot do sinal AD Azure na janela com credenciais de administração.

  8. A validação passa e é confirmada pela ferramenta.The validation passes and is confirmed by the tool.

    Screenshot mostrando que a validação passou.

Passo 4: Construir os ficheiros de migraçãoStep 4: Build the migration files

Com a validação completa, os administradores do Contoso podem usar a ferramenta de migração do Servidor da Fundação da Equipa para construir os ficheiros de migração.With the validation complete, Contoso admins can use the Team Foundation Server migration tool to build the migration files.

  1. Eles fazem o passo de preparação na ferramenta.They run the preparation step in the tool.

    TfsMigrator prepare /collection:http://contosotfs:8080/tfs/ContosoDev /tenantDomainName:contosomigration.onmicrosoft.com /accountRegion:cus

    Screenshot do comando de preparação na ferramenta de migração do Team Foundation Server.

    O passo de preparação faz o seguinte:The preparation step does the following:

    • Digitaliza a coleção para encontrar uma lista de todos os utilizadores e, em seguida, povoa o registo de mapas de identificação ( IdentityMapLog.csv ).Scans the collection to find a list of all users and then populates the identify map log (IdentityMapLog.csv).
    • Prepara a ligação com a Azure AD para encontrar uma correspondência para cada identidade.Prepares the connection to Azure AD to find a match for each identity.
    • O Contoso já implantou o Azure AD e sincronizou-o utilizando o Azure AD Connect, pelo que o comando de preparação deve ser capaz de encontrar as identidades correspondentes e marcá-las como Ative.Contoso has already deployed Azure AD and synchronized it by using Azure AD Connect, so the prepare command should be able to find the matching identities and mark them as Active.
  2. Um ecrã de entrada AD Azure aparece, e os administradores introduzem as credenciais de um administrador global.An Azure AD sign-in screen appears, and the admins enter the credentials of a global admin.

    Screenshot do ecrã de sinal Azure AD com credenciais de administração digitadas na caixa de texto do Utilizador.

  3. A preparação está concluída e a ferramenta informa que os ficheiros de importação foram gerados com sucesso.The preparation is completed, and the tool reports that the import files have been generated successfully.

    Screenshot da ferramenta de migração, mostrando que a validação da coleção é bem sucedida.

  4. Os administradores podem agora ver que tanto o ficheiro IdentityMapLog.csv como o import.jsem ficheiro foram criados numa nova pasta.The admins can now see that both the IdentityMapLog.csv file and the import.json file have been created in a new folder.

    Preparação

  5. O import.json ficheiro fornece definições de importação.The import.json file provides import settings. Inclui informações como o nome da organização pretendido e detalhes da conta de armazenamento.It includes information such as the desired organization name, and storage account details. A maioria dos campos é preenchida automaticamente.Most of the fields are populated automatically. Alguns campos requerem a entrada do utilizador.Some fields require user input. Os administradores abrem o ficheiro e adicionam o nome da organização Azure DevOps Services a ser criado, contosodevmigration .The admins open the file and add the Azure DevOps Services organization name to be created, contosodevmigration. Com este nome, será o URL dos Serviços DevOps Contoso contosodevmigration.visualstudio.com Azure.With this name, the Contoso Azure DevOps Services URL will be contosodevmigration.visualstudio.com.

    Screenshot mostrando o nome da organização Azure DevOps Services.

    Nota

    A organização deve ser criada antes do início da migração.The organization must be created before the migration begins. Pode ser alterado após a conclusão da migração.It can be changed after the migration is completed.

  6. Os administradores analisam o ficheiro do mapa de registo de identidade, que mostra as contas que serão introduzidas nos Serviços Azure DevOps durante a importação.The admins review the identity log map file, which shows the accounts that will be brought into Azure DevOps Services during the import.

    • Identidades ativas são identidades que se tornarão utilizadores no Azure DevOps Services após a importação.Active identities refer to identities that will become users in Azure DevOps Services after the import.
    • Nos Serviços Azure DevOps, estas identidades serão licenciadas e exibidas como utilizadores na organização após a migração.In Azure DevOps Services, these identities will be licensed and displayed as users in the organization after migration.
    • As identidades são marcadas como Ativas na coluna Estado de Importação Esperada no ficheiro.The identities are marked as Active in the Expected Import Status column in the file.

    Screenshot do ficheiro do mapa de registo de identidade, mostrando as contas a serem introduzidas nos Serviços Azure DevOps.

Passo 5: Migrar para os Serviços Azure DevOpsStep 5: Migrate to Azure DevOps Services

Com a preparação concluída, os administradores do Contoso podem focar-se na migração.With the preparation completed, Contoso admins can focus on the migration. Depois de executarem a migração, passarão de TFVC para Git para controlo de versão.After they run the migration, they'll switch from using TFVC to Git for version control.

Antes de começarem, os administradores programam tempo de inatividade com a equipa de dev, para que possam planear a retirada offline para migração.Before they start, the admins schedule downtime with the dev team, so that they can plan to take the collection offline for migration.

Eis o processo de migração que seguirão:Here is the migration process they'll follow:

  1. Retire a coleção.Detach the collection. Os dados de identidade da recolha residem na base de dados de configuração para a instância do Servidor da Fundação da Equipa enquanto a recolha está anexada e online.Identity data for the collection resides in the configuration database for the Team Foundation Server instance while the collection is attached and online.

    Quando uma recolha é separada da instância Team Foundation Server, uma cópia desses dados de identidade é feita e, em seguida, embalada com a coleção para transporte.When a collection is detached from the Team Foundation Server instance, a copy of that identity data is made and then packaged with the collection for transport. Sem estes dados, a parte de identidade da importação não pode ser executada.Without this data, the identity portion of the import can't be executed.

    Recomendamos que a recolha permaneça separada até que a importação esteja concluída, porque as alterações que ocorrem durante a importação não podem ser importadas.We recommended that the collection stay detached until the import has been completed, because changes that occur during the import can't be imported.

  2. Gere uma cópia de segurança.Generate a backup. O próximo passo é gerar uma cópia de segurança que pode ser importada para os Serviços Azure DevOps.The next step is to generate a backup that can be imported into Azure DevOps Services. O pacote de componentes de aplicação de nível de dados (DACPAC) é uma funcionalidade do SQL Server que permite que as alterações na base de dados sejam embaladas num único ficheiro e depois implementadas para outras instâncias de SQL.The data-tier application component package (DACPAC) is a SQL Server feature that allows database changes to be packaged into a single file and then deployed to other instances of SQL.

    A cópia de segurança também pode ser restaurada diretamente para os Serviços Azure DevOps, e é usada como o método de embalagem para obter dados de recolha para a nuvem.The backup can also be restored directly to Azure DevOps Services, and it's used as the packaging method for getting collection data to the cloud. Contoso usará a sqlpackage.exe ferramenta para gerar o DACPAC.Contoso will use the sqlpackage.exe tool to generate the DACPAC. Esta ferramenta está incluída no SQL Server Data Tools.This tool is included in SQL Server Data Tools.

  3. Faça o upload para o armazenamento.Upload to storage. Após a criação do DACPAC, os administradores enviam-no para o Azure Storage.After the DACPAC is created, the admins upload it to Azure Storage. Depois de o terem carregado, obtêm uma assinatura de acesso partilhado (SAS) para permitir o acesso à ferramenta de migração do Team Foundation Server ao armazenamento.After they've uploaded it, they get a shared access signature (SAS) to allow the Team Foundation Server migration tool access to the storage.

  4. Preencha a importação.Fill out the import. Contoso pode então completar os campos em falta no ficheiro de importação, incluindo a definição DACPAC.Contoso can then complete the missing fields in the import file, including the DACPAC setting. Para garantir que tudo funcione corretamente antes da migração completa, os administradores especificarão que querem realizar uma importação a seco.To ensure that everything's working properly before the full migration, the admins will specify that they want to perform a dry-run import.

  5. Realizar uma importação a seco.Perform a dry-run import. Uma importação a seco ajuda-os a testar a migração da recolha.A dry-run import helps them test the collection migration. As corridas a seco têm uma vida limitada, por isso são apagadas antes de uma migração de produção.Dry runs have a limited life, so they're deleted before a production migration runs. São automaticamente eliminados após uma duração definida.They're deleted automatically after a set duration. Uma nota que informa Contoso quando a secagem será eliminada está incluída no e-mail de sucesso que é enviado após os acabamentos de importação.A note that informs Contoso when the dry run will be deleted is included in the success email that's sent after the import finishes. A equipa toma nota e planeia em conformidade.The team takes note and plans accordingly.

  6. Complete a migração de produção.Complete the production migration. Com a migração a seco concluída, os administradores da Contoso fazem a migração final atualizando o import.json ficheiro e, em seguida, executando novamente a importação.With the dry-run migration completed, Contoso admins do the final migration by updating the import.json file and then running import again.

Desanexar a coleçãoDetach the collection

Antes de separarem a coleção, os administradores do Contoso fazem uma cópia de segurança local do SQL Server e uma foto VMware da instância do Servidor da Fundação da Equipa.Before they detach the collection, Contoso admins take a local SQL Server instance backup and a VMware snapshot of the Team Foundation Server instance.

  1. Na Consola de Administração do Servidor da Team Foundation, os administradores selecionam a coleção que pretendem destacar, ContosoDev.In the Team Foundation Server Administration Console, the admins select the collection they want to detach, ContosoDev.

    Screenshot da secção "Team Project Collections" da Consola de Administração do Servidor da Fundação.

  2. Selecionam o separador Geral e, em seguida, selecionam A Recolha de Descosion .They select the General tab and then select Detach Collection.

    Screenshot do link "Retire Collection" na Consola de Administração do Servidor da Fundação.

  3. No assistente de Recolha de Projetos de Equipas de Detach, no painel de mensagens de manutenção, os administradores fornecem uma mensagem para os utilizadores que possam tentar ligar-se a projetos na coleção.In the Detach Team Project Collection wizard, on the Servicing Message pane, the admins provide a message for users who might try to connect to projects in the collection.

    Screenshot do painel "Servicing Message" no assistente de recolha de projetos de equipa de desacolagem.

  4. No painel de desprendimento do progresso, monitorizam o progresso.On the Detach Progress pane, they monitor progress. Quando o processo termina, selecionam Next.When the process finishes, they select Next.

    Screenshot do painel "Detach Progress" no assistente de recolha de projetos de equipa de desacolhido.

  5. No painel de verificação de prontidão, quando os controlos terminam, selecionam Desprendimento.On the Readiness Checks pane, when the checks finish, they select Detach.

    Screenshot do painel "Verificação de prontidão" no assistente de recolha de projetos de equipa de desacolagem.

  6. Quando a coleção foi separada com sucesso, selecionam Perto para terminar.When the collection has been successfully detached, they select Close to finish up.

    Screenshot do painel "Complete" no assistente de recolha de projetos de equipa de desacolhido.

    A coleção já não é referenciada na Consola de Administração do Servidor da Fundação da Equipa.The collection is no longer referenced in the Team Foundation Server Administration Console.

    Screenshot da Consola de Administração do Servidor da Team Foundation, mostrando que a coleção já não está listada.

Gerar um DACPACGenerate a DACPAC

Os administradores da Contoso criam uma cópia de segurança, ou DACPAC, para importar para os Serviços Azure DevOps.Contoso admins create a backup, or DACPAC, to import into Azure DevOps Services.

  • Os administradores usam o sqlpackage.exe utilitário em SQL Server Data Tools (SSDT) para criar o DACPAC.The admins use the sqlpackage.exe utility in SQL Server Data Tools (SSDT) to create the DACPAC. Existem várias versões sqlpackage.exe de instaladas com ferramentas de dados do servidor SQL, e estão localizadas sob pastas com nomes como 120 , e 130 140 .There are multiple versions of sqlpackage.exe installed with SQL Server Data Tools, and they're located under folders with names like 120, 130, and 140. É importante utilizar a versão correta para preparar a DACPAC.It's important to use the right version to prepare the DACPAC.

  • As importações do Team Foundation Server 2018 precisam de utilizar sqlpackage.exe a partir da pasta 140 ou superior.Team Foundation Server 2018 imports need to use sqlpackage.exe from the 140 folder or higher. Para CONTOSOTFS , este ficheiro está localizado em C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\Extensions\Microsoft\SQLDB\DAC\140 .For CONTOSOTFS, this file is located in C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\Extensions\Microsoft\SQLDB\DAC\140.

Os administradores da Contoso geram a DACPAC da seguinte forma:Contoso admins generate the DACPAC as follows:

  1. Abrem um pedido de comando e vão para o sqlpackage.exe local.They open a command prompt and go to the sqlpackage.exe location. Para gerar o DACPAC, executam o seguinte comando:To generate the DACPAC, they run the following command:

    SqlPackage.exe /sourceconnectionstring:"Data Source=SQLSERVERNAME\INSTANCENAME;Initial Catalog=Tfs_ContosoDev;Integrated Security=True" /targetFile:C:\TFSMigrator\Tfs_ContosoDev.dacpac /action:extract /p:ExtractAllTableData=true /p:IgnoreUserLoginMappings=true /p:IgnorePermissions=true /p:Storage=Memory

    Screenshot da solicitação de comando, exibindo o comando para gerar o DACPAC.

    É apresentada a seguinte mensagem:The following message is displayed:

    Screenshot do pedido de comando, exibindo uma mensagem de que a base de dados foi extraída e guardada com sucesso num ficheiro DACPAC.

  2. Verificam as propriedades do ficheiro DACPAC.They verify the properties of the DACPAC file.

    Screenshot mostrando as propriedades do ficheiro DACPAC para verificação.

Faça o upload do ficheiro para o armazenamentoUpload the file to storage

Depois de os administradores criarem o ficheiro DACPAC, eles enviam-no para a conta de armazenamento Azure.After the admins create the DACPAC file, they upload it to the Azure storage account.

  1. Transferem e instalam o Explorador de Armazenamento do Azure.They download and install Azure Storage Explorer.

    Screenshot de "Download Storage Explorer grátis".

  2. No Storage Explorer, os administradores conectam-se à sua subscrição e depois procuram e selecionam a conta de armazenamento que criaram para a migração contosodevmigration ( ).In Storage Explorer, the admins connect to their subscription and then search for and select the storage account they created for the migration (contosodevmigration). Criam um novo recipiente para azuredevopsmigration bolhas.They create a new blob container, azuredevopsmigration.

    Screenshot da ligação "Create Blob Container" no Storage Explorer.

  3. No painel de ficheiros upload, na lista de drop-down do tipo Blob, os administradores especificam Block Blob para o upload do ficheiro DACPAC.On the Upload files pane, in the Blob type drop-down list, the admins specify Block Blob for the DACPAC file upload.

    Screenshot do painel "Upload files" no Storage Explorer.

  4. Depois de fazerem o upload do ficheiro, selecionam o nome do ficheiro e selecionam O Sas de Geração.After they upload the file, they select the file name and then select Generate SAS. Expandem a lista de contentores Blob sob a conta de armazenamento, selecionam o contentor com os ficheiros de importação e, em seguida, selecionam Obter Assinatura de Acesso Partilhado.They expand the Blob Containers list under the storage account, select the container with the import files, and then select Get Shared Access Signature.

    Screenshot do link "Obter Assinatura de Acesso Partilhado" no Storage Explorer.

  5. No painel de assinatura de acesso partilhado, aceitam as definições predefinidos e, em seguida, selecionam Criar.On the Shared Access Signature pane, they accept the default settings and then select Create. Isto permite acesso durante 24 horas.This enables access for 24 hours.

    Screenshot do painel "Shared Access Signature" no Storage Explorer.

  6. Copiam o URL de assinatura de acesso partilhado, para que possa ser usado pela ferramenta de migração do Servidor da Fundação team.They copy the shared access signature URL, so that it can be used by the Team Foundation Server migration tool.

    Screenshot do URL da assinatura de acesso partilhado no Storage Explorer.

Nota

A migração deve ocorrer dentro da janela de tempo permitida ou as permissões caducarão.The migration must happen within the allowed time window or the permissions will expire. Não gere uma chave SAS a partir do portal Azure.Do not generate an SAS key from the Azure portal. As chaves que são geradas a partir do portal são de âmbito de conta e não funcionam com a importação.Keys that are generated from the portal are account-scoped and won't work with the import.

Preencher as definições de importaçãoFill in the import settings

Anteriormente, os administradores da Contoso preencheram parcialmente o ficheiro de especificação de importação, import.jsem.Earlier, Contoso admins partially filled in the import specification file, import.json. Agora precisam de adicionar as definições restantes.Now, they need to add the remaining settings.

Abrem a import.jsem arquivo e completam os seguintes campos:They open the import.json file and complete the following fields:

  • Localização: Entram na localização da chave SAS que foi gerada anteriormente.Location: They enter the location of the SAS key that was generated previously.
  • DACPAC: Introduzem o nome do ficheiro DACPAC que enviaram anteriormente para a conta de armazenamento, certificando-se de que incluem a extensão .dacpac.DACPAC: They enter the name of the DACPAC file that they uploaded earlier to the storage account, making sure to include the .dacpac extension.
  • ImportType: Entram no DryRun por enquanto.ImportType: They enter DryRun for now.

Screenshot do ficheiro "import.jsligado" com os campos preenchidos.

Realizar uma migração a secoPerform a dry-run migration

Os administradores do Contoso realizam uma migração a seco para garantir que tudo está a funcionar como esperado.Contoso admins perform a dry-run migration to make sure that everything's working as expected.

  1. Abrem um pedido de comando e depois vão para o TfsMigrator local . C:\TFSMigratorThey open a command prompt and then go to the TfsMigrator location (C:\TFSMigrator).

  2. Querem certificar-se de que o ficheiro está formatado corretamente e que a tecla SAS está a funcionar.They want to make sure that the file is formatted properly and that the SAS key is working. Validam o ficheiro de importação executando o seguinte comando:They validate the import file by running the following command:

    TfsMigrator import /importFile:C:\TFSMigrator\import.json /validateonly

    A validação retorna um erro dizendo que a chave SAS precisa de um período mais longo antes de expirar.The validation returns an error saying that the SAS key needs a longer period before it expires.

    Screenshot do pedido de comando mostrando um erro de validação.

  3. Eles usam o Azure Storage Explorer para criar uma nova chave SAS com o período antes do prazo de expiração definido para sete dias.They use Azure Storage Explorer to create a new SAS key with the period before expiration set to seven days.

    Screenshot do painel "Shared Access Signature" do Explorador de Armazenamento que mostra a data de validade.

  4. Atualizam o import.json ficheiro e reexecuram o comando.They update the import.json file and rerun the command. Desta vez, a validação é concluída com sucesso.This time, the validation is completed successfully.

    TfsMigrator import /importFile:C:\TFSMigrator\import.json /validateonly

    Screenshot do pedido de comando exibindo uma mensagem "Validação concluída com sucesso".

  5. Iniciam a execução a seco executando o seguinte comando:They start the dry run by running the following command:

    TfsMigrator import /importFile:C:\TFSMigrator\import.json

    É exibida uma mensagem a pedir-lhes que confirmem que querem continuar com a migração.A message is displayed asking them to confirm that they want to continue with the migration. Note o período de sete dias após o ensaio a seco durante o qual os dados encenados serão mantidos.Note the seven-day period after the dry run during which the staged data will be maintained.

    Screenshot da mensagem pedindo a Contoso que confirme que quer continuar com a migração.

  6. A janela de inscrição AD Azure abre.The Azure AD sign-in window opens. Os administradores do Contoso assinam o AZure AD com permissões de administração.Contoso admins sign in to Azure AD with admin permissions.

    Screenshot do sinal AD AZure na janela no Estúdio Visual.

    É apresentada uma mensagem confirmando que a importação foi iniciada com sucesso.A message is displayed confirming that the import has been started successfully.

    Screenshot mostrando que a importação começou com sucesso.

  7. Após cerca de 15 minutos, os administradores vão ao site e vêem as seguintes informações:After about 15 minutes, the admins go to the website and see the following information:

    Screenshot mostrando que a coleção está a ser restaurada.

  8. Após o fim da migração, um contoso dev conduz aos Serviços Azure DevOps para garantir que o funcionamento a seco funcionou corretamente.After the migration finishes, a Contoso dev lead signs in to Azure DevOps Services to ensure that the dry run worked properly. Após a autenticação, o Azure DevOps Services precisa de informações para confirmar a organização.After authentication, Azure DevOps Services needs a few details to confirm the organization.

    Screenshot da janela dos Serviços Azure DevOps solicitando informações adicionais da equipa contoso.

    O dev lead pode ver que os projetos foram migrados com sucesso.The dev lead can see that the projects have been migrated successfully. Um aviso perto do topo da página avisa que a conta de secagem será apagada em 15 dias.A notice near the top of the page warns that the dry run account will be deleted in 15 days.

    Screenshot da interface Azure DevOps Services, com uma mensagem a avisar que a conta de secagem será eliminada em 15 dias.

  9. O dev lead abre um dos projetos e, em seguida, seleciona Itens de Trabalho > atribuídos a mim.The dev lead opens one of the projects and then selects Work Items > Assigned to me. Esta página verifica se os dados do item de trabalho foram migrados com sucesso, juntamente com a identidade.This page verifies that the work item data has been migrated successfully, along with the identity.

    Screenshot do painel "Itens de Trabalho" dos Serviços Azure DevOps, exibindo todos os projetos migrados.

  10. Para confirmar que o código-fonte e o histórico foram migrados, o dev chumbo verifica outros projetos e código.To confirm that the source code and history have been migrated, the dev lead checks other projects and code.

    Screenshot do painel "History" dos Serviços Azure DevOps, mostrando que todo o código e história foram migrados.

Executar a migração de produçãoRun the production migration

Agora que a corrida a seco está completa, os administradores de Contoso avançam para a migração da produção.Now that the dry run is complete, Contoso admins move on to the production migration. Eliminam o teste, atualizam as definições de importação e executam a importação novamente.They delete the dry run, update the import settings, and run import again.

  1. No portal Azure DevOps Services, apagam a organização a seco.In the Azure DevOps Services portal, they delete the dry-run organization.

  2. Atualizam o import.json ficheiro para definir o ImportType para ProductionRun.They update the import.json file to set the ImportType to ProductionRun.

    Screenshot do portal Azure DevOps Services, com o campo ImportType definido para ProductionRun.

  3. Como fizeram para a secagem, iniciam a migração executando o seguinte comando:As they did for the dry run, they start the migration by running the following command:

    TfsMigrator import /importFile:C:\TFSMigrator\import.json.TfsMigrator import /importFile:C:\TFSMigrator\import.json.

    Uma mensagem é exibida pedindo aos administradores que confirmem a migração.A message is displayed asking the admins to confirm the migration. Adverte que os dados podem ser guardados num local seguro como área de paragem até sete dias.It warns that data could be held in a secure location as a staging area for up to seven days.

    Screenshot de uma mensagem dos Serviços Azure DevOps avisando que os dados migrados podem ser mantidos por até sete dias.

  4. Na janela de inscrição AD Azure, especificam um pré-in de administração Contoso.In the Azure AD sign-in window, they specify a Contoso admin sign-in.

    Screenshot do sinal AD AZure no ecrã em Visual Studio.

    É exibida uma mensagem de que a importação começou com sucesso.A message is displayed that the import has started successfully.

    Screenshot de uma mensagem dos Serviços Azure DevOps de que a importação foi iniciada com sucesso.

  5. Após cerca de 15 minutos, os administradores vão ao site e vêem as seguintes informações:After about 15 minutes, the admins go to the website and see the following information:

    Screenshot mostrando que os dados estão a ser copiados para a nuvem.

  6. Após o fim da migração, um dev conduz nos Serviços Azure DevOps para garantir que a migração funcionou corretamente.After the migration finishes, a dev lead signs into Azure DevOps Services to ensure that the migration worked properly. Depois de iniciar a sua assinatura, o dev lead pode ver que os projetos foram migrados.After signing in, the dev lead can see that projects have been migrated.

    Screenshot mostrando que os projetos foram migrados.

  7. O dev lead abre um dos projetos e seleciona Itens de Trabalho > atribuídos a mim.The dev lead opens one of the projects and selects Work Items > Assigned to me. Isto mostra que os dados do item de trabalho foram migrados, juntamente com a identidade.This shows that the work item data has been migrated, along with the identity.

    Screenshot mostrando que os dados e identidade do item de trabalho foram migrados.

  8. O dev lidera verifica para confirmar que outros dados de produto de trabalho foram migrados.The dev lead checks to confirm that other work item data has been migrated.

    Screenshot listando dados adicionais de produto de trabalho a confirmar.

  9. Para confirmar que o código-fonte e o histórico foram migrados, o dev chumbo verifica outros projetos e código.To confirm that the source code and history have been migrated, the dev lead checks other projects and code.

    Screenshot listando projeto adicional e migração de código fonte a confirmar.

Mover controlo de fonte de TFVC para GitMove source control from TFVC to Git

Com a migração agora concluída, os administradores da Contoso querem mover a gestão do código fonte da TFVC para Git.With the migration now completed, Contoso admins want to move source code management from TFVC to Git. Os administradores precisam importar o código fonte que está atualmente na sua organização Azure DevOps Services como Git repos na mesma organização.The admins need to import the source code that's currently in their Azure DevOps Services organization as Git repos in the same organization.

  1. No portal Azure DevOps Services, abrem um dos repos da TFVC $/PolicyConnect e revê-lo.In the Azure DevOps Services portal, they open one of the TFVC repos, $/PolicyConnect, and review it.

    Screenshot do repo "$/PolicyConnect" no portal Azure DevOps Services.

  2. Na lista de drop-down de fonte $/PolicyConnect, selecionam o repositório de importação.In the source $/PolicyConnect drop-down list, they select Import repository.

    Screenshot do link "Import repository" no portal Azure DevOps Services.

  3. Na lista de drop-down do tipo Fonte, selecionam TFVC.In the Source type drop-down list, they select TFVC. Na caixa Caminho, especificam o caminho para o repo e, em seguida, selecionam Import.In the Path box, they specify the path to the repo, and then select Import. Decidem deixar a caixa de verificação do Histórico Migratório limpa.They decide to leave the Migrate History check box cleared.

    Screenshot do painel "Import from TFVC".

    Nota

    Como a versão de TFVC e Git controlam a informação de forma diferente, recomendamos que Contoso não emigre a sua história de repositório.Because TFVC and Git store version control information differently, we recommend that Contoso not migrate its repository history. Esta é a abordagem que a Microsoft tomou quando emigrámos o Windows e outros produtos do controlo centralizado da versão para o Git.This is the approach that Microsoft took when we migrated Windows and other products from centralized version control to Git.

  4. Após o fim da importação, os administradores analisam o código.After the import finishes, the admins review the code.

    Screenshot confirmando que a importação é um sucesso.

  5. Repetem o processo para o segundo repositório. $/smarthotelcontainerThey repeat the process for the second repository, $/smarthotelcontainer.

    Screenshot do painel "Import from TFVC" para o segundo repositório.

  6. Após a revisão do dev lead a fonte, eles concordam que a migração para a Azure DevOps Services é feita.After the dev lead reviews the source, they agree that the migration to Azure DevOps Services is done. A Azure DevOps Services torna-se agora a fonte de todo o desenvolvimento dentro das equipas envolvidas na migração.Azure DevOps Services now becomes the source for all development within the teams involved in the migration.

    Screenshot mostrando que a migração para os Serviços Azure DevOps está completa.

Precisa de mais ajuda?Need more help?

Para obter mais informações, consulte repositórios de importação de TFVC a Git.For more information, see Import repositories from TFVC to Git.

Limpeza após a migraçãoClean up after migration

Com a migração agora concluída, a equipa de Contoso precisa de fazer o seguinte:With the migration now complete, the Contoso team needs to do the following:

  • Reveja o artigo post-import para obter informações sobre atividades de importação adicionais.Review the post-import article for information about additional import activities.
  • Ou elimina os repos TFVC ou coloca-os no modo apenas de leitura.Either delete the TFVC repos or place them in read-only mode. As bases de código não devem ser utilizadas, mas podem ser referenciadas para a sua história.The code bases must not be used, but they can be referenced for their history.

Formação pós-migraçãoPost-migration training

A equipa contoso terá de fornecer serviços Azure DevOps e formação git para membros da equipa relevantes.The Contoso team will need to provide Azure DevOps Services and Git training for relevant team members.