Establecimiento de directivas de retención para compilaciones, versiones y pruebas

Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019

Las directivas de retención permiten establecer cuánto tiempo se mantienen las ejecuciones, las versiones y las pruebas almacenadas en el sistema. Para ahorrar espacio de almacenamiento, deberá eliminar ejecuciones, pruebas y versiones anteriores.

Las siguientes directivas de retención están disponibles en Azure DevOps en la configuración del proyecto:

  1. Canalización: establezca el tiempo de conservación de los artefactos, los símbolos, los datos adjuntos, las ejecuciones y las ejecuciones de solicitud de incorporación de cambios.
  2. Versión (clásica): establezca si se deben guardar las compilaciones y consulte la configuración de retención predeterminada y máxima.
  3. Prueba: establezca cuánto tiempo se mantienen las series de pruebas automatizadas y manuales, los resultados y los datos adjuntos.

Directivas de retención de la configuración del proyecto

Nota:

Si usa un servidor local, también puede especificar los valores predeterminados de la directiva de retención para un proyecto y cuándo se destruyen permanentemente las versiones. Más información sobre la retención de versiones más adelante en este artículo.

Requisitos previos

De forma predeterminada, los miembros de los grupos Colaboradores, Administradores de compilación, Administradores de proyectos y Administradores de versiones pueden administrar directivas de retención.

Para administrar directivas de retención, debe tener una de las suscripciones siguientes:

También puede comprar acceso mensual a Azure Test Plans y asignar el nivel de acceso Básico + Test Plans. Consulte Prueba del acceso por rol de usuario.

Configuración de las directivas de retención

  1. Inicie sesión en el proyecto.

  2. Vaya a la pestaña Icono del engranajeAjustes de los ajustes de su proyecto.

  3. Seleccione Retención de versión en Canalizaciones o Retención, en Prueba.

    • Seleccione Retención de versión para configurar las directivas de retención de las versiones y configurar cuándo eliminar o destruir de forma permanente las versiones.
    • Seleccione Retención para configurar cuánto tiempo se mantienen las series de pruebas manuales y automatizadas.

    Captura de pantalla de la configuración de retención en Configuración del proyecto para DevOps 2019.

Configuración de las directivas de retención

  1. Inicie sesión en el proyecto.

  2. Vaya a la pestaña Icono del engranajeAjustes de los ajustes de su proyecto.

  3. Seleccione Configuración o Retención de versión en Canalizaciones o Retención, en Prueba.

    • Seleccione Configuración para configurar directivas de retención para las ejecuciones, los artefactos, los símbolos, los datos adjuntos y las ejecuciones de solicitud de incorporación de cambios.
    • Seleccione Retención de versión para configurar las directivas de retención de las versiones y configurar cuándo eliminar o destruir de forma permanente las versiones.
    • Seleccione Retención para configurar cuánto tiempo se mantienen las series de pruebas manuales y automatizadas.

    Captura de pantalla de la configuración de retención en Configuración del proyecto.

Importante

Azure Pipelines ya no admite las directivas de retención por canalización. Se recomienda usar reglas de retención de nivel de proyecto.

Configuración de directivas de retención de la ejecución

En la mayoría de los casos, no es necesario conservar las ejecuciones completadas durante más de un determinado número de días. Con las directivas de retención, puede controlar cuántos días desea mantener cada ejecución antes de eliminarla.

  1. Vaya a la pestaña Icono del engranajeAjustes de los ajustes de su proyecto.

  2. Seleccione Configuración en la sección Canalizaciones.

    • Establezca el número de días para mantener los artefactos, los símbolos y los datos adjuntos.
    • Establecimiento del número de días para mantener las ejecuciones
    • Establecimiento del número de días para mantener las ejecuciones de solicitud de incorporación de cambios
    • Establecimiento del número de ejecuciones recientes que se mantendrán para cada canalización

Advertencia

Azure DevOps ya no admite reglas de retención por canalización. La única manera de configurar directivas de retención para las canalizaciones YAML y las clásicas es configurando el proyecto como se describe anteriormente. Ya no se pueden configurar directivas de retención por canalización.

