Como posso descrever tarefas dinamicamente no Azure DevOps?

0

Pergunta

Eu tenho um número de postos de trabalho para diferentes plataformas, eu gostaria de executar em paralelo. Eu gostaria de construir um conjunto diferente de plataformas para diferentes situações (por exemplo, compilação completa, fumaça, solicitação, etc.). Como posso fazer uma lista de trabalhos de dinâmica com base nas variáveis?

Por exemplo, se este é um dos "hard-coded" implementações:

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

Como poderia eu, em vez de extrair um conjunto de variável de conjuntos, i.é.

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

E de execução que, em um pipeline 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

Melhor resposta

2

Você pode defini-lo no parameters e loop é:

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

A Cada palavra-chave é descrito na documentação aqui: docs.microsoft.com/en-us/azure/devops/pipelines/process/...
Vince Bowdren

Isso é o que eu acabei usando, no entanto eu colocar jobs: acima do each platform. Obrigado!
House

@House, você está certo! Eu fixo meu sintaxe.
Shayki Abramczyk
1

Você pode alos usar 'jobList' tipo de parâmetros do modelo:

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

E em seguida:

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

Você está procurando condições: https://docs.microsoft.com/en-us/azure/devops/pipelines/process/conditions?view=azure-devops&tabs=yaml

Estágios, empregos, e podem ter uma condição definida.

Por exemplo, a execução de um trabalho, se uma variável é definida como true:

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

Em outros idiomas

Esta página está em outros idiomas

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