¿Cómo puedo describir puestos de trabajo de forma dinámica en Azure DevOps?

0

Pregunta

Tengo un número de puestos de trabajo para las diferentes plataformas en las que me gustaría ejecutar en paralelo. Me gustaría construir un conjunto diferente de plataformas para diferentes situaciones (es decir, la plena construir, el humo, la solicitud de extracción, etc.). ¿Cómo puedo hacer una lista de los puestos de trabajo dinámico basado en las variables?

Por ejemplo, si este es uno de los "hard-coded" implementaciones:

jobs:

- job: Platform1
  pool: Pool1
  steps:
      - template: minimal_template.yml
        parameters:
          BuildTarget: Platform1

- job: Platform2
  pool: Pool1
  steps:
      - template: minimal_template.yml
        parameters:
          BuildTarget: Platform2
        
- job: Platform3
  pool: Pool2
  steps:
      - template: minimal_template.yml
        parameters:
          BuildTarget: Platform3

Cómo podría yo, en lugar de extraer una colección de conjuntos de variables, es decir,

[[Platform1, Pool1], [Platform2, Pool1], [Platform3, Pool2]]

Y lo ejecuta en una tubería como:

jobs:

??(Foreach platform in platforms)??

- job: $(platform[0])
  pool: $(platform[1])
  steps:
      - template: minimal_template.yml
        parameters:
          BuildTarget: $(platform[0])
azure-devops azure-pipelines
2021-11-24 00:29:59
3

Mejor respuesta

2

Usted puede definir en el parameters y en bucle:

parameters:
  - name: Platforms
    type: object
    default:
      - name: 'Platform1'
        pool: 'Platform1Pool'
      - name: 'Platform2'
        pool: 'Platform2Pool'
jobs:
- ${{ each platform in parameters.Platforms}}:        
  - job: ${{ platform.name }}
     pool: ${{ platform.pool }}
     steps:
         - template: minimal_template.yml
2021-11-30 07:41:07

La Cada palabra clave se describe en la documentación aquí: docs.microsoft.com/en-us/azure/devops/pipelines/process/...
Vince Bowdren

Esto es lo que terminé usando, sin embargo pongo jobs: por encima de la each platform. Gracias!
House

@La casa que está a la derecha! Yo fijo mi sintaxis.
Shayki Abramczyk
1

Usted puede alos uso de 'trabajos' tipo de los parámetros de la plantilla:

parameters:
- name: 'testsJobsList'
  type: jobList
  default: []

jobs:
- ${{ each job in parameters.testsJobsList }}: # Each job
  - ${{ each pair in job }}:          # Insert all properties other than "steps"
      ${{ if ne(pair.key, 'steps') }}:
        ${{ pair.key }}: ${{ pair.value }}
    steps:                            # Wrap the steps
    - ${{ job.steps }}                # Users steps

Y luego:

trigger:
- none

pool:
  vmImage: 'windows-latest'

jobs:
- template: deployment-template.yml
  parameters:
    testsJobsList: 
      - job: Platform1
        pool: Platform1Pool
        steps:
        - template: minimal_template.yml
      - job: Platform2
        pool: Platform2Pool
        steps:
        - template: minimal_template.yml
      
2021-11-24 08:45:51
0

Estás buscando condiciones: https://docs.microsoft.com/en-us/azure/devops/pipelines/process/conditions?view=azure-devops&tabs=yaml

Etapas, puestos de trabajo, y los pasos que pueden tener una condición definida.

Por ejemplo, ejecutar un trabajo, si una variable es true:

condition: eq(variables['System.debug'], 'true')
2021-11-24 10:19:20

En otros idiomas

Esta página está en otros idiomas

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Slovenský
..................................................................................................................