Pointer — página inicial do catálogo
Pré-requisitos · PR-MIG-03 · oferta PS-MIG-03

Pré-requisitos: Migração Azure DevOps para GitLab self-managed

Checklist de prontidão

Marcações ficam salvas somente neste navegador.

  • Preflight automático
  • Preflight automático
  • Preflight automático
  • Preflight automático
  • Preflight automático
  • Preflight automático
  • Preflight automático
  • Reunião de prontidão
  • Reunião de prontidão
  • Reunião de prontidão
  • Reunião de prontidão
  • Reunião de prontidão
  • Cliente
  • Cliente
  • Cliente
  • Cliente

Documento enviado ao cliente depois da escolha do serviço PS-MIG-03 — Migração Azure DevOps para GitLab self-managed. Lista o que o cliente provisiona, as credenciais que entrega, as informações a enviar à Pointer, o checklist de prontidão e a matriz do que é migrado. O prazo de devolução das informações e do checklist é definido no kick-off.

Os itens do checklist marcados como Preflight automático são conferidos pelo pipeline Pointer contra a instância de destino real antes da primeira onda; os demais são conferidos na reunião de prontidão ou pelo próprio cliente. Nenhuma onda é executada com erro no preflight.

  1. Origem e destino suportados
  2. Configuração da instância de destino
  3. Organização e projetos no Azure DevOps
  4. Host de migração
  5. Runner do engajamento
  6. Rede
  7. Usuários e contribuições
  8. Governança da migração
  9. Critérios de aceite por onda
  10. Entrega das credenciais
  11. Credenciais que o cliente entrega à Pointer
  12. Informações a enviar
  13. Matriz de itens migrados
  14. Checklist de prontidão

1. Origem e destino suportados

ItemSuportado
OrigemAzure DevOps Services, repositórios Git. Azure DevOps Server: sob consulta (escopo e condições definidos em proposta específica, com execução piloto). Repositórios TFVC: fora do escopo
DestinoSomente GitLab self-managed do cliente, inclusive instância implantada pela Pointer
MétodoA plataforma GitLab não tem importador nativo de Azure DevOps. O GitLab Congregate lê o Azure DevOps no host de migração (APIs e Git), monta arquivos de exportação no formato GitLab e a instância de destino os importa por arquivo
Estrutura no destinoGrupo pai + projeto do Azure DevOps + repositório; o grupo do projeto é criado pelo pipeline antes da importação
VersõesAzure DevOps Services: serviço. Azure DevOps Server: versões definidas na proposta e conferidas na execução piloto
Destinos fora do escopoGitLab.com e GitLab Dedicated como destino: roadmap
Outras origensGitLab (PS-MIG-01), GitHub (PS-MIG-02), Bitbucket Cloud (PS-MIG-04); Bitbucket Server/Data Center e AWS CodeCommit: roadmap
  • Com origem Azure DevOps não há arquivamento da origem, reescrita de referências nos repositórios nem contagem independente origem × destino; o pipeline verifica cada importação pelo status e pelas estatísticas da importação.
  • Azure DevOps Server: o runbook do GitLab Congregate prevê uma aplicação própria para listar os usuários.

2. Configuração da instância de destino

ItemEspecificaçãoObrigatório
Fonte de importação GitLab exportHabilitada nas configurações de importação e exportação da instância (Admin → Settings → General → Import and export settings, fontes de importação). Em GitLab self-managed nenhuma fonte de importação vem habilitada por padrão. O preflight reprova se ausenteSim
Grupo paiGrupo existente, privado ou interno, que recebe a migração. O preflight reprova grupo inexistente ou públicoSim
Token de administradorA importação por arquivo com associação de autoria por e-mail e a criação de usuários exigem token de administrador no destinoSim

3. Organização e projetos no Azure DevOps

  • O e-mail de cada usuário no Azure DevOps (o GitLab Congregate usa o mailAddress da Graph API) é igual ao e-mail do usuário no destino.
  • O GitLab Congregate lista só os usuários dos times do projeto no Azure DevOps.
  • Por padrão são migrados todos os pull requests e todos os work items de backlog de cada projeto da onda; o pipeline não aplica filtro de data.
  • O GitLab Congregate clona os repositórios por Git com o PAT; se o clone com PAT falhar, o runbook do GitLab Congregate orienta um credential helper no host de migração.
  • Variáveis secretas e variable groups ligados ao Azure Key Vault não são migrados e são recriados no destino.
  • Durante a janela da onda, os repositórios e work items da onda não recebem alterações no Azure DevOps.

4. Host de migração

