[第八屆IT邦幫忙鐵人賽] IIS remote management : 變更站台實體路徑與移除舊有資料

前言

在前面六篇文章,我們介紹有關實作 Deploy 的方法與處理 CDN 環境下遭遇的問題。而在這一篇文章我們將要介紹最後一個步驟:變更站台實體路徑。如同先前文章提過的,這一個步驟為的是避免在 Deploy 過程中,使用者進行操作可能得到網站錯誤訊息的處理方法,若您的產品有固定維護或更版時間,或許可以跳過這個步驟。另一個好處是,若在 Deploy 過程中發生程式或系統等不可預期的錯誤,仍有機會可以切換回前一個正常版本,漸少服務停擺時間,降低損失。本篇文章若有錯誤或任何建議,請各位先進不吝提出,謝謝!
註:因.Net Core與.Net Framework皆可使用此方式變更實體路徑,故本篇文章為參考個人部落格案例撰寫


 

...繼續閱讀 »

[第八屆IT邦幫忙鐵人賽] Deploy : CDN Solution 2 - 資料夾命名規則

前言

上一篇我們透過 gulp-replace 與 gulp-hash 更改檔案名稱與引入程式名稱方法處理 cache 的問題,而在這一篇,提供利用多一層版本資料的方式解決相同的問題。這種做法的另一優點在於:若佈署後發生程式錯誤情形,仍可以透過引入上一版本資料夾的方式先行處理,減少服務無法運作時間。若有錯誤或任何建議,請各位先進不吝提出,謝謝!


 

...繼續閱讀 »

[第八屆IT邦幫忙鐵人賽] Deploy : CDN Solution 1 - Hash and Replace

前言

CDN 的原意是透過節點與快取方式於增加網站的速度與穩定度,但在開發、維護專案的過程中,常常遭遇到更新javascript、css或圖片檔案後沒有作用的情形發生(因為快取),有些 CDN 網站有提供 flush 功能清除快取,但使用上卻有次數限制,若修改程式次數較頻繁,仍會遇到修改無法及時生肖的問題。在收集 CDN 相關資料後發現多數開發人員建議在 CDN 上放置靜態或不常更動的檔案,若將常異動的檔案放上則違背 CDN 的原始用意的意思,但為了解決程式更新問題,本篇與下篇文章將透過一些**特殊方法(旁門左道)**的方式進行排除 cache 問題(僅供參考),若有錯誤或任何建議,請各位先進不吝提出,謝謝!


 

...繼續閱讀 »

[第八屆IT邦幫忙鐵人賽] Deploy : Deploy to Azure CDN

前言

CDN - 內容傳遞網路,透過網路連結各地強大處理能力的伺服器,快速傳輸照片、音樂、文件...等檔案給使用者,提供快速、高傳輸性與低成本的服務,也成為現今網站快速與穩定的解決方案之一。個人因為工作關係,曾經接觸過2-3種不同 CDN 服務,而有些 CDN 可以透過 FTP 傳輸檔案,您可以利用上一篇文章方法實作 deploy task。而在這篇文章,我們簡單介紹如何在設定 Azure CDN 與透過 gulp-deploy-azure-cdn 套件實作 deploy task,若有錯誤或任何建議,請各位先進不吝提出,謝謝。


 

...繼續閱讀 »

[第八屆IT邦幫忙鐵人賽] Deploy : FTP

前言

在前面的章節,我們介紹如何在 gulpfile 內安裝與使用 robocopy,並透過檔案同步方式實作 Deploy 工作。透過 robocopy 方式雖然方便,但很有可能遇到網域與安全性問題而難以實作。而講到檔案傳輸方式,最常用也最讓人耳熟能詳的方式莫過於 FTP,只需要架設 FTP Server 與使用Ftp client 即可進行檔案傳輸。理所當然,我們也能透過 FTP 的方式實作 Deploy 工作。在這一章節,我們將使用 gulp-ftp 與 gulp-util 實作 Deploy。


 

...繼續閱讀 »

[第八屆IT邦幫忙鐵人賽] Deploy : WebDeploy

前言

過去個人工作經驗,在多數專案中,測試、開發機(如:dev, qa, staging)通常會位於公司網域內,由 IT人員進行管理,但正式機(production)幾乎位於客戶的機房(若您的公司是自己開發產品可能例外),由客戶方的IT人員進行管理。因為安全性的關係,客戶方的 IT管理人員很少開放資料夾存取權限讓您隨意使用。故多數情況下,我們需要透過 WebDeploy serices 協助進行佈署動作。接下來在本章節,我們將介紹如何使用 WebDeploy,若有錯誤或任何建議,請各位先進不吝提出,謝謝!
註:因.Net Core與.Net Framework皆可使用此方式佈署,故本篇文章為參考個人部落格案例撰寫


 

