Azure Devops'ta işleri dinamik olarak nasıl tanımlarım?

0

Soru

Paralel olarak çalıştırmak istediğim farklı platformlar için bir dizi işim var. Farklı durumlar için farklı bir platform seti oluşturmak istiyorum (yani tam yapı, duman, çekme isteği vb.).). Değişkenlere dayalı işlerin listesini nasıl dinamik hale getirebilirim?

Örneğin, bu" kodlanmış " uygulamalardan biriyse:

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

Bunun yerine, değişken kümelerden oluşan bir koleksiyonu nasıl çıkarabilirim, yani

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

Ve bunu aşağıdaki gibi bir boru hattında yürütün:

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

En iyi cevabı

2

Bunu şu şekilde tanımlayabilirsiniz: parameters ve döngü:

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

Her anahtar sözcük burada dokümanlarda açıklanmıştır: docs.microsoft.com/en-us/azure/devops/pipelines/process/...
Vince Bowdren

Sonunda kullandığım şey buydu, ancak koydum jobs: yukarıda each platform. Teşekkürler!
House

@ House haklısın! Söz dizimi düzelttim.
Shayki Abramczyk
1

Şablon parametreleri için 'jobList' türünü de kullanabilirsiniz:

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

Ve sonra:

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

Koşulları arıyorsun: https://docs.microsoft.com/en-us/azure/devops/pipelines/process/conditions?view=azure-devops&tabs=yaml

Aşamaların, işlerin ve adımların hepsinin tanımlanmış bir koşulu olabilir.

Örneğin, bir değişken true olarak ayarlanmışsa bir işi çalıştırma:

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

Diğer dillerde

Bu sayfa diğer dillerde

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