ItemEspecificaçãoObrigatório
MáquinaLinux x86_64 dedicada ao engajamento, sem outros serviços: o usuário do runner participa do grupo docker, o que equivale a root no host. Um host por clienteSim
Recursos de partida4 vCPU, 16 GB de RAM e 100 GB de disco SSD (imagem do GitLab Congregate com cerca de 3,3 GB; o banco MongoDB da ferramenta cresce com a listagem da origem). A documentação do GitLab Congregate (página Migration Workflows) pede, no mínimo, ambiente com Docker e 4 CPU, 8 GB de RAM e 20 GB de discoSim
ContêineresDocker Engine e Docker Compose v2; a ausência reprova o início de cada jobSim
Swap2 GB de swap, conforme a documentação do GitLab CongregateNão
Disco para exportaçõesOs arquivos de exportação são montados no host: disco dimensionado para os maiores repositórios da onda, conforme a orientação da documentação do GitLab Congregate de dimensionar o disco para as exportaçõesSim
CertificadosCertificado válido no destino. CA corporativa em arquivo no host (arquivo inexistente reprova o job), somada às raízes do contêiner do GitLab CongregateCondicional: CA interna
ProxyProxy de saída informado no plano de migração e configurado também no daemon DockerCondicional: proxy corporativo
AcompanhamentoA interface do GitLab Congregate e o Flower ficam só em 127.0.0.1 do host; o acompanhamento é por túnel SSH (usuário@host)Não
  • No encerramento, o pipeline remove a stack e todos os dados do engajamento no host (listagens, exportações, logs e resultados).

5. Runner do engajamento

ItemEspecificaçãoObrigatório
GitLab RunnerInstalado no host de migração, executor shell, registrado no projeto do engajamento na GitLab.com da Pointer com o token de registro criado nesse projetoSim
ConfiguraçãoRunner de projeto com a tag do engajamento; Run untagged jobs desmarcado; Protected e Lock to current projects marcados; tempo máximo de job de 8 horas ou maisSim
Usuário do runnergitlab-runner no grupo docker; em Ubuntu, remover /home/gitlab-runner/.bash_logout (o clear_console encerra jobs shell)Sim
EncerramentoRunner removido do projeto e desinstalado do hostSim

6. Rede

ConexãoProtocolo e observaçãoObrigatório
Host de migração → Azure DevOps (APIs e repositórios Git)HTTPS; https://dev.azure.com/<organização> no Azure DevOps Services ou o endereço do Azure DevOps ServerSim
Host de migração → instância de destinoHTTPS: envio dos arquivos de exportação e chamadas de APISim
Host de migração → gitlab.comHTTPS: runner e projeto do engajamentoSim
Host de migração → registry.gitlab.comHTTPS: imagens do GitLab Congregate e da plataforma Pointer. Para pull de registry.gitlab.com, a documentação da GitLab.com lista também *.storage.googleapis.com e *.cdn.registry.gitlab-static.netSim
Host de migração → Docker HubHTTPS: imagens do MongoDB e do RedisSim
Estação do engenheiro → host de migraçãoSSH, para o túnel de acompanhamentoNão
  • A instância de destino não precisa alcançar o Azure DevOps: o host de migração lê o Azure DevOps e o destino importa por arquivo.
  • O host de migração só faz conexões de saída. Espelhos internos equivalentes podem substituir gitlab.com, registry.gitlab.com e Docker Hub.
  • Operação sem acesso à internet (air-gapped) está no roadmap.

7. Usuários e contribuições

  • Não há usuários placeholder: autoria e memberships são associadas pelo e-mail no momento da importação. Usuário inexistente no destino nesse momento fica com a autoria na conta da importação, sem reatribuição depois.
  • Opção 1: o GitLab Congregate cria no destino, antes da primeira onda, os usuários dos times dos projetos do Azure DevOps (senha aleatória ou redefinição pelo usuário; inativos só quando pedido), e o pipeline confere cada um pelo e-mail.
  • Opção 2: usuários provisionados no destino por LDAP ou SAML, com o mesmo e-mail do Azure DevOps, antes da primeira onda.
  • Depois da importação, o GitLab Congregate remove os membros diretos dos projetos importados; para as memberships, a matriz do GitLab Congregate orienta SAML (JIT), SCIM ou SAML Group Links no destino.
  • A conta dona do token do destino é a conta da importação.

