- ??歡迎點(diǎn)贊 :?? 收藏 ?留言 ?? 如有錯(cuò)誤敬請指正,賜人玫瑰,手留余香!
- ??本文作者:由webmote 原創(chuàng)
- ??作者格言:新的征程,我們面對的不是技術(shù)而是人心,人心不可測,海水不可量,唯有技術(shù),才是深沉黑夜中的一座閃爍的燈塔 !
序言
當(dāng)一根根白發(fā)慢慢的爬到我的頭上的時(shí)候,我敲擊鍵盤的手,也沒有20年前那么麻利而迅速了。人誰能擺脫歲月的殺豬刀,而這把殺豬刀對碼農(nóng)來說,看起來格外的鋒利。
還記得第一次面對電腦時(shí)的興奮勁嗎?還記得第一次玩電腦游戲時(shí)的開心嗎?
是啊,時(shí)光飛逝,那個(gè)屬于你我他的青蔥歲月,終將離我們而去。而我們依然需要在滾滾紅塵中努力走好自己的路,作為碼農(nóng),依然需要雙手敲擊鍵盤,碼下多年后回頭不忍目睹的一行行代碼…
1. 那個(gè)自動化,你別走
每次看到同事們,辛苦的編譯和發(fā)布代碼,我都忍不住默默打開我的電腦,遠(yuǎn)程到服務(wù)器上,靜靜的安裝最古老而又最勤懇可靠的Jenkins。
多年之前,我已經(jīng)習(xí)慣了打開Jenkins的丑陋界面,打開我的項(xiàng)目,然后點(diǎn)擊Build。
而多年之后,我又一次面對Jenkins,這次竟然是閃閃發(fā)光的老頭。
時(shí)間到底做了什么?
是不是每次點(diǎn)擊Build的時(shí)候,我們都雙手合十,在心中靜靜的禱告,祈求上天憐憫,讓我們一次通過編譯和發(fā)布?
我不知道是什么原因,不過這也不是我們Care的點(diǎn)。
2. 怎么編譯.Net framework的項(xiàng)目?
- 編譯.net framework的項(xiàng)目,最簡單而直接的命令就是msbuild了。
- 那么怎么擁有msbuild呢?最簡單的方法就是安裝ms visual studio,應(yīng)該不會有更簡單而不易出錯(cuò)的辦法了吧!
- 怎么使用nuget?我的建議是直接下載nuget,放在系統(tǒng)盤里,這樣每個(gè)地方都可以調(diào)用它了。
- 怎么編譯具體的.net framework項(xiàng)目呢?讓我們先描述以下步驟吧,先使用nuget復(fù)原所有的項(xiàng)目包,然后調(diào)用msbuild進(jìn)行編譯,然后打包輸出,讓我們show下代碼。
# 以下都是powershell腳本
nuget.exe restore SCPlatformApiServer.sln
$msbuild="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Current\bin\msbuild.exe"
&$msbuild "abc.sln" /t:Build /verbosity:normal /p:Configuration=Release /nr:false /clp:ErrorsOnly
if ($LastExitCode -eq 0){
echo "build 通過!"
}
else{
echo '失??!'
exit 1
}
機(jī)智如我,使用LastExitCode
來判斷執(zhí)行是否成功。
那么,真正的問題來了,怎么編譯一個(gè).net framework 的web項(xiàng)目呢?
3. 怎么編譯.Net framework的Web項(xiàng)目?
這個(gè)問題,如果細(xì)細(xì)追究確實(shí)非常復(fù)雜。
web項(xiàng)目不僅僅包含編譯的bin下的目錄文件,它還包含網(wǎng)頁/js/資源/global.asax/webconfig等一系列的文件,我們采用上述方案編譯后,立即獲得了一個(gè)bin目錄。
除此之外,并沒有其他程序,如果直接分發(fā),則iis都拉不起來這個(gè)web程序。
這里,我們必須請求大神DeployOnBuild
,搜索微軟網(wǎng)站,可以找到類似的介紹。
當(dāng)然,它有個(gè)前提條件,請檢查你的web項(xiàng)目的項(xiàng)目文件,看看是否包含如下語句:
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v17.0\WebApplications\Microsoft.WebApplication.targets" Condition="true"/>
如果沒有,那么手工補(bǔ)上去也是可以的。
好了,有了這個(gè)發(fā)布的支撐,我們可以開心的玩了。
# 以下都是powershell腳本
nuget.exe restore abc.sln
$msbuild="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Current\bin\msbuild.exe"
&$msbuild ".abc/abc.csproj" /p:DeployOnBuild=true -restore /p:OutDir="$ENV:WORKSPACE/Bin" /verbosity:normal /p:Configuration=Release /nr:false /clp:ErrorsOnly
if ($LastExitCode -eq 0){
echo "build 通過!"
}
else{
echo '失??!'
exit 1
}
忽略里面的/p:OutDir參數(shù)吧,這個(gè)目錄只有dll,真不行。
然后看看我的打包腳本吧。
# 以下都是powershell腳本
$outdir="$ENV:WORKSPACE/Bin/_PublishedWebsites/SCPlatformApiServer/"
Compress-Archive -Path "$outdir" -DestinationPath "$ENV:WORKSPACE/abc$ENV:BUILD_NUMBER.zip"
Write-Output "修改和打包結(jié)束."
打包的內(nèi)容如下:
復(fù)制到網(wǎng)站目錄,即可運(yùn)行!
每當(dāng)你做成一件事情的時(shí)候,心中總會升起一股暖流,也許這就是我們努力的理由!
結(jié)語
Jenkins是個(gè)非常好的工具,不過自從用了gitlab的ci后,這個(gè)用途越來越少了。
??都看到這了,還在乎點(diǎn)個(gè)贊嗎?
??都點(diǎn)贊了,還在乎一個(gè)收藏嗎?文章來源:http://www.zghlxwxcb.cn/news/detail-518773.html
??都收藏了,還在乎一個(gè)評論嗎?文章來源地址http://www.zghlxwxcb.cn/news/detail-518773.html
到了這里,關(guān)于翻過那座山——Jenkins編譯發(fā)布web程序(.net framework web application)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!