Windows服務器實現自動化部署-Jenkins


在引入自動化部署工具的時候,對比了jenkins和gitlab CI,jenkins有非常豐富的插件,配置起來方便。gitlab CI更傾向於腳本配置,當然jenkins也可以使用pipeline實現全腳本化配置。我們這里主要講述jenkins的自動化部署。基本組合是jenkins+git+msbuild,實現從代碼倉庫拉取、編譯、打包、部署、自動化測試。(.net core和framework4.6.1可以不依賴msbuild構建)

一、Jenkins概述

Jenkins是一個獨立的開源軟件項目,是基於Java開發的一種持續集成(CI)工具,用於監控持續重復的工作,旨在提供一個開放易用的軟件平台,使軟件的持續集成變成可能。前身是Hudson是一個可擴展的持續集成引擎。可用於自動化各種任務,如構建,測試和部署軟件。Jenkins可以通過本機系統包Docker安裝,甚至可以通過安裝Java Runtime Environment的任何機器獨立運行。通常與版本管理工具、構建工具結合使用。常用的版本控制工具有SVN、GIT,構建工具有Maven、Ant、Gradle、MSBuild。

1、CI/CD是什么

 CI(Continuous integration)是持續集成。持續集成強調開發人員提交了新代碼之后,立刻進行構建、測試。根據測試結果,我們可以確定新代碼和原有代碼能否正確地集成在一起。借用網絡圖片對CI加以理解。 

CD(Continuous Delivery, 中文意思持續交付)是在持續集成的基礎上,將集成后的代碼部署到更貼近真實運行環境(類生產環境)中。比如,我們完成單元測試后,可以把代碼部署到連接數據庫的Staging環境中更多的測試。如果代碼沒有問題,可以繼續手動部署到生產環境。下圖反應的是CI/CD 的大概工作模式。 

2、Jenkins特點:

  • 開源免費;

  • 跨平台,支持所有的平台;

  • master/slave支持分布式的build;

  • web形式的可視化的管理頁面;

  • 安裝配置超級簡單;

  • tips及時快速的幫助;

  • 已有的200多個插件

3、Jenkins的一個工作流程

互聯網軟件的開發和發布,已經形成了一套標准流程,假如把開發工作流程分為以下幾個階段:編碼 → 構建 → 集成 → 測試 → 交付 → 部署

二、Jenkins簡單安裝及配置(Windows環境)

Windows平台下,一般安裝方法有2種:安裝程序exe安裝和war包安裝,本文以war包安裝為例子


1、安裝Java環境

Jenkins是java開發,因此需先安裝對應jdk版本,注意版本兼容,因為我要下載Jenkins2.226版本,所以我們需要下載Java的版本是8到11,否則不兼容。

 

 下載成功后,雙擊安裝包,一直下一步即可,安裝完成之后需要配置環境變量,如下圖:

 

系統變量->新建,變量名JAVA_HOME,值對應的是JDK的安裝路徑。

 

 

 選擇名為Path的系統變量,點擊編輯,在變量值末尾加上 %JAVA_HOME%\bin

 

 檢驗是否配置成功:在命令提示符輸入:java -version

 

2、Jenkins簡單安裝

Jenkins下載地址:https://jenkins.io/download/ ,下載war包,命令行安裝。我這里下載的是Jenkins2.226版本,相應的Java環境需要安裝Java8~java11

 

下載完成后,進入命令行模式,直接定位到jenkins.war所在的目錄,然后執行下面的命令:

 

因為jenkins的war包自帶jetty服務器,所以啟動成功后,直接打開瀏覽器操作即可。輸入http://localhost:8080,點擊回車,出現以下畫面:

 

 

 耐心等幾分鍾,出現如下頁面

第一次使用jenkins時,為了安全考慮,會生成一串字符口令!進入對應的路徑,打開該文件,將對應的字符復制進輸入框內,點擊繼續按鈕,等待安裝成功。我們先不安裝插件,回頭自主安裝,操作如下:

 

  

 跳過插件安裝后,接下來就是創建一個管理員賬號了,界面如下:

  

輸入用戶名root,密碼qxh123,點擊保存並完成,jenkins就安裝成功了

 

3、Jenkins插件安裝

Jenkins配置成服務

Jenkins安裝成功后,可已經將它設置成Windows服務,不用每次通過命令提示符輸入命令啟動了。設置成服務的方法如下:

 

 按照提示就可以配置成功了,在Windows服務列表中就可以找到jenkins了

插件下載提速

下載插件太慢了,默認插件下載是從jenkins官網的地址下載,太慢了。將地址替換為以下地址

 https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

