Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022
As políticas de retenção controlam por quanto tempo as execuções de pipeline, as versões clássicas e os dados de teste são mantidos em Azure DevOps. Essas configurações ajudam você a equilibrar o uso de armazenamento, a conformidade e a rastreabilidade definindo quando os dados mais antigos devem ser excluídos e o que deve ser mantido por mais tempo. Este artigo explica as opções de retenção disponíveis e como elas se aplicam a Pipelines, Versões e Testes.
Pré-requisitos
| Produto | Requisitos |
|---|---|
| Azure DevOps | - Uma organização Azure DevOps. - Um projeto Azure DevOps. |
| Permissões | - Por padrão, os usuários nos grupos Colaboradores, Administradores de Build, Administradores de Projetos e Administradores de Versão podem gerenciar políticas de retenção. – Para gerenciar políticas de retenção, você precisa de uma das seguintes assinaturas: Enterprise, Test Professional ou MSDN Platforms. - Você também pode comprar acesso mensal Azure Test Plans e atribuir o nível de acesso Basic + Test Plans. Consulte Testando o acesso por função de usuário para obter mais detalhes. |
Importante
Azure Pipelines não dá mais suporte a políticas de retenção por pipeline. É recomendável usar regras de retenção no nível do projeto.
Configurar políticas de retenção
Use estas etapas para abrir as páginas de configurações de retenção em seu projeto e escolher a área de política que você deseja gerenciar.
Entre em seu projeto de Azure DevOps.
Selecione o ícone
Configurações do projeto.Selecione uma das seguintes opções:
- Em Pipelines, selecione Configurações para configurar políticas de retenção para execuções, artefatos, símbolos, anexos e execuções de solicitação de pull.
- Em Pipelines, selecione Retenção de versão para definir as configurações de retenção de versão, inclusive quando as versões são excluídas ou destruídas permanentemente.
- Em Teste, selecione Retenção para configurar por quanto tempo as execuções de teste manuais e automatizadas são mantidas.
O pipeline executa políticas de retenção
Na maioria das vezes, você não precisa manter execuções já concluídas indefinidamente. As políticas de retenção de runs permitem definir por quanto tempo os runs e os dados relacionados são mantidos antes da exclusão.
Vá para a
aba Configurações do seu projeto.Selecione Configurações na seção Pipelines .
Aviso
Azure DevOps não dá mais suporte a regras de retenção por pipeline. A única maneira de configurar políticas de retenção para YAML e pipelines clássicos é por meio das configurações de projeto descritas acima. Não é mais possível configurar políticas de retenção por pipeline.
O número de execuções recentes a serem mantidas para cada configuração de pipeline é interpretado de forma diferente com base no tipo de repositório.
Azure Repos: Azure Pipelines mantém o número configurado de execuções mais recentes para o branch padrão do pipeline e para cada branch protegido no repositório. Uma ramificação protegida é qualquer ramificação com políticas de ramificação configuradas.
Por exemplo, considere um repositório com dois branches:
mainerelease. Se a ramificação padrão do pipeline formainereleasetiver uma política de ramificação,releaseserá tratado como uma ramificação protegida. Se você configurar a retenção para manter três execuções, o Azure Pipelines manterá as três últimas execuções paramain, as três últimas execuções parareleasee as três últimas execuções para todo o pipeline (independentemente da ramificação).O exemplo a seguir pressupõe que a execução mais recente seja listada primeiro. Mostra quais execuções são retidas quando você configura a retenção para manter as três execuções mais recentes (ignorando a configuração baseada em dias):
Executar # Ramo Retido/Não retido Por quê? Executar 10 principal Retido Três mais recentes para principal e três mais recentes para pipeline Executar 9 branch1 Retido Três mais recentes para pipeline Executar 8 branch2 Retido Três mais recentes para pipeline Executar 7 principal Retido Três mais recentes para principal Versão 6 principal Retido Três mais recentes para principal Executar 5 principal Não mantido Nem os três mais recentes para principal, nem para pipeline Executar 4 principal Não mantido Nem os três mais recentes para principal, nem para pipeline Run 3 branch1 Não mantido Nem os três mais recentes para principal, nem para pipeline Executar 2 versão Retido Três mais recentes para lançamento Executar 1 principal Não mantido Nem os três mais recentes para principal, nem para pipeline
O número de dias de retenção é calculado a partir do momento em que a execução é concluída. Por exemplo, há duas execuções na ramificação principal em 19 de janeiro. A execução concluída posteriormente é mantida.
Todos outros repositórios Git: Azure Pipelines mantém o número configurado de execuções mais recentes para todo o pipeline.
TFVC: o Azure Pipelines retém o número configurado de execuções mais recentes para todo o pipeline, independentemente da ramificação.
Quais partes da execução são excluídas
Quando uma execução é excluída, os seguintes dados são removidos:
- Registros
- Todos os artefatos de pipeline e build
- Todos os símbolos
- Binários
- Resultados do teste
- Executar metadados
- Rótulos de origem (TFVC) ou tags (Git)
Pacotes Universais, NuGet, npm e outros pacotes não são regidos pela retenção de execução de pipeline.
Quando as execuções são excluídas
Uma execução será excluída se todas as seguintes condições forem verdadeiras:
- Excede o número de dias definido nas configurações de retenção
- Não é uma das execuções recentes, conforme definido nas configurações de retenção
- Não está marcado para ser retido indefinidamente
- Não é retida por uma versão
As políticas de retenção são processadas uma vez por dia. O tempo de processamento varia porque o trabalho é distribuído ao longo do dia para balanceamento de carga e esse agendamento não pode ser alterado.
Definir automaticamente a concessão de retenção em execuções de pipeline
Leases de retenção permitem que você estenda ou controle o tempo de vida das execuções dos pipelines além dos períodos de retenção configurados. Você pode adicionar ou excluir concessões para um pipeline executado usando a API de Concessão. Você pode chamar essa API de dentro de um pipeline usando um script e variáveis predefinidas para runId e definitionId.
Você pode definir uma concessão por uma duração específica. Por exemplo, uma execução que é implantada em um ambiente de teste pode ser mantida por um período mais curto, enquanto uma execução que é implantada na produção pode ser retida por mais tempo.
Definir manualmente a concessão de retenção em execuções de pipeline
Você pode reter manualmente uma execução de pipeline no menu Mais ações na página Detalhes da execução do pipeline.
Excluir uma execução
Você pode excluir execuções do menu Mais ações na página Detalhes da execução do pipeline.
Observação
Se alguma política de retenção atualmente se aplicar à execução, elas deverão ser removidas antes que a execução possa ser excluída. Para obter instruções, confira Detalhes da execução do pipeline – Excluir uma execução.
Libera políticas de retenção
As políticas de retenção para pipelines de lançamento clássicos determinam por quanto tempo uma versão e sua execução associada são mantidas. Com essas políticas, você pode configurar ambos:
- O número de dias para manter cada versão após a última modificação ou implantação.
- O número mínimo de lançamentos a serem retidos para cada pipeline.
O temporizador de retenção é redefinido sempre que uma versão é modificada ou implantada em um estágio. A configuração de lançamentos mínimos tem prioridade sobre a configuração baseada em dias. Por exemplo, se você definir o mínimo para três versões, as três versões mais recentes serão mantidas, independentemente do número de dias configurados. Você ainda pode excluir essas versões manualmente quando não precisar mais delas. Para obter mais detalhes, consulte as perguntas frequentes mais adiante neste artigo.
O YAML e os pipelines de criação usam a mesma política de retenção de execução. Você pode exibir essas configurações em Configurações do projeto>Pipelines>Configurações.
Política de retenção de versão global
No Azure DevOps Services, você pode exibir essas configurações, mas não pode alterá-las no nível do projeto.
Você pode examinar as configurações globais de retenção de lançamento na página Retenção de lançamento em Configurações do projeto.
A política de retenção máxima define o limite superior de quanto tempo as versões podem ser retidas em todos os pipelines de lançamento. Os autores do pipeline não podem configurar a retenção além desse limite.
A política de retenção padrão define os valores de retenção padrão aplicados aos pipelines de liberação. Os autores de pipeline podem substituir esses padrões.
O controle de Destruição permanente de versões determina por quanto tempo as versões excluídas são mantidas antes da sua remoção definitiva. Pipelines de lançamento individuais não podem substituir essa política.
Política de retenção de versão global
Se você estiver usando Azure DevOps Server local, poderá configurar os padrões e os máximos no nível do projeto para retenção de versão. Você também pode definir quando as versões excluídas são permanentemente destruídas (removidas da guia Excluída no Gerenciador de Build).
A política de retenção máxima define o limite superior de quanto tempo as versões podem ser retidas em todos os pipelines de lançamento. Os autores do pipeline não podem configurar a retenção além desse limite.
A política de retenção padrão define os valores de retenção padrão aplicados aos pipelines de liberação. Os autores de pipeline podem substituir esses padrões.
O controle de Destruição permanente de versões determina por quanto tempo as versões excluídas são mantidas antes da sua remoção definitiva. Pipelines de lançamento individuais não podem substituir essa política.
Definir políticas de retenção no nível da coleção de dados
Se você estiver usando um servidor local, também poderá configurar a retenção ao nível da coleção com regras personalizadas. Essas configurações se aplicam a pipelines de criação clássicos e definem os valores de retenção padrão e máximo para a coleção.
Usar a tarefa Copiar Arquivos para salvar dados por mais tempo
Se você precisar manter a saída de build por mais tempo do que o período de retenção configurado, copie-a para seu próprio local de armazenamento usando a tarefa Copiar Arquivos.
Use Copiar Arquivos em vez de Publicar Artefatos de Compilação, pois os dados publicados como artefatos de compilação ainda estão sujeitos à limpeza de retenção.
perguntas frequentes
Se eu marcar uma execução ou uma versão a ser retida indefinidamente, a política de retenção ainda se aplicará?
Não. Nem a política de retenção do pipeline nem os limites máximos definidos pelo administrador são aplicados quando você marca uma execução individual ou uma versão a ser retida indefinidamente. Ela permanecerá até que você pare de retê-la indefinidamente.
Como especificar que as execuções implantadas na produção serão retidas por mais tempo?
Se você usar versões clássicas para implantar em produção, personalize a retenção no pipeline de lançamento. Defina quantos dias as versões implantadas na produção devem ser mantidas e especifique se as execuções associadas a essas versões são mantidas. Isso substitui a política de retenção de execução.
Se você usar pipelines YAML de vários estágios, a retenção só poderá ser configurada nas configurações do projeto. Você não pode configurar a retenção por ambiente de implantação.
Eu não marquei execuções para serem retidas indefinidamente. No entanto, vejo um grande número de execuções sendo retidas. Como posso evitar isso?
Isso pode ocorrer por um dos seguintes motivos:
- As execuções são marcadas por alguém em seu projeto para serem retidas indefinidamente.
- As execuções são consumidas por uma versão e a versão mantém um bloqueio de retenção nessas execuções. Personalize a política de retenção de versão, conforme explicado acima.
Se as execuções não forem mais necessárias ou se as versões que as retiveram já foram excluídas, você poderá excluir manualmente as execuções.
Como funciona a configuração de "número mínimo de versões a manter"?
As versões mínimas para manter o valor são definidas no nível do estágio. Azure DevOps sempre mantém esse número de versões implantadas mais recentemente para o estágio, mesmo que estejam fora do período de retenção. Um lançamento conta para esse mínimo somente quando a implantação para esse estágio é iniciada. As implantações bem-sucedidas e falhas são contadas. As liberações pendentes de aprovação não são contadas.
Como o período de retenção é decidido quando a versão é implantada em vários estágios com um período de retenção diferente?
O período de retenção final é determinado pelos dias para manter as configurações em todos os estágios em que a versão é implantada, usando o valor máximo entre esses estágios. As versões mínimas a serem mantidas são específicas do estágio e não são alteradas com base em se uma versão foi implantada em um ou vários estágios. Reter artefatos associados só se aplica quando uma versão é implantada em um estágio em que essa opção está habilitada.
Exclui um estágio para o qual tenho algumas versões antigas. Qual retenção será considerada nesse caso?
Depois que um estágio é excluído, suas configurações de retenção no nível do estágio não se aplicam mais. Nesse caso, Azure DevOps usa as configurações de retenção padrão no nível do projeto.
Minha organização exige que mantenhamos compilações e lançamentos por mais tempo do que o permitido nas configurações. Como posso solicitar uma retenção mais longa?
Para manter uma execução ou versão por mais tempo do que os limites de retenção configurados, marque-a para ser mantida indefinidamente. Não há nenhuma configuração para configurar manualmente um período de retenção mais longo. Para obter assistência, entre em contato com Azure DevOps Support.
Você também pode usar APIs REST para baixar informações de execução e artefatos e armazená-los em sua própria conta de armazenamento ou repositório de artefatos.
Perdi algumas execuções. Há uma maneira de recuperá-los?
Se você acredita que as execuções foram perdidas devido a um bug de serviço, crie um chamado de suporte imediatamente. Se uma definição de build tiver sido excluída manualmente mais de uma semana antes, ela não poderá ser recuperada. Se as execuções foram excluídas conforme esperado pela política de retenção, não será possível recuperá-las.
Como posso usar a capacidade Build.Cleanup dos agentes?
Configurar a capacidade Build.Cleanup nos agentes direciona os trabalhos de limpeza apenas para esses agentes, o que mantém os demais agentes disponíveis para trabalhos regulares do pipeline. Quando uma execução de pipeline é excluída, os artefatos armazenados fora do Azure DevOps são limpos por meio de um trabalho de agente. Se os trabalhos de limpeza saturarem seu pool, designe um subconjunto de agentes como agentes de limpeza. Quando qualquer agente tiver Build.Cleanup definido, somente esses agentes executarão trabalhos de limpeza. Para habilitar isso, acesse Agente>Capacidades e defina Build.Cleanup como 1.
O que acontece com o compartilhamento de arquivos do Artifacts quando a criação é excluída
Quando uma criação com compartilhamento de arquivos do Artifacts é excluído, uma nova tarefa de criação é colocada na fila em um agente de criação para limpeza desses arquivos. Um agente é escolhido para executar essa tarefa com base nos seguintes critérios: Há um agente com funcionalidade Build.Cleanup disponível?
O agente que executou o build está disponível?
Um agente do mesmo pool está disponível?
Está disponível um agente de um pool semelhante?
Algum agente está disponível?
Os resultados do teste automatizado que são publicados como parte de uma versão são mantidos até que a versão seja excluída?
Os resultados do teste publicados em uma fase de versão são mantidos de acordo com a política de retenção de teste, não com a política de retenção de versão. Se você precisar que os resultados do teste sejam mantidos enquanto a versão estiver ativa, defina a retenção de execução de teste automatizada nas Configurações do Projeto para Nunca excluir. Isso garante que os resultados do teste sejam excluídos somente quando a versão for excluída.
Os resultados do teste manual são excluídos?
Não. Os resultados do teste manual não são excluídos.
Como fazer para preservar meus rótulos ou marcas de controle de versão?
Se rótulos ou marcas precisarem ser preservados depois que uma criação for excluída, aplique-os em uma tarefa de pipeline, adicione-os manualmente fora do pipeline ou mantenha a criação indefinidamente.
Importante
Todos os rótulos ou marcas de controle de versão aplicados durante um pipeline de build que não são criados automaticamente pela tarefa Fontes são preservados, mesmo que o build seja excluído. No entanto, rótulos ou marcas criados automaticamente pela tarefa Fonte durante uma criação são considerados artefatos de criação e são excluídos juntamente com a criação.
O que acontece com pipelines consumidos em outros pipelines?
As versões clássicas retêm pipelines que consomem automaticamente.
O que acontece com pipelines consumidos em outros pipelines?
As versões clássicas retêm pipelines que consomem automaticamente. Se você estiver usando YAML, também poderá criar um pipeline YAML de vários estágios para representar sua versão e consumir outro pipeline YAML nele como um recurso. O pipeline de recursos será retido automaticamente, desde que o pipeline de lançamento seja retido.