8. Governança da migração

  • Aprovador de cada onda e do rollback, do lado do cliente.
  • Janela de manutenção de cada onda e congelamento de escrita no Azure DevOps durante a janela.
  • Política de usuários (criação pelo GitLab Congregate ou provisionamento por LDAP ou SAML) concluída antes da primeira onda.
  • Comunicação aos usuários sobre o fim do uso dos repositórios no Azure DevOps (o pipeline não arquiva a origem Azure DevOps).
  • Responsável por cada item de tratamento manual da matriz, inclusive a conversão dos pipelines YAML e a recriação das variáveis secretas.

9. Critérios de aceite por onda

  • Antes da primeira onda: todos os usuários com situação “existe no destino” no relatório de usuários, quando a criação pelo GitLab Congregate está no plano.
  • Relatório da onda sem erro: todo repositório existe no destino e nenhuma importação terminou com falha.
  • Alertas (relações com falha, diferença entre objetos lidos e importados) analisados e aceitos ou corrigidos, com registro no registro de decisões.
  • Validação funcional pelo cliente nos projetos críticos da onda: clone, merge requests, issues e autoria.

10. Entrega das credenciais

Cada credencial é cadastrada como variável de CI/CD do projeto do engajamento, com as opções Protected e Masked and hidden e escopo restrito ao ambiente de migração, que é protegido e exige aprovação para a migração e o rollback de cada onda. O nome do usuário do Azure DevOps também fica em variável do ambiente, fora do repositório do engajamento. O pipeline lista, sem valores, as variáveis exigidas pelo plano, e o preflight reprova se faltar alguma. A configuração do GitLab Congregate com os tokens só existe durante cada job no host de migração.

Tokens nunca são colados em chat, issue ou arquivo; se isso ocorrer, o token é revogado e outro é emitido. No encerramento, os tokens usados na origem e no destino são revogados e as contas de administrador criadas para o engajamento são desativadas.

11. Credenciais que o cliente entrega à Pointer

Nenhum valor secreto é enviado por e-mail, chat, issue ou arquivo. Cada credencial é cadastrada como variável de CI/CD protegida no projeto do engajamento, com escopo do ambiente, e revogada no encerramento.

CredencialFinalidadePermissõesFormato e validadeObrigatório
Token de acesso pessoal da instância de destinoUsado pelo GitLab Congregate (criação de usuários, importação por arquivo e pós-importação), pela conferência de usuários, pela verificação das importações e pelo rollback.Escopo api, e também admin_mode quando o Admin Mode estiver habilitado ou quando for usada uma conta de serviço (runbook do GitLab Congregate). Usuário administrador da instância: a criação de usuários sem administrador reprova no preflight. Personal access token da instância GitLab de destino, cadastrado como variável de CI/CD PS_MIG_DESTINO_TOKEN (Protected, Masked and hidden, escopo do ambiente de migração)
Expiração na data estimada da última onda, conforme a documentação do GitLab Congregate; o preflight alerta com menos de 7 dias. Revogado no encerramento.
Sim
Personal access token (PAT) do Azure DevOpsUsado pelo GitLab Congregate para listar organização, projetos, repositórios, times e usuários, clonar os repositórios, ler pull requests, work items e anexos e montar a exportação.Pipeline Pointer: leitura em Code, Project and Team, Work Items e Graph. Documentação do GitLab Congregate: escopo Read (ou Full access) e usuário do token administrador da organização (por exemplo, com o papel Azure DevOps Administrator do Microsoft Entra). O papel exigido na organização é definido na reunião de prontidão. PAT do Azure DevOps, cadastrado como variável de CI/CD PS_MIG_ORIGEM_TOKEN (Protected, Masked and hidden, escopo do ambiente de migração)
Expiração na data estimada da última onda. Revogado no encerramento.
Sim
Usuário do Azure DevOps dono do PATIdentificação do usuário do PAT, exigida pelo plano de migração com origem Azure DevOps; sem ela, o preflight reprova.Mesmo usuário do PAT. Texto, cadastrado como variável do ambiente de migração PS_MIG_ORIGEM_USUARIO (fora do repositório, por ser dado pessoal)
Até o encerramento
Sim

12. Informações a enviar

Informações sem sigilo, devolvidas pelo cliente antes da reunião de prontidão. Os campos marcados como obrigatórios são conferidos pela validação automática do pipeline.

Origem

InformaçãoExemploObrigatórioObservação
Tipo de origemAzure DevOps ServicesSimAzure DevOps Services ou Azure DevOps Server (sob consulta).
URL da organizaçãohttps://dev.azure.com/orgao-exemploSimNo Azure DevOps Server, o endereço da coleção.
Projetos do Azure DevOps no escoposistemas-internos, portalSim
Tipos de work item em usoEpic, Feature, User Story, Task, BugSimEpic e Feature não migram no fluxo atual.
Repositórios TFVC existentesNãoSimTFVC fica fora do escopo.