進入jenkins系統管理,進入插件管理,點擊高級,修改升級站點的地址

 

然后重啟jenkins服務。然后發現還是慢,該下載失敗的還是失敗。查看錯誤信息,發現下載地址仍然是官網地址。所以直接打開jenkins所在目錄:

首先找到default.json文件,一般在Jenkins服務update目錄下,替換內容:

替換 updates.jenkins-ci.org/download 為 mirrors.tuna.tsinghua.edu.cn/ jenkins
替換 updates.jenkins.io/download
 為 mirrors.tuna.tsinghua.edu.cn/jenkins

替換 www.google.com 為 www.baidu.com

然后找到Jenkins/hudson.model.UpdateCenter.xml文件

替換 url 為 https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

通過以上方法,我這邊就可以了,很快,看下效果:

如果還不行,就離線下載jenkins插件http://updates.jenkins-ci.org/download/plugins/,然后采用上傳的方式。 

Git插件安裝

代碼基本都是使用Git管理的,所以下載Git插件。進入“系統管理”->“插件管理”,安裝git插件。 

 

Msbuild安裝

其實我們可以在jenkins中下載msbuild插件的,但是考慮到不兼容性問題(比如,我們下載的msbuild版本不支持C#8.0語法,我們源代碼就沒辦法構建了,編譯經常出錯)。所以最徹底的方法就是安裝VS,然后在“系統管理”->“全局工具配置”中配置VS工具中的msbuild路徑。

jenkins漢化

折騰到現在,突然感覺英文版的還是有點不方便的,雖然能看懂大部分,但是有些細節的地方真沒心思去看。

安裝插件Localization:Chinese,然后重啟jenkins服務即可。效果如下:(哈哈,中英文參半,可以了)

 

 4、jenkins插件配置

進入插件管理-全局工具配置,如下git已經配置好了,就是我們下載的git插件

 

 然后配置MSbuild,我們這里使用VS2019上的MSbuild,避免代碼和msbuild的版本不兼容。一般msbuild.exe存在於目錄C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin中,配置結果如下:

 

三、使用Jenkins進行代碼測試、打包(未完待續)

如下圖所示,操作如下:

 

 

下圖是構建任務設置界面,可以看到上方的幾個選項"General", "源碼管理", "構建觸發器", "構建", "構建后操作"。下面逐一介紹。

 

 

General

General是構建任務的一些基本配置。
  • Discard old builds: 設置構建歷史的保存策略

    •   log Rotation:日志循環
    •   保持構建的天數:意思就是根據你所填寫的天數來保存構建記錄
    •   保持構建的最大個數:意思就是有幾條構建記錄就保存幾條
    •   發布包保留天數:例如我們發布的war包等的保存天數
    •   發布包最大保留#個構建 :例如我們發布了幾個war包,就保存幾靜默期:設置一個時間來間隔每次構建的間隔
  • 重試次數:這個和系統設置的一樣,拉取源碼重試的次數
  • 該項目的上游項目正在構建時阻止該項目構建:用於上游項目有關聯的構建策略
  • 該項目的下游項目正在構建時阻止該項目構建:用於下游項目有關聯的構建策略

  • 使用自定義的工作空間:使該項目獨立於系統的工作空間 

源碼管理

源碼管理就是配置你代碼的存放位置。 

 

 

Repository URL:倉庫地址,和平時使用git下載倉庫差不多的配置,我使用的是HTTPS的方式

Credentials:憑證。可以使用HTTPS方式的用戶名密碼,也可以是RSA文件。 但要通過后面的"ADD"按鈕添加憑證。

Branches to build:構建的分支。*/master表示master分支,也可以設置為其他分支。

源碼瀏覽器:你所使用的代碼倉庫管理工具,如github, gitlab.

構建觸發器

就是構建任務的觸發器。

 

 

觸發遠程構建(例如,使用腳本): 該選項會提供一個接口,可以用來在代碼層面觸發構建

Build after other projects are built: 該選項意思是"在其他projects構建后構建"。

Build periodically: 周期性的構建。很好理解,就是每隔一段時間進行構建。如下圖的設置,表示每隔30分鍾進行一次構建

 

Poll SCM:該選項是配合上面這個選項使用的。當代碼倉庫發生改動,jenkins並不知道。需要配置這個選項,周期性的去檢查代碼倉庫是否發生改動。 如下圖,十分鍾檢查一次

 

 

構建環境

構建環境就是構建之前的一些准備工作,如指定構建工具(在這里我使用MSBuild)。

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM