你可以指定做些 powershell script 在 Build 或 Release 階段
這是一個非常彈性且強大的作法
今天要介紹的是 powershell script 如何搭配一些特殊的 command
來讓 VSTS 的 Log 上的呈現應用更加直覺
Write-Warning
寫入警告資料流
以黑色文字且前綴 WARNGING: 呈現
顯示警告後再繼續執行命令並不影響之後的 Process
Write-Host + task.logissue type=warning
自訂輸出寫入主控程式 + task.logissue type=warning
以黃色文字且前綴 ##[warning] 呈現
Build Summary Issues 會顯示訊息
是個寫警告訊息的一個好方式
Write-Error
寫入錯誤資料流
以紅色文字且前綴 [##error] path 呈現
Build Summary Issues 會顯示額外訊息
中斷之後的 Process
Write-Host + task.logissue type=error
以紅色文字且前綴 ##[error] 呈現
Build Summary Issues 會顯示訊息
不會中斷之後的 Process
Process 中斷的關鍵原因
注意到同樣都是拋出 Error 訊息, 只有 Write-Error
會中斷後續的 Process
而 task.logissue type=error
而是會繼續執行剩下的 subsequent
如果修改範例把 powershell script 改成如下
代碼中第一行 Write-Error
寫入了錯誤資料流
當下並不會中斷整個 Process, 會繼續把剩下的指令做完
該 Process 完成時才會去檢查錯誤資料流
但若你想要直接有錯誤不跑接下來的邏輯
那就必須使用這個指令 exit 1
可以觀察出剩下的代碼與後面的 Process 都被中斷
Write-Error
與 exit 1
的使用取捨在於該 script 要做的邏輯前後是否有依賴關係
設置環境變量
可以使用 $env:DynamicVariable = "xxx"
這方式可在 Current Task 使用
欲想要在之後的 Process 都讀取到新設定的環境變量的話
則必須借助特殊的 Command: Write-Host "##vso[task.setvariable variable=DynamicVariable]Persistent Value Set In Script"
進度呈現
Write-Host "##vso[task.setprogress value=$i;]Sample Progress Indicator"
使用這個 Command 可以在當前 Process Name 旁顯示數值
相關連結
Tips for Writing PowerShell Scripts to Use in Build and Release Tasks