DevOps | The Will Will Web

The Will Will Web

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

如何在 .NET 透過 nuget.config 自訂 NuGet 套件來源

有時候我們會希望從本機硬碟安裝 NuGet 套件,有時候則是想要安裝公司內部發行的 NuGet 套件,我發現許多人都會透過 Visual Studio 去調整全域的 nuget.config 設定檔,但這樣很容易造成你在開啟其他不同專案的時候會無法成功還原套件的情況。另一方面,我們在 CI 的環境中,若需要指定自訂的 NuGet 套件來源,通常也都是透過建立 nuget.config 的方式來指定。這篇文章我將來說明如何在方案或專案中建立 nuget.config 檔案,並將該檔案加入到版控之中。

... 繼續閱讀 ...

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

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

... 繼續閱讀 ...

如何在 Windows 安裝 Gitea 源碼版控系統與 PostgreSQL 14 資料庫

Gitea 是一套功能相當完整卻又非常輕量的 Git 源碼版控與議題追蹤系統,我在這幾年也幫好幾家公司安裝過,基本上在 Windows 上面安裝 Gitea 的過程十分容易,只要幾個命令就可以安裝到好,但是若真的要一次安裝到好,其實還是有一些門檻,畢竟網路上的資料太多太亂,這篇文章我將分享我的安裝過程,基本上照著做應該都可以順利的安裝到好。

... 繼續閱讀 ...

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

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

... 繼續閱讀 ...

如何以 Guest 身份將 Azure 的 Service Principal (服務主體) 加入角色指派

最近加入到一個客戶的 Azure 訂用帳戶設定 CI/CD,在做這件事情之前,當然是先建立好 Service Principal (服務主體),然後才進行角色指派,讓該服務主體擁有必要的權限才能進行部署。不過建立完成後才發現,我忘記將 Storage account (儲存體帳號) 的 Storage Blob Data Contributor 角色指派給我建立好的 Service Principal (服務主體),以致於我無法透過 AzCopy 複製檔案進 Blob 容器中。最悲劇的地方,就是我的 Guest 身份竟然無法讀取 Service Principal (服務主體) 的任何資訊,導致我無法順利指派角色,這篇文章我就來說說我的最終解法!

... 繼續閱讀 ...

在 Azure 實現 GitOps 的起手式:使用 Bicep 部署 Web 應用程式

我經常需要在 Azure 手動建立許多測試站台,雖然說設定上並沒有很複雜,但是時間一久,累積出將近百來個 Web App 也是蠻難維護的,而且 組態漂移 (Configuration Drift) 的問題也會日趨嚴重,久而久之就不知道服務到底是怎樣設定出來的了。近幾年很夯的 GitOps 觀念興起,讓你可以使用 Git 管理基礎架構的所有設定,用應用程式開發的流程來管理維運的基礎架構,提升基礎架構的可維護性。本篇文章我就簡介一下 Azure 專用的 Bicep 語言,教你如何利用 Bicep 實現 Azure 雲端平台的 GitOps 架構。

... 繼續閱讀 ...

錯誤的 HintPath 也可以在 Visual Studio 中建置,但 CI 的時候可能不行

我在幫一個客戶 Code Review 並重構專案的時候,發現他們的專案在 Visual Studio 2019 都可以順利的建置專案,但是透過 Azure Pipelines 使用 MSBuild 建置卻會編譯失敗,錯誤訊息非常不清楚,真的是查了很久才想通問題的主因在哪裡,我覺得值得寫篇文章記錄一下。

... 繼續閱讀 ...

如何正確使用 Azure Pipelines 內建的 FTP Upload Task 上傳與刪除檔案

這幾天在 Review 公司內一個 ASP.NET Core 專案的 Azure Pipelines,我發現網站是透過 FTP 進行更新的。然而自動化部署的過程,則是先上傳一個 app_offline.htm 檔案,然後在部署成功後刪除 app_offline.htm 檔案。也因為這個專案,我發現了一些 Azure Pipelines 內建的 FTP Upload task (FtpUpload@2) 有些魔鬼般的細節,實測之後發現有太多地雷,便花了點時間研究一下。

... 繼續閱讀 ...

Jenkins on Windows 心得分享 (07):如何手動更新 Jenkins 伺服器所有外掛

當你已經安裝一大堆 Jenkins Plugins,想要全部自動更新,但是又連不到 Jenkins 指向的 Mirror Sites 的話,想必就只能手動更新了。本篇文章延續 Jenkins on Windows 心得分享 (06):如何指定 Mirror 鏡像網站下載外掛 的內容,特別補充如何手動更新 Jenkins 伺服器所有外掛(Plugins)。

... 繼續閱讀 ...