Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Servicios de Azure DevOps | Azure DevOps Server | Azure DevOps Server 2022
Las directivas de retención controlan cuánto tiempo se mantienen las ejecuciones de canalización, las versiones clásicas y los datos de prueba en Azure DevOps. Esta configuración le ayuda a equilibrar el uso, el cumplimiento y la rastreabilidad del almacenamiento definiendo cuándo debe eliminar los datos más antiguos y qué datos debe conservar más tiempo. Este artículo explica las opciones de retención disponibles y cómo se aplican a los canales, las versiones y las pruebas.
Requisitos previos
| Product | Requisitos |
|---|---|
| Azure DevOps | - Una organización Azure DevOps. - Un proyecto Azure DevOps. |
| Permisos | - De forma predeterminada, puede administrar directivas de retención si es miembro de los grupos Colaboradores, Administradores de compilación, administradores de Project o Administradores de versiones. - Para administrar las directivas de retención, necesita una de las siguientes suscripciones: Enterprise, Test Professional o MSDN Platforms. - También puede comprar acceso mensual a "Azure Test Plans" y asignar el nivel de acceso Basic + Test Plans. Para obtener más información, consulte Probar el acceso por rol de usuario. |
Importante
Azure Pipelines ya no admite políticas de retención por canalización. Se recomienda usar reglas de retención de nivel de proyecto.
Configuración de las directivas de retención
Para abrir las páginas de configuración de retención en el proyecto y elegir el área de directiva que desea administrar, siga estos pasos:
Inicie sesión en el proyecto de Azure DevOps.
Seleccione el icono
>Configuración del proyecto.Seleccione una de las siguientes opciones:
- En Canalizaciones, seleccione Configuración para configurar retenciones para las ejecuciones, los artefactos, los símbolos, los datos adjuntos y las ejecuciones de solicitud de incorporación de cambios.
- En Canalizaciones, seleccione Retención de versión para configurar las opciones de retención de versiones, incluido cuándo las versiones se eliminan o se destruyen permanentemente.
- En Prueba, seleccione Retención para configurar cuánto tiempo se conservan las ejecuciones de pruebas manuales y automatizadas.
Directivas de retención de ejecuciones de canalización
En la mayoría de los casos, no es necesario conservar las ejecuciones completadas de forma indefinida. Las directivas de retención de ejecuciones permiten definir cuánto tiempo se conservan las ejecuciones y los datos relacionados antes de la eliminación.
Vaya a la pestaña
>Configuración de la configuración del proyecto.En la sección Canalizaciones , seleccione Configuración:
- Establezca cuántos días se mantendrán artefactos, símbolos y datos adjuntos.
- Establezca el número de días que se deben mantener las ejecuciones.
- Establezca el número de días que se deben mantener las ejecuciones de solicitudes de incorporación de cambios.
- Establezca el número de ejecuciones recientes que se mantendrán para cada canalización.
Advertencia
Azure DevOps ya no admite normas de retención por canalización. La única manera de configurar directivas de retención para canalizaciones YAML y clásicas es a través de la configuración del proyecto descrita anteriormente. Ya no se pueden configurar directivas de retención por canalización.
El número de ejecuciones recientes que se conservarán para cada configuración de canalización se interpreta de forma diferente en función del tipo de repositorio:
Azure Repos: Azure Pipelines conserva el número configurado de ejecuciones más recientes para la rama predeterminada de pipeline y para cada rama protegida del repositorio. Una rama protegida es cualquier rama con directivas de rama configuradas.
Por ejemplo, considere un repositorio con dos ramas:
mainyrelease. Si la rama predeterminada de la canalización esmainyreleasetiene una directiva de rama,releasese trata como una rama protegida. Si configura la retención para mantener tres ejecuciones, Azure Pipelines mantiene las tres últimas ejecuciones paramain, las tres últimas ejecuciones dereleasey las tres últimas ejecuciones para la canalización general (independientemente de la rama).En el ejemplo siguiente se supone que la ejecución más reciente aparece primero. Muestra qué ejecuciones se conservan al configurar la retención para mantener las tres ejecuciones más recientes (ignorando la configuración basada en días).
Ejecución n.º Rama Retenido/No retenido ¿Por qué? Ejecución 10 main (principal) Retenido Las 3 últimas para la rama principal y las 3 últimas para el canal Ejecución 9 rama1 Retenido Las 3 más recientes para la canalización Ejecución 8 branch2 Retenido Las 3 más recientes para la canalización Corrida 7 main (principal) Retenido Las 3 más recientes para main Iteración 6 main (principal) Retenido Las 3 más recientes para main Ejecución 5 main (principal) No se conserva No las 3 últimas para la rama principal ni para el canal Iteración 4 main (principal) No se conserva No las 3 últimas para la rama principal ni para el canal Run 3 rama1 No se conserva No las 3 últimas para la rama principal ni para el canal Ejecutar 2 lanzamiento Retenido Las 3 más recientes para la versión Ejecución 1 main (principal) No se conserva No las 3 últimas para la rama principal ni para el canal El número de días de retención se calcula a partir de la fecha en que finaliza la ejecución. Por ejemplo, hay dos ejecuciones en una rama principal el 19 de enero. Se conserva la ejecución que finalizó más tarde.
Todos los demás repositorios de Git: Azure Pipelines conserva el número configurado de ejecuciones más recientes para toda la canalización.
Team Foundation Version Control (TFVC): Azure Pipelines conserva el número configurado de ejecuciones más recientes para toda la canalización, independientemente de la rama.
Se eliminan qué partes de la ejecución
Cuando se elimina una ejecución, se quitan los datos siguientes:
- Registros
- Todos los artefactos de canalización y compilación
- Todos los símbolos
- Binarios
- Resultados de pruebas
- Metadatos de la ejecución
- Etiquetas de origen (TFVC) o etiquetas (Git)
La retención de ejecuciones del canal no se aplica a los paquetes universales, NuGet, npm y otros paquetes.
¿Cuándo se eliminan las ejecuciones de pruebas?
Se elimina una ejecución si se cumplen todas las condiciones siguientes:
- Supera el número de días configurados en la configuración de retención.
- No se trata de una de las ejecuciones recientes tal y como se ha configurado en los ajustes de retención.
- No está marcado para la retención indefinida.
- No está retenida por una versión.
Las directivas de retención se procesan una vez al día. El tiempo de procesamiento varía porque el trabajo se distribuye durante todo el día para el equilibrio de carga. No se puede cambiar esta programación.
Establecimiento automático de la concesión de retención en las ejecuciones de canalización
Las concesiones de retención permiten ampliar o controlar la duración de las ejecuciones de canalización más allá de los períodos de retención configurados. Puede agregar o eliminar arrendamientos para la ejecución de una canalización mediante la API de Arrendamiento. Puede llamar a esta API desde una canalización mediante un script y variables predefinidas para runId y definitionId.
Puede establecer un arrendamiento por un período específico. Por ejemplo, puede retener una ejecución que se implemente en un entorno de prueba durante un periodo más corto. Puede retener una ejecución que se implemente en producción durante más tiempo.
Establecimiento manual de la concesión de retención en las ejecuciones de canalización
Puede establecer manualmente que se retenga una ejecución de canalización mediante el menú Más acciones de la página Detalles de ejecución de la canalización.
Eliminación de una ejecución
Puede eliminar ejecuciones desde el menú Más acciones de la página Detalles de ejecución de la canalización.
Nota:
Si alguna de las políticas de retención se aplica en este momento a la ejecución, tiene que eliminarlas para poder suprimir la ejecución. Para obtener instrucciones, consulte Detalles de ejecución de pipeline: Eliminar una ejecución.
Establece políticas de retención
Las directivas de retención de versiones para canalizaciones de versión clásica determinan cuánto tiempo se mantiene una versión y su ejecución asociada. Con estas directivas, puede configurar ambas:
- Número de días para retener cada versión después de su última modificación o implementación.
- Número mínimo de versiones que se conservarán para cada canalización.
El temporizador de retención se restablece cada vez que se modifica o implementa una versión en una fase. La configuración de versiones mínimas tiene prioridad sobre la configuración basada en días. Por ejemplo, si establece el mínimo en tres versiones, las tres versiones más recientes se conservan independientemente del número de días configurados. Todavía puede eliminar estas versiones manualmente cuando ya no las necesite. Para obtener más información, consulte las preguntas más frecuentes más adelante en este artículo.
Las canalizaciones YAML y build usan la misma directiva de retención de ejecuciones. Puede ver estas opciones en Project settings>Pipelines>Settings.
Directiva de retención de versiones global
En Azure DevOps Services, puede ver esta configuración, pero no puede cambiarla en el nivel de proyecto.
Puede revisar la configuración global de retención de versiones desde la página Retención de versiones en la Configuración del proyecto.
- Política de retención máxima: define el límite máximo de tiempo durante el que se pueden retener las versiones en todas las canalizaciones de versiones. Los autores de canalizaciones no pueden configurar la retención más allá de este límite.
- Política de retención predeterminada: Define los valores de retención predeterminados que se aplican a las canalizaciones de lanzamiento. Los autores de las canalizaciones pueden invalidar estos valores predeterminados.
- Destruya permanentemente las versiones: controla cuánto tiempo se conservan las versiones eliminadas antes de la eliminación permanente. Las canalizaciones de versión individuales no pueden invalidar esta directiva.
Directiva de retención de versiones global
Si usa Azure DevOps Server local, puede configurar los valores predeterminados y máximos de nivel de proyecto para la retención de versiones. También puede establecer cuando las versiones eliminadas se destruyen permanentemente. (Se quitan de la pestaña Eliminados en el Explorador de compilación).
- Política de retención máxima: define el límite máximo de tiempo durante el que se pueden retener las versiones en todas las canalizaciones de versiones. Los autores de canalizaciones no pueden configurar la retención más allá de este límite.
- Política de retención predeterminada: Define los valores de retención predeterminados que se aplican a las canalizaciones de lanzamiento. Los autores de las canalizaciones pueden invalidar estos valores predeterminados.
- Destruya permanentemente las versiones: controla cuánto tiempo se conservan las versiones eliminadas antes de la eliminación permanente. Las canalizaciones de versión individuales no pueden invalidar esta directiva.
Establecer directivas de retención a nivel de colección
Si usa un servidor local, también puede configurar la retención a nivel de colección con reglas personalizadas. Esta configuración se aplica a las canalizaciones de compilación clásicas y define los valores de retención predeterminados y máximos de la colección.
Usa la tarea Copiar archivos para guardar datos durante más tiempo
Si necesita mantener la salida de compilación más tiempo que el período de retención configurado, cópiela en su propia ubicación de almacenamiento usando la tarea Copiar archivos.
Utilice Copiar archivos en lugar de Publicar artefactos de compilación, ya que los datos publicados como artefactos de compilación siguen estando sujetos a la limpieza de retención.
Preguntas más frecuentes
Si se marca una ejecución o una versión para que se conserve indefinidamente, ¿se sigue aplicando la directiva de retención?
No. La directiva de retención de la canalización y los límites máximos establecidos por el administrador no se aplican cuando se marca una ejecución o un lanzamiento individual para que se retenga indefinidamente. Permanece hasta que dejes de retenerlo indefinidamente.
¿Cómo puedo especificar que los procesos implementados en producción deberían conservarse por más tiempo?
Si usa versiones clásicas para implementar en producción, personalice la retención en la canalización de versión. Establezca cuántos días desea conservar las versiones implementadas en producción y especifique que las ejecuciones asociadas a esas versiones se conservan. Esta configuración anula la directiva de retención de ejecuciones.
Si usa canalizaciones YAML de varias fases, solo puede configurar la retención en la configuración del proyecto. No puedes configurar la retención por entorno de implementación.
No he marcado ninguna ejecución para que se conserve indefinidamente, pero se están conservando muchas ejecuciones. ¿Cómo puedo evitar este comportamiento?
Este comportamiento puede producirse debido a uno de los siguientes motivos:
- Alguien de su proyecto ha marcado las ejecuciones para su retención indefinida.
- Una versión consume las ejecuciones y mantiene un bloqueo de retención sobre ellas. Personalice la directiva de retención de versiones como se explicó anteriormente.
Si las ejecuciones ya no son necesarias o si las versiones que las conservan ya se eliminan, puede eliminar manualmente las ejecuciones.
¿Cómo funciona la configuración para que se conserven las versiones mínimas?
El valor de Mínimo de versiones que se deben conservar se define a nivel de etapa. Azure DevOps siempre mantiene ese número de versiones implementadas más recientemente para la fase, incluso si están fuera del período de retención. Una versión solo cuenta para este mínimo cuando se inicia la implementación en esa etapa. Se cuentan las implementaciones exitosas y fallidas. Las versiones pendientes de aprobación no se cuentan.
¿Cómo se decide el período de retención cuando la versión se implementa en varias etapas que tienen períodos de retención diferentes?
El período de retención final viene determinado por los días para conservar la configuración en todas las fases en las que se implementa la versión, mediante el uso del valor máximo entre esas fases. Las versiones mínimas que se deben mantener son específicas de la fase y no cambian en función de si se implementó una versión en una o varias fases. Conservar artefactos asociados solo se aplica cuando se implementa una versión en una fase en la que esa opción está habilitada.
Eliminé una fase para la que tengo algunas versiones anteriores. ¿Qué retención se considera para este caso?
Una vez eliminada una fase, la configuración de retención de nivel de fase ya no se aplica. En ese caso, Azure DevOps usa la configuración de retención predeterminada de nivel de proyecto.
Mi organización quiere que conservemos las compilaciones y versiones durante más tiempo del que se permite en la configuración. ¿Cómo se puede solicitar una retención más prolongada?
Para conservar una ejecución o liberación más allá de los límites de retención configurados, márquela para conservarla indefinidamente. No hay ninguna opción para configurar manualmente un período de retención más largo. Para obtener ayuda, póngase en contacto con Azure DevOps support.
También puede usar las API REST para descargar la información de ejecución y los artefactos y, a continuación, almacenarlos en su propia cuenta de almacenamiento o repositorio de artefactos.
He perdido alguna ejecución. ¿Hay alguna manera de recuperarlas?
Si cree que los procesos se perdieron debido a un error de servicio, cree un ticket de soporte inmediatamente. Si una definición de compilación se eliminó manualmente más de una semana antes, no se puede recuperar. Si las ejecuciones se han eliminado según lo previsto por la directiva de retención, no se pueden recuperar.
¿Cómo se utiliza la función Build.Cleanup de los agentes?
Establecer la capacidad Build.Cleanup en los agentes asigna los trabajos de limpieza solo a esos agentes, lo que mantiene a otros agentes disponibles para el trabajo en el proceso de canalización normal. Cuando se elimina una ejecución de canalización, los artefactos almacenados fuera de Azure DevOps se limpian a través de un trabajo de agente. Si los trabajos de limpieza saturan el grupo, designe un subconjunto de agentes que actúan como agentes de limpieza. Cuando se haya definido Build.Cleanup en algún agente, solo esos agentes ejecutan trabajos de limpieza. Para habilitar esta configuración, vaya a Agente>Funcionalidades y establezca Build.Cleanup en 1.
¿Qué ocurre con los artefactos del recurso compartido de archivos cuando se elimina la compilación?
Cuando se elimina una compilación que contiene artefactos compartidos, se pone en cola una nueva tarea de compilación en un agente de compilación para limpiar esos archivos. Se elige un agente para realizar esta tarea en función de los criterios siguientes:
- ¿Hay un agente disponible con la funcionalidad
Build.Cleanup? - ¿Está disponible el agente que ejecutó la compilación?
- ¿Está disponible un agente del mismo grupo?
- ¿Hay algún agente de un grupo similar disponible?
- ¿Hay algún agente disponible?
¿Se conservan los resultados de las pruebas automatizadas que se publican como parte de una versión hasta que se elimina la versión?
Los resultados de las pruebas publicados en una fase de versión se conservan según la directiva de retención de pruebas, no la directiva de retención de versiones. Si necesita que los resultados de las pruebas se retengan durante el mismo tiempo que la versión, establezca la retención automatizada de la ejecución de pruebas en Configuración del proyecto a Nunca eliminar. Esta configuración garantiza que los resultados de la prueba se eliminen solo cuando se elimine la versión.
¿Se eliminan los resultados de las pruebas manuales?
No. Los resultados de las pruebas manuales no se eliminan.
¿Cómo puedo conservar mis etiquetas o etiquetas de control de versiones?
Si deben conservarse etiquetas o tags después de eliminar un build, aplícalos en una tarea específica del pipeline, agréguelos manualmente fuera del pipeline, o conserva el build indefinidamente.
Importante
Las etiquetas o etiquetas de control de versiones aplicadas durante una canalización de compilación que no se crean automáticamente mediante la tarea Orígenes se conservan, incluso si se elimina la compilación. Las etiquetas o etiquetas creadas automáticamente por la tarea Orígenes durante una compilación se tratan como artefactos de compilación y se eliminan con la compilación.
¿Qué ocurre con las canalizaciones que se consumen en otras canalizaciones?
Las versiones clásicas conservan las canalizaciones que consumen automáticamente.
¿Qué ocurre con las canalizaciones que se consumen en otras canalizaciones?
Las versiones clásicas conservan las canalizaciones que consumen automáticamente. Si usa YAML, también puede crear una canalización YAML de varias fases para representar su proceso de lanzamiento y consumir otra canalización YAML en ella como recurso. El canal de recursos se conserva automáticamente mientras se mantenga el canal de lanzamiento.