La configuración del número de ejecuciones recientes que se conservarán para cada canalización requiere una pequeña explicación. La interpretación de esta configuración varía en función del tipo de repositorio que se cree en la canalización.

  • Azure Repos: Azure Pipelines conserva el número configurado de ejecuciones más recientes para la rama predeterminada de la canalización y para cada rama protegida del repositorio. Las ramas con las directivas de rama configuradas se consideran ramas protegidas.

    Por ejemplo, considere un repositorio con dos ramas main y release. Imagine que pipeline's default branch es la rama main y la rama release tiene una directiva de rama, lo que la convierte en una rama protegida. En este caso, si configuró la directiva para conservar tres ejecuciones, se conservan las tres ejecuciones más recientes de main y las tres últimas de la rama release. Además, también se conservan las tres últimas ejecuciones de esta canalización (independientemente de la rama).

    Para aclarar aún más esta lógica, supongamos que la lista de ejecuciones de esta canalización es la siguiente, con la ejecución más reciente en la parte superior. En la tabla se muestran las ejecuciones que se conservarán si ha configurado para conservar las tres ejecuciones más recientes (ignorando el efecto del valor de número de días):

    Ejecución n.º Rama Retenido/No retenido ¿Por qué?
    Ejecución 10 main (principal) Retenido Las 3 más recientes para main y las 3 más recientes para la canalización
    Ejecución 9 branch1 Retenido Las 3 más recientes para la canalización
    Ejecución 8 branch2 Retenido Las 3 más recientes para la canalización
    Ejecución 7 main (principal) Retenido Las 3 más recientes para main
    Ejecución 6 main (principal) Retenido Las 3 más recientes para main
    Ejecución 5 main (principal) No se conserva Ni las 3 más recientes para main, ni para la canalización
    Ejecución 4 main (principal) No se conserva Ni las 3 más recientes para main, ni para la canalización
    Ejecución 3 branch1 No se conserva Ni las 3 más recientes para main, ni para la canalización
    Ejecutar 2 release Retenido Las 3 más recientes para la versión
    Ejecución 1 main (principal) No se conserva Ni las 3 más recientes para main, ni para la canalización
  • Todos los demás repositorios de Git: Azure Pipelines conserva el número configurado de ejecuciones más recientes para toda la canalización.

  • TFVC: Azure Pipelines conserva el número configurado de las ejecuciones más recientes para toda la canalización, independientemente de la rama.

Qué partes de la ejecución se eliminan

Cuando se elimina una ejecución, se elimina la siguiente información:

  • 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)

Los paquetes universales, NuGet, npm y otros no están vinculados a la retención de las canalizaciones.

¿Cuándo se eliminan las ejecuciones?

Las directivas de retención se procesan una vez al día. La hora a la que procesan las variables las directivas, porque propagamos el trabajo a lo largo del día con fines de equilibrio de carga. No hay ninguna opción para cambiar este proceso.

Se elimina una ejecución si todas las condiciones siguientes son true:

  • Supera el número de días seleccionado en la configuración de retención.
  • No es una de las ejecuciones recientes seleccionadas en la configuración de retención.
  • No está marcado para conservarse indefinidamente.
  • No se conserva mediante una versión.

Establecimiento automático de la concesión de retención en las ejecuciones de canalización

Las concesiones de retención se usan para administrar la duración de las ejecuciones de canalización más allá de los períodos de retención configurados. Las concesiones de retención se pueden agregar o eliminar en una ejecución de canalización mediante una llamada a Lease API. Esta API se puede invocar dentro de la canalización mediante un script y variables predefinidas para runId y definitionId.

Se puede agregar una concesión de retención en una ejecución de canalización durante un período específico. Por ejemplo, una ejecución de canalización que se implementa en un entorno de prueba se puede conservar durante un tiempo más breve, mientras que una ejecución de implementación en el entorno de producción se puede conservar más tiempo.

Establecimiento manual de la concesión de retención en las ejecuciones de canalización

Puede establecer manualmente una ejecución de canalización para que se conserve mediante el menú Más acciones de la página Detalles de ejecución de la canalización.

Conservación manual de una ejecución

Eliminación de una ejecución

Puede eliminar ejecuciones mediante el menú Más acciones de la página Detalles de ejecución de la canalización.

Nota:

Si las directivas de retención se aplican actualmente a la ejecución, deben quitarse para que se pueda eliminar la ejecución. Para instrucciones, consulte Detalles de ejecución de la canalización: eliminación de una ejecución.

Sirve para eliminar una ejecución.

Establecimiento de directivas de retención de versión

Las directivas de retención de versión para un proceso de versión clásica determinan durante cuánto tiempo se conservan una versión y la compilación vinculada. Con estas directivas, puede controlar cuántos días desea conservar cada versión después de que se haya modificado o implementado por última vez y el número mínimo de versiones que se deben conservar para cada canalización.

El temporizador de retención de una versión se restablece cada vez que se modifica o implementa la versión en una fase. El número mínimo de versiones para conservar la configuración tiene prioridad sobre el número de días. Por ejemplo, si especifica conservar un mínimo de tres versiones, las tres más recientes se conservarán indefinidamente, independientemente del número de días especificado. Sin embargo, puede eliminarlas manualmente cuando ya no las necesite. Consulte las preguntas más frecuentes a continuación para más información sobre cómo funciona la retención de versiones.

