Azure DevOps: Stages y Jobs

David

Crear software hoy en día va mucho más allá de simplemente escribir líneas de código. Es un proceso complejo, similar a construir cualquier producto sofisticado, que requiere una orquestación precisa desde la idea inicial hasta la entrega final a los usuarios. En este viaje, herramientas como Azure DevOps emergen como aliados fundamentales, automatizando y organizando este proceso para hacerlo más rápido, fluido y confiable.

Para entender mejor cómo funciona esta poderosa plataforma, podemos imaginar el desarrollo de software como si fuera una fábrica avanzada y altamente automatizada. En esta “fábrica de software”, el código es la materia prima que se transforma en un producto terminado listo para el mercado. Azure DevOps actúa como el cerebro y el sistema de control de esta fábrica, dictando los planos y supervisando cada paso de la producción. Dentro de esta analogía, dos componentes clave que permiten esta automatización y organización son las “Etapas” (Stages) y los “Trabajos” (Jobs). Estos elementos no son solo términos técnicos, sino los engranajes que hacen posible una entrega de software eficiente y continua, transformando el proceso de desarrollo en una línea de ensamblaje industrial de alta precisión.

Descargar código en GitHub



Etapas (Stages)

Imagina que estás construyendo algo complejo, como un carro. No haces todo de una vez, Lo divides en fases, y en cada fase, diferentes equipos hacen tareas específicas. ¡Así funciona el desarrollo de software hoy en día, y Azure DevOps es tu mejor aliado para automatizar esa “fábrica”!

En el corazón de esta fábrica, hay dos conceptos clave que organizan todo: las Etapas (Stages) y los Trabajos (Jobs).

Piensa en las Etapas como los grandes departamentos o secciones principales de tu fábrica. Cada etapa tiene un objetivo claro y se encarga de una parte fundamental del proceso de llevar tu software del “dibujo” a las manos de los usuarios.

Si miramos nuestro plano de la fábrica (el código que nos pasaste), vemos tres etapas principales, como si fueran los grandes carteles en cada sección:

  • Build (Compilación): Este es el departamento donde se “ensamblan las piezas”. Aquí, el código que escribiste se convierte en un programa funcional.
    • En nuestro código: $ stage: Build
  • Test (Pruebas): Una vez que las piezas están ensambladas, pasan al departamento de control de calidad. Aquí se asegura que todo funcione perfectamente y sin errores.
    • En nuestro código: $ stage: Test
  • Deploy (Despliegue): Finalmente, en este departamento, el producto terminado se empaca y se envía a su destino final, ¡listo para ser usado!
    • En nuestro código: $ stage: Deploy

Los Trabajos (Jobs)

Dentro de cada gran departamento (Etapa), tienes Trabajos (Jobs). Piensa en los trabajos como los equipos especializados o las estaciones de trabajo dentro de esa etapa. Cada equipo se encarga de un conjunto específico de tareas.

Volvamos a nuestro plano:

En nuestro código: $ job: Deploy

Dentro de la Etapa Build (Compilación):

Solo hay un equipo: BuildJob (Job de Compilación). Este equipo se encarga de todas las tareas relacionadas con convertir tu código en un programa, como “Restaurar dependencias”, “Compilar el código” y “Generar artefactos”.

En nuestro código: $ job: BuildJob

Dentro de la Etapa Test (Pruebas):

Aquí la fábrica tiene dos equipos de control de calidad, porque quieren probar el software en diferentes tipos de máquinas (sistemas operativos):

TestOnLinux (Pruebas en Linux): Un equipo que prueba en un ambiente Linux.

TestOnWindows (Pruebas en Windows): Otro equipo que prueba en un ambiente Windows.

En nuestro código: $ job: TestOnLinux y $ job: TestOnWindows

Dentro de la Etapa Deploy (Despliegue):

Hay un solo equipo: Deploy (Job de Despliegue), que se encarga de preparar y enviar el software.




La Sinfonía de la Entrega de Software: Cómo Trabajan Juntas las Etapas y los Trabajos

La eficiencia de Azure DevOps radica en la forma en que las etapas y los trabajos se organizan jerárquicamente y colaboran. Un pipeline completo contiene múltiples etapas, cada etapa contiene uno o más trabajos, y cada trabajo, a su vez, se compone de una secuencia de pasos.  

Volviendo a nuestra analogía de la fábrica:

  • La Línea de Ensamblaje completa es el Pipeline.
  • Las Secciones principales de la fábrica son las Etapas (por ejemplo, Ensamblaje del Motor, Fabricación de la Carrocería, Pintura, Inspección Final). Estas se ejecutan una tras otra, a menudo con verificaciones y aprobaciones entre ellas para asegurar la calidad antes de pasar a la siguiente fase.
  • Dentro de cada sección, los Trabajos especializados (estaciones de trabajo o equipos) manejan tareas específicas, a veces en paralelo para acelerar el proceso (por ejemplo, el mecanizado del bloque del motor y la instalación del cigüeñal pueden ocurrir simultáneamente en la etapa de Ensamblaje del Motor).
  • Cada Paso es una acción individual realizada en una estación de trabajo, como una instrucción detallada para un robot o una herramienta.

Esta estructura jerárquica no es solo para la organización; es una elección de diseño que permite beneficios clave en DevOps como la velocidad, la fiabilidad y la entrega controlada. Permite:

  • Organización y Visibilidad Claras: Ofrece una vista estructurada de todo el proceso, facilitando la comprensión de dónde se encuentra el software en su ciclo de vida y qué se está haciendo en cada momento.
  • Asignación Eficiente de Recursos: La capacidad de ejecutar trabajos en paralelo optimiza el uso de los recursos y acelera el tiempo total de ejecución.  
  • Resolución de Problemas y Reejecuciones Sencillas: Si una parte específica del proceso falla, el problema se puede aislar en una etapa o trabajo concreto, permitiendo su reejecución sin necesidad de reiniciar todo el pipeline. Esto minimiza el tiempo de inactividad y el desperdicio de recursos.  
  • Progresión Controlada: Las aprobaciones en etapas clave y las condiciones de ejecución aseguran que el software solo avance cuando se cumplan ciertos criterios, lo que añade una capa vital de control y seguridad.  

David Guzmán López

Ingeniero Electrónico

Electronic Engineer | DevOps Engineer | SRE | Cloud Engineer | Infrastructure Engineer