溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Jenkins怎么編譯.NET?Core和.NET?Framework項(xiàng)目并遠(yuǎn)程部署到IIS

發(fā)布時(shí)間:2022-04-02 10:42:27 來(lái)源:億速云 閱讀:400 作者:iii 欄目:開(kāi)發(fā)技術(shù)

本文小編為大家詳細(xì)介紹“Jenkins怎么編譯.NET Core和.NET Framework項(xiàng)目并遠(yuǎn)程部署到IIS”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“Jenkins怎么編譯.NET Core和.NET Framework項(xiàng)目并遠(yuǎn)程部署到IIS”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來(lái)學(xué)習(xí)新知識(shí)吧。

    Windows

    我們先在 Windows 上安裝好相應(yīng)的環(huán)境。

    Jenkins 依賴于 JDK 11,請(qǐng)自行查找方法安裝。

    Jenkins 的安裝目錄默認(rèn)為:C:\Windows\System32\config\systemprofile\AppData\Local\Jenkins.jenkins,密碼/密鑰一般在其目錄下的 secret-file 文件。

    安裝 Jenkins 后,打開(kāi) 8080 端口訪問(wèn) Jenkins,然后根據(jù) Linux下使用Jenkins自動(dòng)化構(gòu)建.NET Core應(yīng)用_安裝插件 一節(jié),把插件安裝好,再額外安裝一個(gè) powershell 插件。

    安裝 Git

    接著,在 Windows 服務(wù)器中,將 Git 安裝好,一般 Git 的安裝目錄為 C:\Program Files\Git。

    然后添加下面兩個(gè) Git 相關(guān)的目錄到系統(tǒng)環(huán)境變量中。

    C:\Program Files\Git\cmd
    C:\Program Files\Git\usr\bin

    如不配置  C:\Program Files\Git\usr\bin 到環(huán)境變量,會(huì)出現(xiàn) nohup 錯(cuò)誤,Jenkins 依賴 nohup 命令。

    WebDeploy

    WebDeploy 是一個(gè) IIS 遠(yuǎn)程部署工具,通過(guò) WebDeploy 我們可以很方便地打包應(yīng)用遠(yuǎn)程部署到 IIS 中,而不需要手動(dòng)重啟、更替網(wǎng)站文件、重啟程序池等。

    安裝完成后,其程序默認(rèn)安裝目錄為:

    C:\Program Files\IIS\Microsoft Web Deploy V3

    請(qǐng)?zhí)砑哟四夸浀较到y(tǒng)環(huán)境變量中。

    同時(shí),在要被遠(yuǎn)程部署的服務(wù)器中,也安裝 WebDeploy。

    Windows 從節(jié)點(diǎn)

    如果你有一臺(tái) Jenkins Master 服務(wù)器,然后再添加 Windows Jenkins Node,做主從 Jenkins,那么可以按照下面的方法將 Windows 加入到 Linux 節(jié)點(diǎn)中。

    如果你只部署 Windows ,那么 Windows 上的的 Jenkins 就是 Master,可以跳過(guò)此步。

    打開(kāi) Master Jenkins 的 Web 界面,在左側(cè)菜單導(dǎo)航中打開(kāi) Manage Jenkins,然后在 System Configuration 中,選擇 Manage Nodes and Clouds。

    Jenkins怎么編譯.NET?Core和.NET?Framework項(xiàng)目并遠(yuǎn)程部署到IIS

    然后添加新的節(jié)點(diǎn) “New Node”。

    節(jié)點(diǎn)名稱可隨意,在接下來(lái)要求填寫的 Label 中,需要填寫 “windows” ,當(dāng)然填寫其它標(biāo)識(shí)也行,但是一般 Label 用來(lái)標(biāo)識(shí)系統(tǒng)特性的,另外也會(huì)要求填寫構(gòu)建目錄,這是用于存放 Jenkins 工作時(shí)的文件,例如拉取代碼、執(zhí)行命令等,都會(huì)在這個(gè)目錄下操作。

    Jenkins怎么編譯.NET?Core和.NET?Framework項(xiàng)目并遠(yuǎn)程部署到IIS

    點(diǎn)擊藍(lán)色字體的 agent.jar,可以下載 java 包。

    Jenkins怎么編譯.NET?Core和.NET?Framework項(xiàng)目并遠(yuǎn)程部署到IIS

    將 agent.jar 包放到 Jenkins 所在的 Windows 中,然后按照提示的命令,啟動(dòng) agent.jar。

    就是把 agent.jar 放到目錄中,然后打開(kāi) powershell 或者 cmd,復(fù)制上面的 Java -jar agent.jar -jnlpUrl ..... 命令,直接執(zhí)行就行。

    接著,在 Jenkins 界面,可以看到另一臺(tái) Windows 從節(jié)點(diǎn)已經(jīng)加了上去。

    Jenkins怎么編譯.NET?Core和.NET?Framework項(xiàng)目并遠(yuǎn)程部署到IIS

    .NET Core

    這一小節(jié),介紹如何構(gòu)建、遠(yuǎn)程部署 .NET Core 應(yīng)用到 IIS 中。

    對(duì)于 .NET Core 應(yīng)用,其過(guò)程比較簡(jiǎn)單,只需要安裝 .NET Core SDK 即可,無(wú)需再額外操作。

    處理 IIS

    在你要部署應(yīng)用的那臺(tái) Windows 服務(wù)器 上,打開(kāi) IIS ,點(diǎn)擊 ”應(yīng)用程序池“,然后添加一個(gè)新的。

    Jenkins怎么編譯.NET?Core和.NET?Framework項(xiàng)目并遠(yuǎn)程部署到IIS

    接著,添加一個(gè)網(wǎng)站。

    Jenkins怎么編譯.NET?Core和.NET?Framework項(xiàng)目并遠(yuǎn)程部署到IIS

    然后開(kāi)始添加一個(gè)新用戶,點(diǎn)擊主機(jī)名稱,然后點(diǎn)擊 “IIS 管理器用戶”,然后添加一個(gè)用戶。

    Jenkins怎么編譯.NET?Core和.NET?Framework項(xiàng)目并遠(yuǎn)程部署到IIS

    Jenkins怎么編譯.NET?Core和.NET?Framework項(xiàng)目并遠(yuǎn)程部署到IIS

    然后為網(wǎng)站啟用 WebDeploy 部署。

    Jenkins怎么編譯.NET?Core和.NET?Framework項(xiàng)目并遠(yuǎn)程部署到IIS

    Jenkins怎么編譯.NET?Core和.NET?Framework項(xiàng)目并遠(yuǎn)程部署到IIS

    處理項(xiàng)目 Jenkinsfile

    筆者已經(jīng)上傳了 Demo 項(xiàng)目已經(jīng) Jenkinsfile 文件,讀者直接 fork 項(xiàng)目即可,示例項(xiàng)目在 coreiis 分支中。

    https://github.com/whuanle/DotNetCoreJenkinsDemo/tree/coreiis

    然后,下載源碼,修改一下 Jenkinsfile 文件。

            // IIS 配置,遠(yuǎn)程發(fā)布的變量
            IISTMP     =   'C:/webdemo_tmp'                            // 用于打包發(fā)布的臨時(shí)目錄
            IISAPP     =   'jenkinsdemo.com'                           // 網(wǎng)站名稱
            IISADDR    =   'https://192.168.0.66:8172/msdeploy.axd'    // WebDeploy 的地址
            IISUSER    =   'jenkinesdemo'                         // 用于登錄到 IIS 的賬號(hào)密碼
            IISADMIN   =   'jenkinesdemo'

    按照筆者的 demo,讀者只需要修改一下 IISADDR 中的 IP 和 用戶名或密碼即可。

    接著,使用 Jenkins ,添加流水線部署即可。這里不再贅述 Jenkins 上的新建流程,讀者可以參考筆者的另一篇文章:

    Linux下使用Jenkins自動(dòng)化構(gòu)建.NET Core應(yīng)用_構(gòu)建流水線

    .NET Framework

    為了能夠編譯 .NET Framework 應(yīng)用,我們需要搭建起 .NET Framework 應(yīng)用的編譯環(huán)境,由于 .NET Framework 嚴(yán)重依賴 Vistual Studio,如果脫離 VS 環(huán)境,則需要安裝很多環(huán)境工具,才能使用命令編譯程序,比較麻煩,讀者需要耐心處理。

    示例項(xiàng)目筆者已經(jīng)上傳到 https://github.com/whuanle/DotNetCoreJenkinsDemo/tree/fxiis 中。

    安裝環(huán)境

    .NET Framework SDK

    .NET Framework 包提供編譯、運(yùn)行 .NET 程序的環(huán)境。

    安裝 .NET Framework 框架,其版本不定,按照要編譯的項(xiàng)目其需要的版本為準(zhǔn),可安裝多個(gè)版本。

    例如 .NET Framework 4.6.1 和 .NET Framework 4.6.1 Developer Pack 。

    下載地址:https://dotnet.microsoft.com/download/dotnet-framework

    MSBuild

    MSBuild 是一個(gè) .NET 程序的編譯工具,可以在脫離 VS 環(huán)境時(shí)使用。

    如果要編譯 .NET Framewrok 項(xiàng)目,例如 4.6,請(qǐng)使用 MSBuild 14(對(duì)應(yīng) VS 2015),一般文件名稱為 BuildTools_Full_14.exe。

    下載地址:

    https://www.microsoft.com/en-US/download/details.aspx?id=48159

    https://github.com/EWSoftware/SHFB/releases

    安裝 MSBuild 后其目錄位置為:

    C:\Program Files (x86)\MSBuild\14.0\Bin

    請(qǐng)將其目錄路徑添加系統(tǒng)環(huán)境變量中。

    Nuget

    nuget 用于還原項(xiàng)目的依賴,對(duì)于 .NET Framework 項(xiàng)目,nuget 的版本不能為 5.0 以上,建議使用 4.5 版本左右,否則會(huì)有兼容問(wèn)題!

    安裝完畢后,nuget 程序目錄為:

    C:\Program Files\nuget

    請(qǐng)?zhí)砑幽夸浀较到y(tǒng)環(huán)境變量中。

    安裝各種需要的工具后,環(huán)境變量一共需要添加以下項(xiàng):

    C:\Program Files (x86)\MSBuild\14.0\Bin
    C:\Program Files\Git\cmd
    C:\Program Files\nuget
    C:\Program Files\Git\usr\bin
    C:\Program Files\IIS\Microsoft Web Deploy V3

    請(qǐng)仔細(xì)檢查是否有遺留項(xiàng)。

    配置項(xiàng)目

    要脫離 VS 環(huán)境,自動(dòng)化構(gòu)建 .NET Framework 應(yīng)用,需要處理的配置文件和環(huán)境很多,我們需要修改一下項(xiàng)目。在本節(jié)中,將介紹如何配置 .NET Framework 自動(dòng)化流水線的構(gòu)建,使用 Jenkins 配置流水線,編寫 Jenkins 腳本等。

    一般一個(gè)解決方案中,有一個(gè)是需要發(fā)布的主程序(主要為 Web 應(yīng)用),請(qǐng)為需要發(fā)布的 Web 項(xiàng)目,添加 Nuget 引用,搜索 MSBuild.Microsoft.VisualStudio.Web.targets 包,添加引用到項(xiàng)目中。

    因?yàn)?.NET Framework 項(xiàng)目需要依賴 Vistual Studio 發(fā)布,如果不使用 VS 發(fā)布,會(huì)出現(xiàn)很多問(wèn)題,為了脫離 VS 環(huán)境,有人封裝了一個(gè)完整的 targets 文件,指示 MSBuild 如何編譯此此程序。

    對(duì)于需要發(fā)布的 Web 項(xiàng)目需要定義 Web 發(fā)布屬性,自動(dòng)化構(gòu)建中,依賴這些提前配置的屬性,這些屬性會(huì)生成一個(gè) .pubxml 文件,隨源代碼一起上傳到倉(cāng)庫(kù)。

    Jenkins怎么編譯.NET?Core和.NET?Framework項(xiàng)目并遠(yuǎn)程部署到IIS

    然后點(diǎn)擊發(fā)布,手動(dòng)發(fā)布一次到一個(gè)目錄。

    Jenkins怎么編譯.NET?Core和.NET?Framework項(xiàng)目并遠(yuǎn)程部署到IIS

    保存設(shè)置后,在項(xiàng)目的 Properties\PublishProfiles 目錄,可以找到 FolderProfile.pubxml 文件,其中有一行 PublishUrl 屬性,為網(wǎng)站發(fā)布時(shí)的輸出目錄。

    <PublishUrl>C:\test</PublishUrl>

    此目錄配置會(huì)影響到自動(dòng)化構(gòu)建時(shí)的輸出,編譯時(shí),生成的文件會(huì)輸出到這個(gè)目錄中,請(qǐng)確保在 Windows Jenkins 中,存儲(chǔ)此盤符!

    然后直接在 Jenkins Web 上,操作即可。

    Jenkins怎么編譯.NET?Core和.NET?Framework項(xiàng)目并遠(yuǎn)程部署到IIS

    前后端分類方案

    當(dāng)我們?yōu)?.NET Core / .NET Framework 項(xiàng)目創(chuàng)建網(wǎng)站完畢,此時(shí)程序跟前端是一起的,打包發(fā)布不方便。

    我們可以為前端項(xiàng)目新建一個(gè)無(wú)用的網(wǎng)站。

    Jenkins怎么編譯.NET?Core和.NET?Framework項(xiàng)目并遠(yuǎn)程部署到IIS

    我可以編寫流水線腳本,將前端文件通過(guò) WebDeploy 自動(dòng)打包發(fā)布到此網(wǎng)站中。

    接著,在后端網(wǎng)站中,添加一個(gè)虛擬目錄,目錄跟前端網(wǎng)站的目錄一致。

    Jenkins怎么編譯.NET?Core和.NET?Framework項(xiàng)目并遠(yuǎn)程部署到IIS

    這樣,前后端都可以分開(kāi)部署,而在后端網(wǎng)站后,可以直接讀取前端文件。

    讀到這里,這篇“Jenkins怎么編譯.NET Core和.NET Framework項(xiàng)目并遠(yuǎn)程部署到IIS”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識(shí)點(diǎn)還需要大家自己動(dòng)手實(shí)踐使用過(guò)才能領(lǐng)會(huì),如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注億速云行業(yè)資訊頻道。

    向AI問(wèn)一下細(xì)節(jié)

    免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

    AI