我們過往設定 CI/CD 的時候,為了要避免 Pull request 的時候也不小心觸發 Release 部署網站,我們都會建立另外一組 Build pipeline 專門給 Pull request 時使用 ( 特定 Branch 的 Build Validation )。不過,這個額外的 Build pipeline 跟原本分支的 Build pipeline 完全一樣,額外維護這份 Pipelines 顯得非常多餘。我今天終於研究出正確的設定方式,所以這篇文章將來說明正確的設定方式。
... 繼續閱讀 ...
Azure DevOps Services 的 Hosted Agent (vs2017-win2016
) 與 GitHub Actions 的 Runner (windows-2016
) 即將在 2022/03/15 正式移除對 Windows Server 2016 的支援,屆時使用這些 Hosted Agents 的 Pipelines 將無法執行。但我們公司使用 Azure DevOps Services 多年,數百個專案的 CI/CD 很難一個專案一個專案檢查是否選用的 Hosted Agents 即將退役,這篇文章我將分享怎樣可以批次找出有問題的 Pipelines 設定。
... 繼續閱讀 ...
Azure Pipelines 有個 Logging commands 可以用來與 Agent 進行溝通,你可以在執行 Pipelines 的過程中,對 Agent 做出許多設定,可以做的事情還蠻多的,而且我之前也寫過好幾篇文章,今天我想專注在「環境變數」這件事情上,尤其是 PATH
環境變數。
... 繼續閱讀 ...
我之前有在 使用 MSDeploy 部署一個在 Private Link 封閉網路環境下的 Function App 文章中分享透過 MSDeploy 部署到任意網站的方法。今天這篇文章我則是要來分享如何在只有 發行設定檔 (Publish Profile) 的情況且沒有任何 Azure 訂用帳戶權限的情況下,如何順利透過 Azure Pipelines 的 Hosted Agent 將檔案發佈到 Azure App Service 任意站台下。
... 繼續閱讀 ...
雖然 Azure Pipelines 提供的 Microsoft-hosted agents 大多已經內建了 Adopt OpenJDK 8.0/11.0/13.0 版本可供選擇,但是我們最近有個案子,客戶指定要用 IBM Java SDK 8.0 為主要的 JDK 版本,所以就需要額外下載與設定才能使用。本篇文章將說明完整的設定方法。
... 繼續閱讀 ...
在命令列環境下執行程式,這個世界普遍有個共識,那就是應用程式的結束狀態碼(Exit Code)為 0
時,就會被視為是「沒有錯誤」的結果。任何非 0 的結束狀態碼,都代表有一定程度的錯誤發生。因此在 Azure Pipelines 或任何其他 CI 平台上,預設遇到應用程式回傳 Non-Zero 的結束狀態碼,就會自動報錯。誰知道 ROBOCOPY 原來複製成功,也會回傳非 0
的結束狀態碼!
... 繼續閱讀 ...
這幾天在 Review 公司內一個 ASP.NET Core 專案的 Azure Pipelines,我發現網站是透過 FTP 進行更新的。然而自動化部署的過程,則是先上傳一個 app_offline.htm
檔案,然後在部署成功後刪除 app_offline.htm
檔案。也因為這個專案,我發現了一些 Azure Pipelines 內建的 FTP Upload task (FtpUpload@2
) 有些魔鬼般的細節,實測之後發現有太多地雷,便花了點時間研究一下。
... 繼續閱讀 ...
由於我在 Azure Pipelines 設定的 CI 有整合 Telegram Notification,但我希望依據前一個建置步驟 (Task) 的執行狀態,動態決定要不要執行這個 Telegram 訊息推播步驟,嘗試了好些時間,終於可以理解正確設定的方法。
... 繼續閱讀 ...