對於Linux平臺上的持續集成和持續交付可使用Docker快捷的完成任務,可是Windows Server下卻很差使用,通常來說,windows Server下最簡單的發佈方式是直接手動打包發佈或是利用webDeploy完成,可是手動發佈太麻煩,webDeploy配置也麻煩,所以嘗試使用Jenkins+Powershell,將代碼拉取到Windows Server上而後經過dotnet命令發佈,並經過Powershell更新相應的網站,可是首次網站配置工做,仍是得手動進行發佈工做,對於在公司內部服務器測試來說,能夠減輕許多工做量,作到代碼合併到主幹便可更新測試服務器。html
本地環境及工具:Windows Server 2008R2+Jenkins+Powershell+.Net Core2.2 java
從Jenkins官網下載Windows下的Jenkins程序,下載的壓縮包解壓後爲msi版本,做爲系統服務在後臺運行,移入到服務器中git
執行安裝,按照正常的安裝步驟安裝便可web
安裝完畢會自動打開網站或手動訪問localhost:8080,開始配置Jenkins,找到網站中指定的路徑中,拿到生成的密碼解鎖Jenkins。shell
下一步安裝推薦的插件便可,若是知道哪些插件要安裝則選擇另外一個選項,此處我選擇第一個也是默認選項,而後等待安裝便可。windows
安裝完畢,配置管理員帳號密碼完畢便可,完成後自動跳轉到Jenkins中,下次登陸時須要用剛配置好的帳號密碼登陸。服務器
一、配置IIS及相關須要的服務:微信
經過圖形界面配置IIS並安裝須要的服務,可參考Windows ServerR2配置教程:https://jingyan.baidu.com/article/5d6edee2e034f099eadeec3c.htmlapp
或經過腳本配置IIS,打開Windows Powershell Modules工具,先經過命令查看本地的功能。工具
get-command -module servermanager
如我本地是Add-開頭,則須要將Install-WindowsFeature更換成Add-WindowsFeature,不然稍後的操做會獲得以下錯誤,在2008R2上是Add-開頭,而在2008R2之後的版本是Install-開頭,此部分能夠查看微軟官方文檔。
再次查看IIS服務並獲得展現能夠選擇的服務,該部分服務就是圖形化界面中的選項菜單,選擇好須要的服務後
get-windowsfeature web*
執行如下命令完成腳本配置IIS,能夠比對腳本內的服務和powershell中的服務,直接繼續按照命令安裝便可,至此IIS配置及安裝須要的服務完成。
$IISFeatures = "Web-WebServer","Web-Common-Http","Web-Default-Doc","Web-Dir-Browsing","Web-Http-Errors","Web-Static-Content","Web-Http-Redirect","Web-Health","Web-Http-Logging","Web-Custom-Logging","Web-Log-Libraries","Web-ODBC-Logging","Web-Request-Monitor","Web-Http-Tracing","Web-Performance","Web-Stat-Compression","Web-Security","Web-Filtering","Web-Basic-Auth","Web-Client-Auth","Web-Digest-Auth","Web-Cert-Auth","Web-IP-Security","Web-Windows-Auth","Web-App-Dev","Web-Net-Ext","Web-Asp-Net","Web-ISAPI-Ext","Web-ISAPI-Filter","Web-Mgmt-Tools","Web-Mgmt-Console" Install-WindowsFeature -Name $IISFeatures
可能會獲得以下錯誤信息,須要修改Powershell的執行策略。
先經過命令查看當前策略
get-executionpolicy
設置當前計算機容許執行腳本
set-executionpolicy remotesigned
再次執行配置IIS的腳本等待安裝直到成功。
·
二、安裝.Net Core環境:
先從官網下載.Net Core SDK和用於與IIS打交道的Runtime & Hosting Bundle,.Net Core SDK不是必須的,若是服務器上只作運行環境的話,可是考慮到作持續交付,得用到SDK完成編譯、發佈,所以仍是裝上SDK。此處以.Net Core2.2版本爲例下載,而後執行安裝,可能得注意下安裝順序,先安裝SDK程序,後安裝Runtime&HostingBundle程序,安裝完畢後在IIS的模塊頁中查看剛剛安裝的模塊。
三、腳本一鍵安裝並配置:
經過Powershell中執行一整套命令完成IIS、.Net Core SDK和Runtime & Hosting Bundle的安裝及配置工做,須要注意的是,該腳本中部分命令須要在Windows Server2008R2後的版本才能運行。
$existDotnet=Test-Path "C:\Program Files\dotnet\dotnet.exe" if(!$existDotnet){ # Install IIS $IISFeatures = "Web-WebServer","Web-Common-Http","Web-Default-Doc","Web-Dir-Browsing","Web-Http-Errors","Web-Static-Content","Web-Http-Redirect","Web-Health","Web-Http-Logging","Web-Custom-Logging","Web-Log-Libraries","Web-ODBC-Logging","Web-Request-Monitor","Web-Http-Tracing","Web-Performance","Web-Stat-Compression","Web-Security","Web-Filtering","Web-Basic-Auth","Web-Client-Auth","Web-Digest-Auth","Web-Cert-Auth","Web-IP-Security","Web-Windows-Auth","Web-App-Dev","Web-Net-Ext","Web-Asp-Net","Web-ISAPI-Ext","Web-ISAPI-Filter","Web-Mgmt-Tools","Web-Mgmt-Console" Install-WindowsFeature -Name $IISFeatures # Install .NET Core SDK 2.2.104 $downloadNETCoreSDKUrl="https://download.visualstudio.microsoft.com/download/pr/4a195fc9-7696-4c24-add2-e791b399766c/3a67d698a74505b46db9d9779745e47b/dotnet-sdk-2.2.104-win-x64.exe" Invoke-WebRequest $downloadNETCoreSDKUrl -outfile $env:temp\dotnet-sdk.exe Start-Process $env:temp\dotnet-sdk.exe -ArgumentList '/quiet' -Wait # Install the .NET Core Windows Server Hosting bundle $downloadNETCoreHostingIISUrl="https://download.visualstudio.microsoft.com/download/pr/5efd5ee8-4df6-4b99-9feb-87250f1cd09f/552f4b0b0340e447bab2f38331f833c5/dotnet-hosting-2.2.2-win.exe" Invoke-WebRequest $downloadNETCoreHostingIISUrl -outfile $env:temp\dotnet-hosting.exe Start-Process $env:temp\dotnet-hosting.exe -ArgumentList '/quiet' -Wait # Restart the web server so that system PATH updates take effect net stop was /y net start w3svc }
四、配置IIS應用程序池:
在IIS中配置應用程序池已知足.Net Core爲自宿主類型,IIS只是起到反向代理做用。
一、在Jenkins中配置流水線,選擇新增一個任務並選擇構建自由風格軟件項目, 配置Git地址,若是出現以下錯誤信息則須要在服務器上安裝Git,直接下載Git安裝到服務器中,並在Jenkins中配置
Failed to connect to repository:Error performing command:git.exe ls-remote-h ........
在Jenkins首頁左側系統管理->全局工具配置中找到Git,而後修改成安裝路徑下.exe所在位置,保存便可,再次回到項目制定處填寫Git地址錯誤消失。
配置完Git地址後的一些信息以下簡單設置一下便可
二、項目發佈後打包到服務器下,經過IIS增長網站,選擇應用程序池,選擇物理路徑等等操做,保證第一次手動操做的正常運行,此處暫時先跳過,操做簡便。
三、在Jenkins中安裝一個Powershell插件,在系統管理->插件管理->可用項下搜索Powershell執行安裝,在Jenkins項目配置中新增Build環節,選擇Powershell,而後完成對網站的更新。
在powershell中涉及到還原依賴包、編譯代碼、中止站點、發佈項目,重啓站點等等......,對於站點名稱,應用程序池,發佈路徑,站點路徑等都由本身決定,保存後,執行構建,或改動代碼觸發構建,還可接入郵件通知功能。
# 還原項目 dotnet restore # 編譯項目 dotnet build # 定義站點名稱 $websiteName="limsSite" # 應用程序池 $applicationPool=".NetCore" # 臨時發佈路徑 $publishTempPath="D:\Project\LimsSiteTemp" # IIS站點路徑 $publishPath="D:\Project\LimsSite" # 指定發佈路徑 dotnet publish -o $publishTempPath -c Release # 關閉站點 C:\Windows\System32\inetsrv\appcmd.exe stop site $websiteName # 中止指定應用程序池: # C:\Windows\System32\inetsrv\appcmd.exe stop apppool /apppool.name:"$applicationPool" # 複製文件到IIS站點下 Copy-Item $publishTempPath $publishPath # 啓動指定應用程序池: # C:\Windows\System32\inetsrv\appcmd.exe start apppool /apppool.name:"$applicationPool" # 啓動站點 C:\Windows\System32\inetsrv\appcmd.exe start site $websiteName # 刪除站點 # C:\Windows\System32\inetsrv\appcmd.exe delete site $websiteName
至此,Jenkins&Asp.Net Core持續交付到Windows Server上,方便快速測試服務器的發佈工做也就完成了,可能還留有坑,暫時不影響。
歡迎關注微信訂閱號,有新的文章將同步到訂閱號中
2019-03-21,望技術有成後能回來看見本身的腳步