git log 获取构建时间_Docker 运行 Jenkins 自动化构建 .NET Core 项目
(給DotNet加星標,提升.Net技能)
轉(zhuǎn)自:ZKEASOFTzkea.net/codesnippet目標
當代碼提交到GitHub后,自動生成構(gòu)建項目并部署到服務(wù)器。
接下來介紹一下如何在容器中運行Jenkins,并自動化構(gòu)建GitHub上的項目,使用自動化構(gòu)建來解放你的雙手。
前置條件
一臺已經(jīng)安裝了Docker的Ubuntu服務(wù)器,有公網(wǎng)IP并可通過IP或者域名訪問。因為GitHub無法訪問本地服務(wù)器,所以不能觸發(fā)構(gòu)建,只能手動觸發(fā)構(gòu)建。
這里我們選擇使用基于.Net Core開發(fā)的紙殼CMS作為演示例子,一步一步搭建自動構(gòu)建。
當然,一樣可以不使用Docker在Windows、Linux上安裝Jenkins來達到同樣的目的。
Dockerfile
首先創(chuàng)建一個Dockerfile文件,文件名就是Dockerfile,然后輸入以下內(nèi)容:
FROM jenkins/jenkins:ltsUSER root
WORKDIR /dotnet
RUN wget -O dotnet.tar.gz https://download.visualstudio.microsoft.com/download/pr/72ce4d40-9063-4a2e-a962-0bf2574f75d1/5463bb92cff4f9c76935838d1efbc757/dotnet-sdk-3.0.100-preview6-012264-linux-x64.tar.gz
RUN tar zxf dotnet.tar.gz -C ./
RUN rm -rf dotnet.tar.gz
ENV PATH="${PATH}:/dotnet:/var/jenkins_home/.dotnet/tools"
ENV DOTNET_ROOT="/dotnet"
RUN apt update -y
RUN apt install icu-devtools vim zip unzip -y
RUN usermod -a -G root jenkins
USER jenkins
簡單說明一下這個Dockerfile里面都做了什么事情:
這個Docker鏡像基于jenkins
設(shè)置當前用戶為root,因為后面安裝需要使用root
設(shè)置當前工作目錄為dotnet
下載dotnet SDK包,保存為dotnet.tar.gz。這里要注意下載正確版本的SDK,可前往微軟官方網(wǎng)站獲取下載鏈接:https://dotnet.microsoft.com/download
解壓dotnet SDK到當前目錄,即/dotnet目錄
刪除dotnet SDK包
把dotnet目錄和dotnet tools目錄添加到環(huán)境變量PATH,這樣就可以使用dotnet命令了
設(shè)置DOTNET_ROOT變量
更新源
安裝一些必需的,常用的工具包,其中icu-devtools是運行dotnet需要的
修改jenkins用戶到root附加組
設(shè)置當前用戶為jenkins
到這里,Dockerfile就定義完成了。當你的項目升級到更新版本的.Net Core時,只需要進入容器下載對應(yīng)的.Net Core SDK就可以了。
生成Docker鏡像
接下來使用以下命令來生成Docker鏡像,鏡像名為jenkins,Tag是dotnet:
docker build -t jenkins:dotnet生成這個鏡像要花數(shù)分鐘的時間,請耐心等待:
生成完成以后,可以使用docker images命令查看所有鏡像
運行Jenkins實例
使用docker run命令來運行一個jenkins實例,注意映射端口,右邊的8080,50000是Jenkin的默認端口,左邊的是Docker宿主機的端口,可以按情況修改:
docker --name運行命令以后會jenkins會自動初始化,當控制臺上出現(xiàn)Jenkins is fully up and running的時候就初始化完成了,同時可以看到上面有一個admin的初始化密碼,把它復制下來,在第一次使用Jenkins的時候要使用到這個密碼。
打開瀏覽器,在地址欄中輸入服務(wù)器的IP地址和端口號訪問jenkins:
然后將剛才復制下來的密碼,粘貼到密碼輸入框中,然后點擊繼續(xù):
然后點擊選擇安裝插件,因為除了默認推薦的插件,我們還需要安裝一些其它插件:
除了推薦的插件外,我們還需要安裝GitHub的插件,Publish Over SSH插件,這個插件可以將你發(fā)布好的程序通過SSH復制到你的服務(wù)器上
然后點擊安裝,等待安裝完成:
插件安裝完成以后,輸入初始化用戶名和密碼等信息后,就可以開始使用Jenkins了:
接下來的使用默認信息一直點下一步就可以了。
添加項目
點擊添加新作業(yè),創(chuàng)建一個項目:
輸入名稱,選擇Freestyle project,然后點擊ok創(chuàng)建:
勾選GitHub project,然后輸入項目地址:
在源碼管理里面選擇git,然后輸入git地址:
有了源代碼之后,就可以添加生成操作了。在生成這里添加一個執(zhí)行shell的步驟,我們將在這里使用dotnet的publish命令來發(fā)布項目
然后就可以在這里輸入dotnet publish命令了:
因為我們這里演示使用的是紙殼CMS,有點不一樣,需要使用官方的發(fā)布工具,所以要輸入以下命令:
由于ZKEACMS.Publisher沒有在容器中安裝,所以發(fā)布會報錯,這里我們還需要進入窗口安裝一下發(fā)布工具,首先進入容器:
docker exec -it jenkins bash然后使用以下命令來安裝發(fā)布工具:?
dotnet tool install -g ZKEACMS.Publisher點擊保存。到這里,添加項目,并且發(fā)布項目就完成了,點擊立即生成來嘗試生成一下:
Build History里面可以看到所有的構(gòu)建歷史記錄,點擊進度條,可以查看當前生成任務(wù)的控制臺輸出:
?
到這里,生成、發(fā)布已經(jīng)可以了,但是提交代碼后不會自動觸發(fā),我們需要在GitHub上添加一個Webhook,來自動觸發(fā)生成、發(fā)布。
添加GitHub Webhook
首先,開啟項目的GitHub觸發(fā)事件,點擊配置項目:
然后勾選生成事件中的GitHub hook trigger
接下來要在GitHub上設(shè)置項目的Webhook,點擊項目設(shè)置下的Webhooks來添加
注意jenkins的github插件設(shè)定的默認的GitHub的Webhook地址是{IP}:端口/github-webhook/,所以在Payload URL輸入以下URL即可,如果有域名可以使用域名:
在添加完后,GitHub會先嘗試一送一個請求,這時候就可以到Jenkins看一下是否會生成了。如果沒有生成,可以通過查看log來了解原因:
部署到服務(wù)器
現(xiàn)在自動觸發(fā)構(gòu)建已經(jīng)設(shè)置好了,就剩下最后一步,將發(fā)布好的程序推送到服務(wù)器。
首先,要在Jenkins里面配置服務(wù)器的相關(guān)信息,點擊Manage Jenkins:
選擇Configure System:
然后輸入服務(wù)器的相關(guān)信息,Jenkins將會使用這些信息來遠程連接你的服務(wù)器:
注意:devops目錄須要在目錄服務(wù)器上存在。
添加完服務(wù)器后,再次編輯項目,添加一個生成步驟,該步驟就是發(fā)送文件:
輸入要復制的文件目錄,和在復制完成之后要執(zhí)行的命令,文件復制完成以后,我們重新啟動一下程序的服務(wù):
Source files:要復制的文件
Remove prefix:如果不輸入,目標服務(wù)器的devops目錄(在配置SSH服務(wù)器的時候指定的目錄)下會創(chuàng)建和Sourece files一樣的目錄結(jié)構(gòu)
Remote directory:目標服務(wù)器下devops目錄下的子目錄
Exec command:在文件復制完成后將會在遠程服務(wù)器上執(zhí)行該命令
到這里整個自動構(gòu)建環(huán)境就搭配完成了。
推薦閱讀??點擊標題可跳轉(zhuǎn)ASP.NET Core 3.x 授權(quán)中的概念一文帶你了解C# DLR 的世界瀏覽器中的.NET Core Blazor WebAssembly看完本文有收獲?請轉(zhuǎn)發(fā)分享給更多人
關(guān)注「DotNet」加星標,提升.Net技能?
好文章,我在看??
總結(jié)
以上是生活随笔為你收集整理的git log 获取构建时间_Docker 运行 Jenkins 自动化构建 .NET Core 项目的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 单片机中灯泡显示miss_单片机实例分享
- 下一篇: 数据可视化模板_10分钟,做一份数据可视