Come faccio a descrivere i processi in maniera dinamica in Azure DevOps?

0

Domanda

Ho un certo numero di posti di lavoro per le diverse piattaforme vorrei eseguire in parallelo. Mi piacerebbe costruire un diverso insieme di piattaforme per diverse situazioni (cioè build completa, il fumo, la richiesta di tirare, etc.). Come posso fare un elenco di posti di lavoro dinamico basato su variabili?

Per esempio, se questo è uno dei "hard-coded" implementazioni:

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

Come potrei, invece, consente di estrarre da un insieme di variabili imposta, vale a dire

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

E l'esecuzione di una pipeline come:

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

Migliore risposta

2

La si può definire in parameters e un ciclo:

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

Il Ogni parola chiave è descritto nella documentazione qui: docs.microsoft.com/en-us/azure/devops/pipelines/process/...
Vince Bowdren

Questo è quello che ho finito per usare, tuttavia ho messo jobs: sopra il each platform. Grazie!
House

@Casa hai ragione! Ho fissato la mia sintassi.
Shayki Abramczyk
1

Si può anche utilizzare 'jobList' tipo per i parametri del template:

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 poi:

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

Stai cercando condizioni: https://docs.microsoft.com/en-us/azure/devops/pipelines/process/conditions?view=azure-devops&tabs=yaml

Le fasi, i processi, e i passi che possono avere una condizione definita.

Per esempio, l'esecuzione di un lavoro se una variabile è impostata a true:

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

In altre lingue

Questa pagina è in altre lingue

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