Azure DevOps | The Will Will Web

The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

如何避免 Pull request 的 Build Validation 同時觸發 Release 部署網站

我們過往設定 CI/CD 的時候,為了要避免 Pull request 的時候也不小心觸發 Release 部署網站,我們都會建立另外一組 Build pipeline 專門給 Pull request 時使用 ( 特定 Branch 的 Build Validation )。不過,這個額外的 Build pipeline 跟原本分支的 Build pipeline 完全一樣,額外維護這份 Pipelines 顯得非常多餘。我今天終於研究出正確的設定方式,所以這篇文章將來說明正確的設定方式。

... 繼續閱讀 ...

如何使用 Git Credential Manager 快速清除 Azure Repos 使用者認證快取

因為我過往建立了數十個不知道何時建立的 PAT (Personal Access Token) 金鑰,為了避免有 PAT 不小心外洩,索性就把我個人在 Azure DevOps Services 上的 PAT 全部清除,然後所有自動化作業都壞了,還好很容易修理。除此之外,我也修改了個人密碼,結果導致本機要透過 git clone 下載 Azure Repos 上面的原始碼也都失效。但重點是,雖然認證失敗,卻不會跳出讓我重新登入,原因是「使用者認證」被快取了,這篇文章我要來說說清除「快取」的方法!

... 繼續閱讀 ...

介紹好用工具:mssql-scripter (自動將完整資料庫匯出成 T-SQL 的神器)

遷移 SQL Server 資料庫是一件感覺好像很簡單,但做起來可能會很麻煩的工作。其實透過 SSMS 就可以做到很多種不同的資料庫遷移方法,但我想找一個能夠更方便的方式,透過命令列的方式自動化整個遷移過程,最近我找到了這個 mssql-scripter 工具,完全可以符合我的需求。這篇文章我就來說說我的應用情境,以及 mssql-scripter 工具的使用方式。

... 繼續閱讀 ...

如何快速找出 Azure Pipelines 中使用到即將退役的 Hosted Pipelines Images

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 設定。

... 繼續閱讀 ...

使用 Windows PowerShell 輸出多行文字應注意的斷行陷阱

我今天遇到了一個棘手問題,原本想透過 PowerShell 寫入一個多行的文字,並放入 Azure Pipelines 執行。這樣的需求我寫過很多次了,不過當下的我突然想不起來確切的語法,所以上網 Google 找到了 PowerShell Multiline String 這篇文章,看到了一個解決方案,當下沒有多想,複製貼上就套用了,而且測試過確實有效,接著就是一連串的鬼打牆,浪費了寶貴的半小時生命。

... 繼續閱讀 ...

解決一個非常罕見的 Azure Functions Runtime is unreachable 問題

上周我們遇到一個非常罕見的問題,一群人費了九牛二虎之力才徹底釐清案情,並且成功修復問題。我們在部署 Azure Functions 的時候,大部分的情境底下都是正常的,唯獨將站台重新部署到 Linux 平台的 App Service Plan 之後,詭異的狀況就此發生。由於案發過程過於冗長,我打算摘要記錄一下我們遭遇的現況與解決方法。

... 繼續閱讀 ...

使用 SqlPackage 對 SQL Server 資料庫進行匯出/匯入/擷取/發行/編寫/報告

今天有同事來問我,他用 SQL Server 資料庫專案管理 SQL Server 資料庫的結構描述 (Schema),在開發環境與測試環境的更新與比對都沒有問題,但偏偏正式機上的 SQL Server 資料庫因為防火牆的關係,通常無法直接從本機直接連接,這導致他沒有辦法比對正式資料庫開發資料庫之間的差異,如果有人異動了正式資料庫,日後的資料庫更新就很容易出問題。這篇文章,我就來介紹這套 SqlPackage 命令列工具。

... 繼續閱讀 ...

如何在 Azure Pipelines 使用 MSDeploy 部署任意檔案到 App Service 站台

我之前有在 使用 MSDeploy 部署一個在 Private Link 封閉網路環境下的 Function App 文章中分享透過 MSDeploy 部署到任意網站的方法。今天這篇文章我則是要來分享如何在只有 發行設定檔 (Publish Profile) 的情況且沒有任何 Azure 訂用帳戶權限的情況下,如何順利透過 Azure Pipelines 的 Hosted Agent 將檔案發佈到 Azure App Service 任意站台下。

... 繼續閱讀 ...

如何使用 Visual Studio Code 來取代難用的 Azure Wikis 線上編輯器

我們經常在 Azure DevOps Services 的專案中撰寫 Wiki 文件,但是 Azure DevOps 的 Wikis 線上編輯器實在是太難用了,我覺得還是在 VSCode 撰寫 Markdown 來的方便許多。除此之外,因為 Azure Wikis 可以放附件上去,但也不是所有檔案類型都支援,所以偶爾會遇到無法上傳附件的狀況。還有,你可能想要取回已經刪除的文件,但是從線上似乎沒有方法可以查閱這些文件。今天我打算用這篇文章來解決上述所有問題!

... 繼續閱讀 ...

在 Azure Pipelines 裡面正確使用 ROBOCOPY 複製檔案的方法

在命令列環境下執行程式,這個世界普遍有個共識,那就是應用程式的結束狀態碼(Exit Code)為 0 時,就會被視為是「沒有錯誤」的結果。任何非 0 的結束狀態碼,都代表有一定程度的錯誤發生。因此在 Azure Pipelines 或任何其他 CI 平台上,預設遇到應用程式回傳 Non-Zero 的結束狀態碼,就會自動報錯。誰知道 ROBOCOPY 原來複製成功,也會回傳非 0 的結束狀態碼!

... 繼續閱讀 ...