Como autor de una canalización de versión, puede personalizar las directivas de retención para las versiones de la canalización en la pestaña Retención.

La directiva de retención para YAML y las canalizaciones de compilación es la misma. Puede ver la configuración de retención de la canalización en Configuración del proyecto de Canalizaciones en la sección Configuración .

Directiva de retención de versiones global

Si usa un Team Foundation Server local o Azure DevOps Server, puede especificar los valores predeterminados y máximos de la directiva de retención de versiones para un proyecto. También puede especificar cuándo se destruyen permanentemente las versiones (se quitan de la pestaña Eliminado en el explorador de compilaciones).

Configuración de la retención de versiones local

Si usa Azure DevOps Services, puede ver pero no cambiar esta configuración para el proyecto.

La configuración de la directiva de retención de versiones global se puede revisar desde la configuración de Retención de versión del proyecto:

  • Azure DevOps Services: https://dev.azure.com/{organization}/{project}/_settings/release?app=ms.vss-build-web.build-release-hub-group
  • Local: https://{your_server}/tfs/{collection_name}/{project}/_admin/_apps/hub/ms.vss-releaseManagement-web.release-project-admin-hub

La directiva de retención máxima establece el límite superior de tiempo que se pueden conservar las versiones para todas las canalizaciones de versión. Los autores de canalizaciones de versión no pueden configurar las opciones de sus definiciones más allá de los valores especificados aquí.

La directiva de retención predeterminada establece los valores de retención predeterminados para todas las canalizaciones de versión. Los autores de canalizaciones de compilación pueden invalidar estos valores.

La directiva de destrucción ayuda a mantener las versiones durante un determinado período de tiempo después de que se eliminen. Esta directiva no se puede invalidar en canalizaciones de versión individuales.

Establecimiento de directivas de retención de nivel de colección

Para los servidores locales, también puede establecer directivas de retención de nivel de colección con reglas de retención personalizadas. Estas directivas de retención se aplican a las canalizaciones de compilación clásicas. La página de https://{your_server}/{collection_name}/_settings/buildqueue rige los valores máximos y los valores predeterminados.

Captura de pantalla donde se indica cómo configurar la directivas de retención de recopilación.

Uso de la tarea Copiar archivos para guardar los datos más tiempo

Puede usar la tarea Copiar archivos para guardar los datos de la compilación y los artefactos durante más tiempo que lo establecido en las directivas de retención. La tarea Copiar archivos es preferible a la tarea Publicar artefactos de compilación, ya que los datos guardados con la tarea Publicar artefactos de compilación se limpiarán y eliminarán periódicamente.

- task: CopyFiles@2
  displayName: 'Copy Files to: \\mypath\storage\$(Build.BuildNumber)'
  inputs:
    SourceFolder: '$(Build.SourcesDirectory)'
    Contents: '_buildOutput/**'
    TargetFolder: '\\mypath\storage\$(Build.BuildNumber)'

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. Ni la directiva de retención de la canalización ni los límites máximos establecidos por el administrador se aplican cuando se marca una ejecución o versión individuales para que se conserven indefinidamente. Permanecerán hasta que se dejen de conservar indefinidamente.

¿Cómo indicar que las ejecuciones implementadas en producción se conserven más tiempo?

Si usa versiones clásicas para implementar en producción, personalice la directiva de retención en la canalización de versión. Especifique el número de días que se deben conservar las versiones implementadas en producción. Además, indique que se conservarán las ejecuciones asociadas a esa versión. Esto invalidará la directiva de retención de las ejecuciones.

Si usa canalizaciones YAML de varias fases para implementar en producción, la única directiva de retención que puede configurar está en la configuración del proyecto. No se puede personalizar la retención en función del entorno en el que se implemente la compilación.

No he marcado las ejecuciones para su retención indefinida. Sin embargo, veo un gran número de ejecuciones que se conservan. ¿Cómo puedo evitar esto?

Esto puede deberse a uno de los siguientes motivos:

  • Alguien del proyecto marcó las ejecuciones para que se conserven indefinidamente.
  • Las ejecuciones las consume una versión, que contiene un bloqueo de retención en estas ejecuciones. Personalice la directiva de retención de versiones como se explicó anteriormente.

Si cree que las ejecuciones ya no son necesarias o si ya se han eliminado las versiones, puede eliminar manualmente las ejecuciones.

¿Cómo funciona la configuración de "versiones mínimas que mantener"?