Destino

InformaçãoExemploObrigatórioObservação
URL da instância de destinohttps://gitlab.exemplo.gov.brSim
Versão e nível de assinatura do destino19.4.1, PremiumSim
Grupo pai no destinomigrados-adoSimGrupo privado ou interno existente.

Host de migração e rede

InformaçãoExemploObrigatórioObservação
Nome e sistema operacional do host de migraçãohost-migracao.exemplo.gov.br, Ubuntu 24.04Sim
Proxy de saídahttps: http://proxy.exemplo.gov.br:3128; exceções: .exemplo.gov.brCondicional: proxy corporativoHTTPS, HTTP e exceções.
Caminho da CA corporativa no host/etc/pki/ca-trust/source/anchors/ac-exemplo.pemCondicional: CA internaCaminho absoluto de arquivo existente no host.
Acesso SSH para acompanhamentousuario@host-migracao.exemplo.gov.brNãoTúnel para a interface do GitLab Congregate.

Usuários

InformaçãoExemploObrigatórioObservação
Política de usuáriosCriação pelo GitLab Congregate antes das ondasSimCriação pelo GitLab Congregate ou provisionamento por LDAP ou SAML com o mesmo e-mail.
Senha dos usuários criadosSenha aleatóriaCondicional: criação de usuáriosSenha aleatória (padrão) ou redefinição de senha pelo usuário.
Incluir usuários inativosNãoCondicional: criação de usuários
Confirmação de e-mails iguais no Azure DevOps e no destinoSimSim

Ondas

InformaçãoExemploObrigatórioObservação
Projetos do Azure DevOps de cada ondapiloto: portalSimO mesmo projeto não se repete entre ondas. Também por planilha (colunas onda e projeto).
Nome, data e descrição de cada ondapiloto; 10/11/2026; projeto de baixo riscoSimA primeira onda é a piloto.
Janela de manutenção de cada onda10/11/2026, 19h às 23hSim
Aprovador de cada onda e do rollbackNome e cargoSim
Janela de rollback24 horasNãoDe 1 a 720 horas; padrão 24.
Confirmação do congelamento de escrita no Azure DevOps durante a janelaSimSim

Pós-migração

InformaçãoExemploObrigatórioObservação
Responsáveis pelos itens de tratamento manualPipelines YAML e variáveis secretas: equipe de plataformaSimConforme a matriz.

Contatos

InformaçãoExemploObrigatórioObservação
PatrocinadorNome, e-mail, telefoneSim
Ponto focal técnicoNome, e-mail, telefoneSim
Administrador da organização no Azure DevOpsNome, e-mailSim
Administrador da instância de destinoNome, e-mailSim
Infraestrutura, rede e segurançaNome, e-mailSimHost, firewall, proxy e certificados.

13. Matriz de itens migrados

Nativo Migrado pelo método oficial (importação por arquivo da instância de destino, a partir da exportação montada pelo GitLab Congregate), disparado pelo pipelinePipeline Pointer Tratado pelo pipeline Pointer após a importação (pós-importação do GitLab Congregate)Ajuste manual Exige ajuste manual após a migração (com responsável definido no plano)Não migra Não é migrado; recriação fora do escopo, salvo acordo

O tratamento de cada item segue a documentação oficial do método de migração e é conferido na onda piloto do engajamento.

Repositório

ItemTratamentoObservação
Repositório Git (commits, branches, tags)NativoHistórico e autoria (nome e e-mail) dos commits.
Políticas de branch (mínimo de revisores, resolução de comentários, tipos de merge, build validation)Ajuste manualO GitLab Congregate só migra políticas de branch com uma opção que o pipeline não habilita.
Repositórios TFVCAjuste manualA documentação GitLab informa que não há ferramenta da GitLab para migrar de TFVC para Git. Conversão para Git fora do pipeline e fora do escopo desta oferta.

Pull requests → merge requests

ItemTratamentoObservação
Pull requests (autor, responsáveis, revisores, quem fez o merge, quem fechou, comentários)NativoTodos os pull requests do projeto (o pipeline não aplica filtro de data).
Anexos de pull requests e de work itemsPipeline PointerEtapa fixa do pós-importação do GitLab Congregate: baixa do Azure DevOps, envia ao destino e reescreve os links.
Vínculo entre work item e pull requestNativoReferências cruzadas nas descrições (seções de issues e merge requests relacionados), geradas na exportação; a matriz do GitLab Congregate classifica como parcial.