...繼續閱讀 »

[第八屆IT邦幫忙鐵人賽] Deploy : Robocopy

前言

.NET Core 安裝與介紹這個章節,提到了因為.NET Core 的特性,可以透過本身指令進行 Restore, Build, Test 與 Publish 等工作,因此只需要對於Deploy與IIS管理上撰寫 Build Scripts 即可。Deploy 並沒有固定方法或必須遵守的規範,您可以透過檔案搬移、Rsync、FTP或WebDeploy...等不同方式完成 Deploy 工作,而您只需要依據環境選擇最合適的方法即可。接下來的幾篇,我們會介紹數種不同 Deploy 方法,若有錯誤或任何建議,請各位先進不吝提出,謝謝!
 

...繼續閱讀 »

[第八屆IT邦幫忙鐵人賽] Gulp 套件介紹

前言

上一篇我們簡單介紹如何安裝 Gulp 與其基本原理,並且提供了一個minify的範例。在一篇,我們將會介紹實作 NET Core 持續整合過程中前後端所需要的基本套件。透過這些套件的使用,可以幫助我們快速完成檔案搬移、參數傳遞與指令執行...等自動化工作。除此之外,npm 網站上有許多強者提供了許多 gulp 套件提供下載使用,您可以嘗試搜尋你想要到的工具,協助您更快速完成工作。若有說明錯誤或任何建議,請各位先進不吝提出,謝謝!

這章節我們介紹的套件,包含:

  1. yarg: 提供從指令讀取參數功能
  2. gulp-clean: 清除資料
  3. gulp-sass: 將sass編譯為css
  4. 執行 powershell 指令:若真的找不到套件,powershell 會幫您很大的忙

 

...繼續閱讀 »

[第八屆IT邦幫忙鐵人賽] Gulp 安裝與介紹

前言

