window下使用Jenkins來(lái)做自動(dòng)化部署的教程圖解
今天我們來(lái)說(shuō)一下,如何使用Jenkins+powershell腳本,將我們的.NET CORE的腳本部署到對(duì)應(yīng)的服務(wù)器上.
這里我們使用的源碼管理工具是TFS.雖然源碼管理器比較老舊,但是原理都差不多.
1.安裝Jre,因?yàn)槲覀兊腏enkins是基于java開(kāi)發(fā)的,所以需要先在服務(wù)器上安裝java的運(yùn)行時(shí)環(huán)境
這個(gè)安裝過(guò)程比較簡(jiǎn)單,百度下載JRE,然后安裝,暫且不表.
下載地址:https://www.java.com/en/download/manual.jsp
2.下載并安裝Jenkins,這里服務(wù)器是Windows的,所以最好下載Windows版本的,安裝好以后直接就以Windows服務(wù)的形式運(yùn)行了.
這個(gè)安裝過(guò)程也是非常的簡(jiǎn)單,網(wǎng)上教程很多.
3.安裝好Jenkins以后,根據(jù)需要我們安裝權(quán)限插件,給不用的賬號(hào)配置不通過(guò)的權(quán)限,(此步驟可選)
具體可參看此文章,說(shuō)的很詳細(xì):
http://www.dbjr.com.cn/article/161947.htm
4.最關(guān)鍵的一步來(lái)了,就是如何使用Jenkins來(lái)自動(dòng)部署我們的代碼.
這里主要分以下幾個(gè)小點(diǎn),下面我會(huì)貼出詳細(xì)的代碼.
1)獲取TFS中的最新源碼,這里我并沒(méi)有通過(guò)Jenkins去獲取代碼,而是通過(guò)tf命令去拉取代碼的.
這樣的好處就是,所有的Jenkins任務(wù)的源代碼,我都可以使用同一份,而不用每個(gè)任務(wù)單獨(dú)去拉取一份代碼.
2)拉取到代碼以后,自然就是通過(guò)命令來(lái)編譯我們的代碼,熟悉.net的朋友們應(yīng)該都知道,無(wú)非就那幾個(gè)命令了
3)代碼發(fā)布出來(lái)以后,自然就是要將代碼copy到我們的站點(diǎn)或者Windows服務(wù)下面去.
這一步也很簡(jiǎn)單,無(wú)非就是通過(guò)命令停止iis站點(diǎn)和應(yīng)用程序池;copy代碼;重啟啟動(dòng)對(duì)應(yīng)的站點(diǎn)即可
一套下來(lái),打完收工.
下面貼出幾個(gè)關(guān)鍵步驟的截圖:
1.Jenkins創(chuàng)建自由風(fēng)格的任務(wù)
2.其他什么都可以不選,只要我們使用powershell腳本,需要Jenkins支持powershell也需要安裝插件
3.點(diǎn)擊保存,一套搞定.點(diǎn)擊build now即可
ps:下面給出詳細(xì)的powershell腳本,非常簡(jiǎn)單這里就不詳述了,大家一看代碼就明白了
net stop Test1Job C:\Windows\System32\inetsrv\appcmd.exe stop site Test1.test.com C:\Windows\System32\inetsrv\appcmd.exe stop site Test1.api.test.com C:\Windows\System32\inetsrv\appcmd.exe stop apppool /apppool.name:"test1.test.com" C:\Windows\System32\inetsrv\appcmd.exe stop apppool /apppool.name:"Test1.api.test.com" dir "$PSScriptRoot\lib" -Filter "*.ps1" | foreach { . $_.fullName Write-Host "Import $($_.fullName)" } #1.獲取源碼 D:\test\tools\get_tfs.bat #2.編譯源碼 dotnet build D:\test\Source\MTools\Source-Promotion\Test.API.csproj -nowarn:msb3202,nu1503,cs1591 #--no-restore echo API OK dotnet build D:\test\Source\MTools\Source-Promotion\Test.Web.csproj -nowarn:msb3202,nu1503,cs1591 #--no-restore echo WEB OK dotnet build D:\test\Source\MTools\Source-Promotion\Test.Job.WindowsService.csproj -nowarn:msb3202,nu1503,cs1591 #--no-restore -v q echo job OK Sleep 20 #3.發(fā)布 CCopy D:\test\Source\MTools\Test.\Source-Promotion\Test.API\bin\Debug\netcoreapp2.1 D:\Test\Test1\api CCopy D:\test\Source\MTools\Test.\Source-Promotion\Test.Web\bin\Debug\netcoreapp2.1 D:\Test\Test1\web CCopy D:\test\Source\MTools\Test.\Source-Promotion\Test.Web\wwwroot D:\Test\Test1\web\wwwroot CCopy D:\test\Source\MTools\Test.\Source-Promotion\Test.Job.WindowsService\bin\Debug\netcoreapp2.1\win-x64 D:\Test\Test1\job net start Test1Job C:\Windows\System32\inetsrv\appcmd.exe start site Test1.test.com C:\Windows\System32\inetsrv\appcmd.exe start site Test1.api.test.com C:\Windows\System32\inetsrv\appcmd.exe start apppool /apppool.name:"test1.test.com" C:\Windows\System32\inetsrv\appcmd.exe start apppool /apppool.name:"Test1.api.test.com" Write-Host "success" Get-Date
function CCopy($folder_a_path,$folder_b_path) { if(!(test-path $folder_b_path)) { md $folder_b_path } #遍歷源文件夾下所有文件 $folders_a = gci $folder_a_path -Recurse foreach ($folder_a in $folders_a) { if($folder_a.fullname -like "*appsettings.json*") { continue } #通過(guò)替換的方式,取目標(biāo)文件的全路徑名稱(chēng) $b = $folder_a.fullname.replace($folder_a_path,$folder_b_path) #判斷目標(biāo)文件是否存在,如果存在則先判斷新舊 If (test-path $b) { #判斷目標(biāo)是否為目錄,如果是目錄則跳過(guò),如果不跳過(guò),則會(huì)創(chuàng)建一級(jí)空目錄 If (!((gi $b).PSIsContainer)) { #判斷目標(biāo)文件、源文件的新舊情況,如果目標(biāo)已存在文件的修改時(shí)間早于源文件,則重新拷貝覆蓋 If ((gci $b).lastwritetime -lt $folder_a.lastwritetime) { copy-item $folder_a.fullname $b -force } } } #如果目標(biāo)文件不存在,則直接拷貝 Else { copy-item $folder_a.fullname $b } } }
一套打完手工,大家有什么意見(jiàn)和建議,請(qǐng)?zhí)岢鰚
后續(xù)將進(jìn)一步寫(xiě)通過(guò)powershell將程序發(fā)布到其他服務(wù)器上,以及發(fā)布完成以后,郵件告知結(jié)果
待續(xù)...
總結(jié)
以上所述是小編給大家介紹的window下使用Jenkins來(lái)做自動(dòng)化部署的教程圖解,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
win2000 IIS支持shtml shtm的設(shè)置方法
win2000和win2003支持shtml的設(shè)置方法2008-01-01win7 iis7.5 亂碼 和 解析不了ASP的ADO連接數(shù)據(jù)庫(kù) 的解決方法
win7 iis7.5 亂碼 和 解析不了ASP的ADO連接數(shù)據(jù)庫(kù) 的解決方法2009-06-06Windows Server 2016 Standard Key激活密鑰序列號(hào)
這篇文章主要介紹了Windows Server 2016 Standard Key激活密鑰序列號(hào),非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-06-06windows server 2008 R2 管理員帳戶(hù)克隆方法(圖文)
大家知道,黑客入侵一臺(tái)服務(wù)器,一般都會(huì)先建立一個(gè)帳戶(hù),然后再設(shè)法將該帳戶(hù)進(jìn)行提權(quán),而且這個(gè)過(guò)程都是隱藏的,下面我們來(lái)試試如何將GUEST帳戶(hù)提權(quán)成管理員(administrators)帳戶(hù)2015-10-10Windows 安裝IIS出現(xiàn)的問(wèn)題(無(wú)法安裝IIS,提示“安裝程序無(wú)法復(fù)制文件IISApp.vbs”)
在重裝IIS6.0的時(shí)候會(huì)遇到“安裝程序無(wú)法復(fù)制文件IISApp.vbs”等一系列錯(cuò)誤......2009-03-03Windows Server 2016+Sql Server 2016搭建Alw
集群規(guī)劃節(jié)點(diǎn)加域重啟并用本地管理員賬戶(hù)重新登陸后,開(kāi)始安裝故障轉(zhuǎn)移集群功能(WSFC),并創(chuàng)建故障轉(zhuǎn)移集群2023-05-05Windows下搭建svn服務(wù)器簡(jiǎn)明教程
這篇文章主要介紹了Windows下搭建svn服務(wù)器簡(jiǎn)明教程,svn(subversion)是一款的版本管理工具,目前,大多數(shù)開(kāi)源軟件都使用svn作為代碼版本管理軟件,需要的朋友可以參考下2015-01-01windows上面安裝squid加速代理網(wǎng)站配置方法
有時(shí)候我們用window服務(wù)器,也想減輕服務(wù)器負(fù)擔(dān),那么就可以使用squid加速,下面是配置方法,需要的朋友可以參考喜愛(ài)2013-05-05Win2008 R2實(shí)現(xiàn)多用戶(hù)遠(yuǎn)程連接設(shè)置方法
這篇文章主要介紹了Win2008 R2實(shí)現(xiàn)多用戶(hù)遠(yuǎn)程連接設(shè)置方法,需要的朋友可以參考下2015-01-01