Work items → issues

ItemTratamentoObservação
Work items de backlog (Bug, Task, User Story, Issue, Product Backlog Item, Requirement, Impediment)NativoViram issues do projeto com título, descrição convertida de HTML para Markdown, estado (New e Active → aberta; Resolved e Closed → fechada), autor, responsável, comentários, e tipo e tags como labels.
Work item EpicNão migraNo fluxo do pipeline (ondas de projeto, com o grupo do projeto criado antes), o Epic não vira issue nem épico. A documentação do GitLab Congregate descreve Epic e Feature como épicos de grupo, tratados na importação de grupo, que não roda quando o grupo já existe.
Work item FeatureNão migraNível de portfólio, com o mesmo tratamento do Epic no GitLab Congregate.
Campos personalizados e tipos de work item personalizadosNão migraO pipeline não habilita as opções do GitLab Congregate para campos e tipos personalizados.
Azure Test PlansNão migraSem equivalente na plataforma GitLab, segundo a matriz do GitLab Congregate.

CI/CD

ItemTratamentoObservação
Pipelines YAML (Azure Pipelines)Ajuste manualConversão para GitLab CI/CD fora da migração; o conversor de pipelines do GitLab Congregate não é usado pelo pipeline Pointer.
Variáveis secretas e variable groups ligados ao Azure Key VaultAjuste manualNão migrados; recriados manualmente no destino (documentação do GitLab Congregate).

Pacotes e registries

ItemTratamentoObservação
Imagens do Azure Container RegistryAjuste manualFora do fluxo principal do GitLab Congregate; a cópia de imagens do pipeline atende só origem GitLab.

Usuários e permissões

ItemTratamentoObservação
Permissões e memberships do Azure DevOpsAjuste manualNão suportado pelo GitLab Congregate, que orienta SAML (JIT), SCIM ou SAML Group Links; o GitLab Congregate remove os membros diretos dos projetos após a importação.

Notas da matriz

  • A confirmar na onda piloto: variable groups com valores não secretos (no GitLab Congregate viram variáveis de CI/CD de grupo na importação de grupo, que o fluxo atual do pipeline não executa); wikis de projeto e de código (tratadas na importação de grupo do GitLab Congregate; o destino da wiki de código diverge entre os documentos do GitLab Congregate); feeds do Azure Artifacts (a matriz do GitLab Congregate classifica como parcial e em andamento; fora do pipeline).
  • Limitação do fluxo do pipeline: o work item Epic não vira issue nem épico.
  • Azure DevOps Server: toda a matriz é conferida na onda piloto.

14. Checklist de prontidão

Itens conferidos antes da execução. "Preflight automático" indica verificação feita pelo pipeline contra o ambiente real; os demais são conferidos na reunião de prontidão ou pelo cliente.

☐ItemVerificado por
☐Docker Engine e Docker Compose v2 presentes no host; CA informada existente no host (verificado na preparação do host).Preflight automático
☐Variáveis de CI/CD exigidas pelo plano cadastradas, inclusive o usuário do Azure DevOps.Preflight automático
☐Instância de destino acessível e token do destino válido, com papel de administrador.Preflight automático
☐Token do destino com validade maior que 7 dias.Preflight automático
☐Fonte de importação GitLab export habilitada no destino.Preflight automático
☐Grupo pai no destino existente e privado ou interno.Preflight automático
☐Configuração do GitLab Congregate validada.Preflight automático
☐PAT do Azure DevOps com os escopos de leitura exigidos e papel na organização definido.Reunião de prontidão
☐Runner online, com a tag do engajamento, protegido, travado no projeto e com tempo máximo de job de 8 horas ou mais.Reunião de prontidão
☐Plano de ondas com onda piloto, janelas, aprovadores e janela de rollback definidos.Reunião de prontidão
☐Política de usuários definida e e-mails iguais no Azure DevOps e no destino.Reunião de prontidão
☐Azure DevOps Server: onda piloto definida.Reunião de prontidão
☐Usuários criados ou provisionados no destino antes da primeira onda.Cliente
☐Host de migração provisionado conforme a especificação, com saída HTTPS para Azure DevOps, destino, gitlab.com, registry.gitlab.com e Docker Hub.Cliente
☐PAT do Azure DevOps e token do destino emitidos com escopos, papéis e validade exigidos e cadastrados como variáveis protegidas.Cliente
☐Congelamento de escrita comunicado aos usuários do Azure DevOps para a janela de cada onda.Cliente