1. 程式人生 > >.Net Core自動化部署:Jenkins + GitLab

.Net Core自動化部署:Jenkins + GitLab

-c 加載 hat 並運行 就是 導入 有效 sudo .net core

項目進行微服化改造後系統發布就變得愈為重要,因為持續集成導致部署變得越來越頻繁,人工部署帶來的一些問題日漸凸顯,大家可能都有被系統部署線問題困擾過的經歷。

本篇我們將會使用Jenkins+Gitlab來實現程序的持續集成和自動化發布。

1.新建項目提交到GitLab

首先需要有一個GitLab倉庫,這個註冊一下就可以,具體流程就不寫了。

通過GitLab新建一個項目(Project):(沒有的話可以使用我這個來測試:https://git.lug.ustc.edu.cn/DeepmountainMoose/apitest.git)

技術分享圖片

拉取一下項目,添加一個.Net Core的測試Web項目WebTest,什麽都不需要添加和修改,然後提交到GitLab,結構如下:

技術分享圖片

2.安裝並運行Jenkins

這裏用的是阿裏雲Centos7,windows版本的下次補上,前提是需要安裝好java的jdk 1.8+,至於怎麽安裝大家可以百度(之前好像也寫過,再ELK那篇):

Jenkins官網最新穩定版: https://pkg.jenkins.io/redhat-stable/

(1)下載

sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo

(2)導入秘鑰

sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key

(3)安裝

yum install jenkins

(4)配置端口

Jenkins的默認端口是8080,如果要修改的話使用以下命令,我這裏修改為8090:

vim /etc/sysconfig/jenkins

jenkins_port:8090

(5)啟動Jenkins

java -jar /usr/lib/jenkins/jenkins.war --httpPort=8090

然後通過瀏覽器IP:Port查看Jenkins界面進行配置,首先需要輸入系統自動生產的密碼:

技術分享圖片

復制圖片上的路徑,輸入命令: cat 圖片上的路徑,如:cat /var/lib/jenkins/secrets/initialAdminPassword,復制密碼粘貼確認就可以,之後進入Jenkins選擇插件界面:

技術分享圖片

我這邊選擇默認的安裝推薦插件,確認後進入jenkins加載頁面,等待自動加載完成。

技術分享圖片

3.安裝.Net Core SDK 2.1

到這裏Jenkins的安裝就算完成了,我們等會再進行配置,因為要運行Net Core程序,所以需要安裝.Net Core SDK 2.1,如果已經安裝了的可以跳過。

(1)安裝rpm包

sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm

(2)更新軟件包

sudo yum -y update

(3)安裝SDK

sudo yum -y install dotnet-sdk-2.1

(4)校驗是否安裝成功

dotnet --version

4.配置Jenkins

(1)新建一個自由風格的軟件項目

技術分享圖片

(2)填寫源代碼Git地址,用於Jenkins拉取代碼:

技術分享圖片

構建觸發器,15分鐘拉取一次,設置的語法可以點擊右邊的符號查看:

技術分享圖片

然後對構建環節進行設置:

技術分享圖片

添加構建環節,執行.Ne Core的發布腳本:

dotnet restore
dotnet build
dotnet publish

技術分享圖片

技術分享圖片

到這裏Jenkins的配置就算完成了,可以點擊立即構建進行查看:

技術分享圖片

構建成功,點擊藍色按鈕查看詳細的構建日誌:

技術分享圖片

這個時候程序還沒有運行,只是構建了發布好的程序文件,我們需要復制標記出來的發布文件地址,然後手動運行,分別就是下面標記的兩個命令:

技術分享圖片

成功運行之後看到網站在5000端口,但是這個時候訪問發現無法成功,這是因為我們還沒有做端口映射,我們需要安裝下Nginx。

5.安裝Nginx

curl -o nginx.rpm http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

rpm -ivh nginx.rpm

yum install nginx

輸入:systemctl start nginx 來啟動nginx。

輸入:systemctl enable nginx 來設置nginx的開機啟動(linux宕機、重啟會自動運行nginx不需要連上去輸入命令)。

這個時候我們訪問服務器IP就會看到Nginx的默認頁:

技術分享圖片

然後我們需要配置Nginx的文件將5000端口映射到80端口,以便通過IP訪問我們的Net Core網站:

使用命令:vim /etc/nginx/conf.d/default.conf,添加 proxy_pass http://localhost:5000;

技術分享圖片

OK,配置修改完成,我們需要重啟Nginx讓它生效:sudo service nginx restart

然後這個時候訪問服務器IP就可以看到網站正常運行了:

技術分享圖片

到這裏我們已經成功了一半,這個時候需要檢驗一下自動發布是不是真的有效,修改項目,新增一個試圖頁:JenkinsTest

技術分享圖片

然後提交到Git,再一次通過Jenkins進行構建發布,成功之後手動運行下網站,然後訪問一下我們新添加的JenkinsTest頁面:

技術分享圖片

成功了,這表明我們已經可以通過這個來實現.NET Core程序的自動化構建發布了!!

但是,我們還需要進一步修改,主要是以下兩個方面:

1.工作中用於.Net Core部署的服務器通常是IIS,我們還需要進行Jenkins + GitLab + IIS的自動化流程構建

2.基於k8s的容器化部署越來越被各大企業接受,所以,我們需要考慮如果構建容器化的自動發布流程

之後會對朝著這兩個方向來進一步的修改。

.Net Core自動化部署:Jenkins + GitLab