我正試圖檢查我的階段特定變數sourceCodeChanged是否等于true。
如果它是true,那么這個階段應該被執行,否則應該被跳過。
我可以通過使用condition和比較sourceCodeChanged與true來做到這一點。
這是我的azure-pipelines.yml中的一個片段:
- stage: build
dependsOn: determineChanges[/span
變數:
sourceCodeChanged: stageDependencies. determineChanges.checkChanges.output['check_changes.SOURCE_CODE_CHANGED']/span>
條件: and(successfuled(), eq(variables.sourceCodeChanged, 'true')
jobs:
- job: buildBinaries
displayName: Build Binaries
步驟:
- bash: echo $(sourceCodechanged)
displayName: TestOutPutDeleteMe #除錯步驟
我實作了一個名為TestOutPutDeleteMe的除錯步驟。當TestOutPutDeleteMe被執行時,它列印出true,所以這意味著值被正確分配給sourceCodeChanged。
如果我試圖在eq()函式中使用變數sourceCodeChanged,它總是將false分配給條件,并跳過階段中的所有步驟。
uj5u.com熱心網友回復:
azure管道條件總是回傳false
這是因為你在階段層面上使用了condition。請嘗試使用以下條件:
- stage: build
dependsOn: determineChanges[/span
條件: eq(Dependencies.determineChanges.output['checkChanges.check_changes.SOURCE_CODE_CHANGED'], 'true'/span>)
請注意,我們需要將階段參考從stageDependencies.stageName.jobName.output['stepName.variableName']更新為Dependencies.stageName.output['jobName.stepName.variableName'>
并且不使用變數的值Dependencies.determinalChanges.output['checkChanges.check_changes.SOURCE_CODE_CHANGED']/code>
我的測驗結果:
stages:
- 階段: 階段A
職位:
- job: A
pool:
name: Default
步驟:
- task: PowerShell@2
displayName: "創建變數"
輸入:
targetType: 'inline'/span>
script: ||
Write-Host "#vso[task.setvariable variable=CustomVar;isOutput=true]true"
name: CustomVariable
- 階段: 階段B
dependsOn: stageA
條件: eq(Dependencies.stageA.output['A.CustomVariable.CustomVar'], 'true'/span>)
jobs:
- job: a
pool:
name: Default
步驟:
- task: PowerShell@2
displayName: "輸出變數"
輸入:
targetType: 'inline'/span>
script: ||
Write-Host "hello world"
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/308877.html
標籤:
上一篇:<p>我建立了這個BST,并試圖遵循java代碼慣例,我決定圍繞一些訪問修飾符進行修復,并添加了一些getters和setters,但現在我的整個代碼在執行中出現了很多問題,我無法弄清楚原
下一篇:不同研發協作模式在云效中的應用

