Agregar fases, dependencias, & condiciones
Azure Pipelines | Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018 - TFS 2015
Nota
En Microsoft Team Foundation Server (TFS) 2018 y versiones anteriores, las canalizaciones de compilación y versión se denominan definiciones, las ejecuciones se denominan compilaciones, las conexiones de servicio se denominan puntos de conexión de servicio, las fases se denominan entornos y los trabajos se denominan fases.
El concepto de fases varía en función de si se usan canalizaciones YAML o canalizaciones de versión clásicas.
Puede organizar los trabajos de canalización en fases. Las fases son las divisiones principales de una canalización: "compilar esta aplicación", "ejecutar estas pruebas" e "implementar en preproducción" son buenos ejemplos de fases. Son límites lógicos en la canalización donde puede pausar la canalización y realizar varias comprobaciones.
Cada canalización tiene al menos una fase, incluso si no se define explícitamente. También puede organizar las fases en un gráfico de dependencias para que una fase se ejecute antes que otra. Hay un límite de 256 trabajos para una fase.
Nota
Se agregó compatibilidad con las fases Azure DevOps Server 2019.1.
Esta versión de TFS no admite YAML.
Especificación de fases
Nota
Se agregó compatibilidad con las fases Azure DevOps Server 2019.1.
En el caso más sencillo, no se necesitan límites lógicos en la canalización. En ese caso, no tiene que usar explícitamente la palabra stage clave . Puede especificar directamente los trabajos en el archivo YAML.
# this has one implicit stage and one implicit job
pool:
vmImage: 'ubuntu-latest'
steps:
- bash: echo "Hello world"
# this pipeline has one implicit stage
jobs:
- job: A
steps:
- bash: echo "A"
- job: B
steps:
- bash: echo "B"
Si organiza la canalización en varias fases, use la palabra stages clave .
stages:
- stage: A
jobs:
- job: A1
- job: A2
- stage: B
jobs:
- job: B1
- job: B2
Si decide especificar un en el nivel de fase, todos los trabajos definidos en esa fase usarán ese grupo a menos que se especifique lo contrario pool en el nivel de trabajo.
Nota
En Azure DevOps Server 2019, los grupos solo se pueden especificar en el nivel de trabajo.
stages:
- stage: A
pool: StageAPool
jobs:
- job: A1 # will run on "StageAPool" pool based on the pool defined on the stage
- job: A2 # will run on "JobPool" pool
pool: JobPool
La sintaxis completa para especificar una fase es:
stages:
- stage: string # name of the stage, A-Z, a-z, 0-9, and underscore
displayName: string # friendly name to display in the UI
dependsOn: string | [ string ]
condition: string
pool: string | pool
variables: { string: string } | [ variable | variableReference ]
jobs: [ job | templateReference]
Esta versión de TFS no admite canalizaciones YAML.
Especificación de dependencias
Nota
Se agregó compatibilidad con las fases Azure DevOps Server 2019.1.
Cuando se definen varias fases en una canalización, de forma predeterminada, se ejecutan secuencialmente en el orden en que se definen en el archivo YAML. La excepción a esto es cuando se agregan dependencias. Con las dependencias, las fases se ejecutan en el orden de los dependsOn requisitos.
Pipelines debe contener al menos una fase sin dependencias.
La sintaxis para definir varias fases y sus dependencias es:
stages:
- stage: string
dependsOn: string
condition: string
Fases de ejemplo que se ejecutan secuencialmente:
# if you do not use a dependsOn keyword, stages run in the order they are defined
stages:
- stage: QA
jobs:
- job:
...
- stage: Prod
jobs:
- job:
...
Fases de ejemplo que se ejecutan en paralelo:
stages:
- stage: FunctionalTest
jobs:
- job:
...
- stage: AcceptanceTest
dependsOn: [] # this removes the implicit dependency on previous stage and causes this to run in parallel
jobs:
- job:
...
Ejemplo de salida y entrada de ventilador:
stages:
- stage: Test
- stage: DeployUS1
dependsOn: Test # this stage runs after Test
- stage: DeployUS2
dependsOn: Test # this stage runs in parallel with DeployUS1, after Test
- stage: DeployEurope
dependsOn: # this stage runs after DeployUS1 and DeployUS2
- DeployUS1
- DeployUS2
Esta versión de TFS no admite canalizaciones YAML.
Condiciones
Puede especificar las condiciones en las que se ejecuta cada fase. De forma predeterminada, una fase se ejecuta si no depende de ninguna otra fase, o si todas las fases de las que depende se han completado y realizado correctamente. Puede personalizar este comportamiento forzando la ejecución de una fase incluso si se produce un error en una fase anterior o especificando una condición personalizada.
Si personaliza la condición predeterminada de los pasos anteriores para una fase, quite las condiciones de finalización y éxito. Por lo tanto, si usa una condición personalizada, es habitual usar para comprobar si la fase anterior se ejecutó and(succeeded(),custom_condition) correctamente. De lo contrario, la fase se ejecuta independientemente del resultado de la fase anterior.
Nota
Las condiciones de error ('JOBNAME/STAGENAME') y correctas ('JOBNAME/STAGENAME') como se muestra en el ejemplo siguiente solo funcionan para canalizaciones YAML.
Nota
Se agregó compatibilidad con las fases Azure DevOps Server 2019.1.
Ejemplo para ejecutar una fase en función del estado de ejecución de una fase anterior:
stages:
- stage: A
# stage B runs if A fails
- stage: B
condition: failed()
# stage C runs if B succeeds
- stage: C
dependsOn:
- A
- B
condition: succeeded('B')
Ejemplo de uso de una condición personalizada:
stages:
- stage: A
- stage: B
condition: and(succeeded(), eq(variables['build.sourceBranch'], 'refs/heads/master'))
Esta versión de TFS no admite canalizaciones YAML.
Especificación de directivas de cola
Las canalizaciones de YAML no admiten directivas de cola. Cada ejecución de una canalización es independiente de otras ejecuciones y no es consciente de ellas. En otras palabras, las dos confirmaciones sucesivas pueden desencadenar dos canalizaciones y ambas ejecutarán la misma secuencia de fases sin esperar entre sí. Aunque trabajamos para llevar directivas de cola a canalizaciones YAML, se recomienda usar aprobaciones manuales para secuenciar y controlar manualmente el orden de ejecución si esto es de importancia.
Esta versión de TFS no admite canalizaciones YAML.
Especificación de aprobaciones
Puede controlar manualmente cuándo se debe ejecutar una fase mediante comprobaciones de aprobación. Esto se usa normalmente para controlar las implementaciones en entornos de producción. Las comprobaciones son un mecanismo disponible para que el propietario del recurso controle si una fase de una canalización puede consumir un recurso y cuándo. Como propietario de un recurso, como un entorno, puede definir comprobaciones que deben satisfacerse antes de que se pueda iniciar una fase que consuma ese recurso.
Actualmente, las comprobaciones de aprobación manuales se admiten en entornos. Para obtener más información, vea Aprobaciones.
Las aprobaciones aún no se admiten en las canalizaciones de YAML en esta versión de Azure DevOps Server.
Esta versión de TFS no admite canalizaciones YAML.