從前面幾篇的介紹,我們有了持續整合伺服器(TeamCity)的協助,加上 NET Core 本身的指令,目前為止可以完成多數的工作。但在自動化過程中,我們仍需要透過一些工具進行其他的工作,像是資料搬移、檔案命名或邏輯處理,當然,我們可以透過命令提示字元 command-line、powershell 或程式語言(C#, F#)...等方式進行這些工作。而這系列文章中,我們會使用 Gulp 與 powershell 來進行這些工作。若有說明錯誤或任何建議,請各位先進不吝提出,謝謝!


 

...繼續閱讀 »

[Gulp][.Net Web Application][CI] 最終篇: Team City 設定 與 Build Scripts 撰寫

前言

個人實作 .Net Framework 、.Net Core 持續整合流程,並整合前端佈署至CDN整體流程後,深感製作自動化流程隨著技術創新,變得越來越簡便。尤其是 .Net Core 部分,Restore, Build, Test部分都可以以自身指令執行,不需要額外引入套件與撰寫指令,只需要實作 Deploy 部份,這讓我非常的驚訝(但這部分就不在此系列贅述,而會在.Net Core系列文進行說明),也感嘆科技進步神速。

此外,這篇文章是這系列最後一篇,個人覺得後面幾篇文章表達方式比較不好,近期內會逐步修正部分內容,讓有興趣的人更容易理解,請多包涵。在此也感謝花費時間觀看此系列文章的所有人,若有觀念錯誤或建議請各位先進不吝指教。

...繼續閱讀 »

[Gulp][.Net Web Application][CI] Gulp CI Deploy (2) - 使用 MSDeploy (WebDeploy) 進行 Deploy

前言

在上一篇,我們透過 Gulp Robocopy 套件進行網站佈署,而本篇我們將使用微軟的Web Deploy 進行網站佈署。不同於 Robocopy ,網頁伺服器目標資料夾需要開放編輯權限(若開放所有使用者讀寫權限,可能有些安全性的疑慮),Web Deploy 則是使用Windows Service (透過 port 8172) 協助進行佈署。理所當然,因為是第一次使用CI流程,過程中遇到許多IT問題,這此也一併記錄下來,提供各位與未來自己設置的時候參考使用,若有觀念錯誤或者建議請各位先進不吝指教。

...繼續閱讀 »

[Gulp][.Net Web Application][CI] Gulp CI Deploy (1) - 透過Gulp : Robocopy 進行 Deploy

前言

執行完 Restore, Build, 與 Test 後,接下來進行的工作是 Deploy。Deploy 實作的方法有許多種,並沒有哪一種方法是最正確的。在這系列文章中我們使用robocopy 與web deploy 兩個套件完成這項工作。無論使用哪一個套件,都有些限制與前置作業需要進行。Robocopy 使用上相當簡便,但 Team City Agent 必須"找得到"要佈署的伺服器,透過分享資料夾與設定權限的方式,將程式複製過去後完成佈署。如同第一篇我們所顧慮的,複製期間若沒有實行關機,進行操作的使用者可能會收到錯誤訊息,故我們將不直接將資料傳輸到目前運作版本的資料夾內,而是使用建立新版本資料夾後,更改實體路徑的方式,降低系統運作中發生錯誤的機會。

若有觀念錯誤或者建議請各位先進不吝指教。

...繼續閱讀 »

[Gulp][.Net Web Application][CI] 透過 Gulp:gulp-nunit-runner 進行 Unit Test

前言

陸陸續續從 Net Framework Fake CI,轉到了 Gulp CI,繼續轉往 .Net Core + Gulp CI 的,最後仍需要整合 Front end CI 部分,一路走來有挺身的感觸。 做持續整合就像是造橋舖鐵軌蓋捷運,工人需要處理許多基礎建設與技術,才能讓乘客舒適又快速地到達目的地,提供遊客更好的服務品質(自動測試、自動佈署、前端避免cache處理與自動刪除舊版程式...等),讓開發人員專注於程式開發。
當然,不免要碎碎念一下.... 
建構 CI 的過程中碰了不少壁,維護需要應付許多雜事,當 CI 掛掉的時候,所有人等著維修好的感覺真的很歡樂 ,所以請善待處理 CI 的工程師(笑)。

...繼續閱讀 »

[Gulp][.Net Web Application][CI] 透過 Gulp:gulp-msbuild 進行 Build Project

前言

本篇主要說明如何使用gulp-msbuild套件進行專案建置,除了在建置需注意是否安裝了
.NET Tools、 .NET Framework與相關套件,也需注意msbuild指令中的設定。個人過去
對於msbuild指令中的屬性設定較不熟悉,過程中查了資料才漸漸了解相關設定(如更
新web.config內容、產生publish資料...等),若有觀念錯誤或者建議請各位先進不吝指教。

...繼續閱讀 »

[Gulp][.Net Web Application][CI] 方案結構與透過 Gulp 進行 NuGet Package Restore

前言

在幾乎完成 Gulp 實作 .Net Web Application 持續整合時,正巧遇上 Visual Studio 2015
Update 3 release,開發團隊成員也陸續進行升級。因為這次是新的專案,開發初期套件
更動較頻繁,很快發現專案進行 package restore 的過程中,出現部分套件相依錯誤或者
找不到某些套件的錯誤 (猜測是 Nuget 升級的關係),個人將進行Visual Studio升級後解
決了這個問題。而CI部分下載並更換最新的 Nuget.exe 即可正常運作。
本篇文章將簡單介紹如何透過 gulp套件執行 Nuget.exe ,替專案進行 package restore。

...繼續閱讀 »

[Gulp][.Net Web Application][CI] 流程簡介、代入參數與修改AssemblyInfo

前言

本篇介紹 實作流程 與 如何安裝與使用套件 :

  1. yrags: 取得指令中的參數,包含:
               1.佈署版本號碼 (1.0.0.1)
               2.佈署的方式 (dev, qa, staging, prd... etc.)
               3.專案名稱 (WebAPI, BO... etc)
  2. gulp-dotnet-assembly-info: 更改每個專案中的 AssemblyInfo.cs 內容
...繼續閱讀 »

[Gulp][.Net Web Application][CI] Gulp 基礎介紹

前言

雖然目前已經有數個持續整合的流程,且運做得相當穩定。在新的專案,Team leader 希望嘗試使用 Gulp 來進行.Net MVC Web Applicatioon 持續整合,讓我這次機會從頭到尾的撰寫持續整合流程。本系列文章使用 Gulp + Teamcity配合製作持續整合流程,中間也會詳細描述遭遇的問題與解決的方法,因為第一次嘗試,有觀念錯誤或者建議請不吝提出。。

...繼續閱讀 »