Las versiones mínimas que se van a conservar se definen en el nivel de fase. Indica que Azure DevOps siempre conservará el número determinado de las versiones más recientes implementadas para una fase, incluso si las versiones están fuera del período de retención. Una versión se considerará dentro del mínimo que se debe mantener para una fase solo cuando se inicie la implementación en esa fase. Se tienen en cuenta las implementaciones correctas y con errores. No se tienen en cuenta las versiones pendientes de aprobación.

¿Cómo se decide el período de retención cuando se implementa la versión en varias fases con un período de retención diferente?

El período de retención final se decide teniendo en cuenta la configuración de días de conservación de todas las fases en las que se implementa la versión, e incluyendo el máximo de días de conservación entre ellas. Las versiones mínimas que se mantendrán se administran a nivel de fase y no cambian en función de si la versión se implementó en varias fases o no. La conservación de los artefactos asociados se aplica cuando se implementa la versión en una fase para la que se establece true.

Eliminé una fase para la que tengo algunas versiones anteriores. ¿Qué retención se considerará para este caso?

Como la fase se ha eliminado, la configuración de retención de nivel de fase no se aplica en este momento. Azure DevOps revertirá a la retención predeterminada de nivel de proyecto para este caso.

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?

La única manera de conservar una ejecución o una versión más tiempo de lo que se permite en la configuración de retención es marcarla manualmente para que se conserve indefinidamente. No hay ninguna manera de configurar manualmente una opción de retención más prolongada. Póngase en contacto con el Soporte técnico de Azure DevOps para obtener ayuda.

También puede explorar la posibilidad de usar las API REST para descargar información y artefactos sobre las ejecuciones y cargarlos en su propio repositorio de almacenamiento o artefactos.

He perdido alguna ejecución. ¿Hay alguna manera de recuperarlas?

Si cree que ha perdido ejecuciones debido a un error en el servicio, cree una incidencia de soporte técnico para recuperar la información perdida inmediatamente. Si una definición de compilación se eliminó manualmente más de una semana antes, no será posible recuperarla. Si las ejecuciones se eliminaron según lo previsto debido a una directiva de retención, no será posible recuperar las ejecuciones perdidas.

¿Cómo se usa la funcionalidad Build.Cleanup de los agentes?

La configuración de una funcionalidad Build.Cleanup en los agentes hará que los trabajos de limpieza del grupo se dirijan solo a esos agentes, dejando el resto libres para el funcionamiento normal. Cuando se elimina una ejecución de canalización, los artefactos almacenados fuera de Azure DevOps se limpian con una ejecución de trabajo en los agentes. La saturación del grupo de agentes se satura con trabajos de limpieza puede suponer un problema. La solución es designar un subconjunto de agentes del grupo que sean los agentes de limpieza. Si algún agente tiene Build.Cleanup establecido, solo ese ejecutará los trabajos de limpieza, dejando libre el resto para que continúen ejecutando los trabajos de canalización. Para habilitar la funcionalidad Limpieza, vaya a Agente>Funcionalidades y establezca Build.Cleanup igual que 1.

¿Qué ocurre con los artefactos del recurso compartido de archivos cuando se elimina la compilación?

Cuando se elimina una compilación con artefactos de recurso compartido de archivos, se pone en cola una nueva tarea de compilación en un agente de compilación para limpiar esos archivos. Se selecciona un agente para realizar esta tarea en función de los criterios siguientes: ¿hay algún agente con la funcionalidad Build.Cleanup disponible? ¿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 una versión se conservan según lo especificado por la directiva de retención configurada para los resultados de la prueba. Los resultados de la prueba no se conservan hasta que se conserva la versión. Si necesita los resultados de la prueba junto con la versión, establezca así la configuración de retención para las series de pruebas automatizadas en la configuración del proyecto, en No eliminar nunca. Esto garantiza que los resultados de la prueba solo se eliminen 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?

Precaución

Precaución: Se conservarán las etiquetas o etiquetas de control de versiones que se apliquen durante las canalizaciones de compilación que no se creen automáticamente a partir de la tarea Orígenes, aunque la compilación se elimine. Sin embargo, las etiquetas o etiquetas de control de versiones que se crean automáticamente a partir de la tarea Orígenes durante una compilación se consideran parte de los artefactos de compilación y se eliminarán cuando se elimine la compilación.

Si es necesario conservar etiquetas o etiquetas de control de versiones, incluso cuando se elimine la compilación, deberán aplicarse como parte de una tarea de la canalización, etiquetada manualmente fuera de la canalización, o la compilación deberá conservarse indefinidamente.

¿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 que represente la versión y consuma otra canalización YAML de ella, como un recurso. La canalización de recursos se conservará automáticamente siempre que se conserve la canalización de versión.