顯示具有 CI/CD 標籤的文章。 顯示所有文章
顯示具有 CI/CD 標籤的文章。 顯示所有文章

建立Deployment Group



因為是布署到VM,在建立Release檔之前,要先綁定要布署到哪一台機器。
  • 這裡只要記的勾選使用個人access token這個選項即可
  • Script貼到VM的PowerShell執行後,所有選項都enter就可以了


建立Release Definition



Template看需求選擇,這裡選擇IIS Website Deployment。
  • 這裡只要記的勾選使用個人access token這個選項即可
  • Script貼到VM的PowerShell執行後,所有選項都enter就可以了


Add Artifact



  • Source選之前我們建立的Build


  • 設定持續布署Trigger(右上角的閃電) : 把trigger改成Enabled並選擇觸發的分支
  • Continuous deployment trigger : 勾選Enabled,新增Build branch filters

Environment



這裡環境先建立一個Environment布署到Stage,在卡一關審核布署到Prod。
  • 審核設定

  • 其他沒有需要特別處理的deployment condition就預設即可

Environment Task 設定



發行方式如果選的是檔案系統,不需要在release前置換config裡appsettings、connectionstring以外的區塊內容,只需要IIS Web App Deploy這個步驟就可以了。
這已我們區要在布署前置換一些參數,布署步驟如下圖:




  • Process
    • Website name : 填入你IIS設定的站台名稱

  • Run on deployment group
    • Deployment group : 選一個之前建立的Deployment group
    • 其他基本都用預設


  • Replace token


  • IIS Web App Deploy
    • Package or Folder : 選到發行檔設定的.zip檔案
    • SetParameters File : 選到SetParameters.xml
    • Remove Additional Files at Destination : 勾選



前言



目標是要將網站的CICD建立起來,想在VSTS設定在專案布署到Server前將config的一些資訊替換掉 :

建立發行檔



選擇Web Deploy封裝,封裝位置放在該專案的Publish資料夾下的一個.zip



另外,如果有需要在布署網站之前修改一些config檔設定,又不在VSTS預設就有可以設定變數的appsetting和connectionstring區段裡,就需要建立parameters.xml

建立parameters.xml




可以看到範例中,parameter要設定name、defaultValue,defaultValue設定為#{xxx}#的目的是在設定布署的task時,我們會加入一個Replace token的步驟,裡面預設就是以#{ }#來判斷他要抓取的變數,再把變數值在release environment的variables設定,在release前替換掉。parameterEntry的設定是指你要替換的值是在哪個檔案、哪種格式、在哪一種tag下的哪個attribute,以範例第一個parameter來說就是在web.config裡找exceptionless這個tag,tag裡的apiKey這個attribute為替換目標。parameters.xml在發行後會產生一個SetParameter.xml如下圖 :


在Release的Variables設定如下:

Builds



首先New一個Build Definition,Template看需求選擇,這裡因為是ASP.NET MVC Web Application,所以選擇ASP.NET,預設會產出好幾個Task步驟,這裡我們刪減後只剩下這些步驟 :


Process

  • Name的部分輸入Build名稱
  • Agent queue選擇你要用的host即可

Get sources

  • From選擇你的專案檔案來源
  • Repository選擇你的專案Repository
  • Branch你檔案來源的分支
  • Clean:在Build執行前是否清空你當前資料夾

Run on agent

  • Job cancel timeout設定為1

NuGet restore

  • Path to solution : 選專案sln (但要注意是如果你一個方案下有多個網站,請複製sln後開啟,把方案下其他專案移除後儲存)
  • Feeds to use : 如果專案有用私人nuget server,要選Feeds in my NuGet.config (PS : Nuget.Config在個人user資料夾下\AppData\Roaming\NuGet),自己是習慣把這個檔案複製到專案的App_Data底下。




Build solution

  • Visual Studio Version : 選你開發的vs版本即可
  • MSBuild Arguments : 發行檔用Web Deploy(封裝) => /p:DeployOnBuild=true;PublishProfile=CICD;PackageAsSingleFile=true
    發行檔用檔案模式 => /p:DeployOnBuild=true;PublishProfile=CICD
  • Configuration : web.config有切分不同環境不同檔案,就選擇你對應的名稱
  • Clean:打勾
  • 進階勾選 restore nuget packages


UnitTest

  • Visual Studio Version : 選你開發的vs版本即可
  • 其他基本都預設就可以


Copy File

  • Source Folder : 依據你建立發行資料的位置,這裡是發行到該專案的Publish資料夾下$(Agent.BuildDirectory)\s\FastIP.Application\Publish
  • Target Folder : 複製到的目標資料夾 $(Build.ArtifactStagingDirectory)
  • 進階 : 勾選清理目標資料夾



Publish Build Artifacts

  • 基本上都是預設


Triggers



勾選啟動CI,選擇你的目標分支即可

Options

Build number format : $(date:yyyyMMdd)$(rev:.r)