.Net Core自動化部署:Jenkins + GitLab
項目進行微服化改造後系統發布就變得愈為重要,因為持續集成導致部署變得越來越頻繁,人工部署帶來的一些問題日漸凸顯,大家可能都有被系統部署線問題困擾過的經歷。
本篇我們將會使用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