V Azure Potrubí YAML, jak udělat scénu, i když práci v předchozí fázi selže, pomocí uspěl('JobName')

0

Otázka

Snažím se, aby moje druhá etapa běží, i když jedním ze dvou míst v první fázi selže, ale nemohu se dostat do práce, jak se očekávalo, s prací, kontrola stavu funkce succeeded('JobName').

V následující YAML potrubí, očekával bych, že se to spustit Stage2 i když Job2 selže, tak dlouho, jak Job1 uspěje, ale to není:

stages:
  - stage: Stage1
    jobs:
      - job: Job1
        steps:
          - pwsh: echo "Job1"
      - job: Job2
        steps:
          - pwsh: write-error "Job2 error"

  - stage: Stage2
    condition: succeeded('Job1')
    jobs:
      - job: Job3
        steps:
          - pwsh: echo "Job3"

Jak mohu získat Stage2 běžet, i když Job2 selhal, tak dlouho, jak Job1 podařilo?

Pomocí always() bude Stage2 spustit vždy, ale rád bych, aby to záviset úspěch státu Job1, bez ohledu na to, Job2 státu.

Související dokumentace:

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

https://docs.microsoft.com/en-us/azure/devops/pipelines/process/expressions?view=azure-devops#job-status-functions.

1

Nejlepší odpověď

2

Vypadá to, že to není možné zvládnout práci, výsledek na úrovni jeviště do další fáze. Nicméně, můžete použít tento workaraound:

trigger: none

pool:
  vmImage: ubuntu-latest

stages:
  - stage: Stage1
    jobs:
      - job: Job1
        steps:
          - pwsh: echo "Job1"
      - job: Job2
        steps:
          - pwsh: write-error "Job2 error"

  - stage: Stage2
    dependsOn: Stage1
    condition: always()
    jobs:
      - job: Job3
        condition: in(stageDependencies.Stage1.Job1.result, 'Succeeded')
        steps:
          - pwsh: echo "Job3"
      - job: Job4
        condition: in(stageDependencies.Stage1.result, 'Succeeded')
        steps:
          - pwsh: echo "Job4"

enter image description here

Dokumentace pro to máte tady.

2021-11-24 10:37:57

Toto řešení je super hezká. ale funguje opravdu! Hezké být schopen dot do stageDependencies výsledek - díky :)
tholesen

Ahoj Krzysztof; můžu se zeptat, je nějaký konkrétní důvod, proč používat ve funkci v podmínkách? Vypadá to, že na eq funkce by bylo vhodné?
Vince Bowdren

eq je dost ;) já jsem jen upravil, co jsem našel v docs. To byl prostě rychlejší :) Dobré místo!
Krzysztof Madej

V jiných jazycích

Tato stránka je v jiných jazycích

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