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