.Net Core自動化部署系列(一):Jenkins + GitLab

項目進行微服化改造後系統發佈就變得愈爲重要,由於持續集成致使部署變得愈來愈頻繁,人工部署帶來的一些問題日漸凸顯,你們可能都有被系統部署線問題困擾過的經歷。java

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

1.新建項目提交到GitLabnginx

首先須要有一個GitLab倉庫,這個註冊一下就能夠,具體流程就不寫了。git

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

拉取一下項目,添加一個.Net Core的測試Web項目WebTest,什麼都不須要添加和修改,而後提交到GitLab,結構以下:windows

 

2.安裝並運行Jenkinscentos

這裏用的是阿里雲Centos7,前提是須要安裝好java的jdk 1.8+,至於怎麼安裝你們能夠百度(以前好像也寫過,再ELK那篇):api

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

windows下載:https://jenkins.io/download/服務器

(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,若是要修改的話使用如下命令,我這裏修改成8070:

vim /etc/sysconfig/jenkins

jenkins_port:8070

(5)啓動Jenkins

nohup  java -jar /usr/lib/jenkins/jenkins.war --httpPort=8070 &

 

而後經過瀏覽器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程序的自動化構建發佈了!!

 

 

Windos下咱們須要發佈到IIS部署,只須要更改下執行腳本,選擇Windows下批處理命令:

 

 

cd "%WORKSPACE%\NetCoreWebTest"
dotnet restore
dotnet build
dotnet publish -o D:\PublishFile\JenkinsPublish

 

%WORKSPACE%是Jenkins的環境變量就是工做文件區域,既咱們新建的工程名,下面意思是將項目發佈到指定的IIS文件夾下。

 

構建後查看IIS發佈也成功了。 

 

可是,咱們還須要進一步修改,主要是如下兩個方面:

1.工做中用於.Net Core部署的一般是多臺IIS,並且要支持回滾和包括金絲雀發佈在內的多種發佈模式。

2.基於k8s的容器化部署愈來愈被各大企業接受,因此,咱們須要考慮若是構建容器化的自動發佈流程

 

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

相關文章
相關標籤/搜索