目錄html
鑑於網上不少資料一上來直接就開幹了,這裏我先把這幾天所經歷的理解化成一張圖,以便後續內容更加容易理解。java
由上圖能夠清晰的看到,只要咱們再本地的Idea提交代碼到GitHub遠程倉庫,隨後Github觸發一個web hook(簡單來講就是一個Http請求)。隨後Jenkins接收到這個請求以後,開始根據咱們預先設置好的方式構建部署包。而後經過ssh推送到應用服務器部署(部署方式不少樣,能夠根據我的需求部署)。linux
因爲jenkins服務器是java語言開發的應用,這裏須要先安裝jdk,而我也想統一jdk的版本,這裏選擇使用Oracle提供的最新版jdk11。下載推薦使用迅雷下載,比通常的瀏覽器要快一點。git
點擊下載地址下載,這裏使用的是jdk-11.0.6_linux-x64_bin.rpm版本,適合centos系統的安裝。上傳到你的jenkins服務器,使用安裝命令完成。github
rpm -ih jdk-11.0.6_linux-x64_bin.rpm
web
點擊下載地址下載安裝包。一樣使用如下安裝命令完成安裝。shell
rpm -ih jenkins-2.204.2-1.1.noarch.rpm
apache
啓動jenkins。編程
systemctl start jenkins
json
提示:使用jdk11可能會出現以下的提示:
AWT is not properly configured on this server. Perhaps you need to run your container with "-Djava.awt.headless=true"
實際上這個選項已經啓用了,只是jdk11把awt的組件去除了,因此須要安裝這一部分組件中。執行一下命令便可:
yum install java-1.7.0-openjdk urw-fonts
因爲個人項目是基於Maven的SpringBoot項目,因此須要以Maven構建一個部署包,這裏順便安裝一下。
點擊下載地址下載。
解壓壓縮包,我把maven放在目錄/opt/maven中,具體的環境變量設計請自行百度,這裏的安裝目錄和後續配置有關,因此我提了一下。
jenkins默認在8080端口部署,因此打開瀏覽器頁面就能進入頁面。進入頁面後須要輸入一個原始的admin密碼,根據提示找到密碼輸入,後面能夠本身設置一個賬號密碼。
接下來就會有一個推薦插件安裝的頁面。我我的推薦直接跳過這個步驟,由於在內地的網絡環境安裝會很是的卡,同時頗有可能會把程序給卡崩潰,這個後面會提到解決方法。
以後進入就能夠看到以下界面。
進入Manage Jenkins => Manage Plugins =>Available 查找本身想要的插件。這裏推薦幾款此次教程須要的插件:
中文翻譯包,想看英文的能夠跳過。
GitHub相關。
Maven相關。
Maven生成的Jar包,經過這個插件進行推送,並執行應用服務器的腳本。
更改插件鏡像的地址,在Advance選項下面,Update Site這裏填寫相應的URL地址。這個須要自行百度查找哪一個提供的插件鏡像較快,我的推薦一個:http://mirror.xmission.com/jenkins/updates/update-center.json。這個同時須要一點耐心去完成,由於在內地的網絡不管你用哪一個都不會快。而我用香港的服務器都是5s以內就能完成。
這個按照提示去找對應的依賴插件便可,同時有的插件完成安裝後須要重啓jenkins,因此準備時間會比較繁瑣一點。
這裏以jdk爲例,其它的git、和maven以一樣的方式處理,若是沒安裝,自行百度安裝。
以下圖所示,取消勾選自動安裝,而後JAVA_HOME就是你Jenkins服務器的JAVA_HOME路徑,可使用which java
這個命令查找路徑。
點擊add server添加一個遠程的應用服務器。個人以下圖所示
name:一個名字,本身隨意填寫。
HostName:應用服務器地址,能夠是ip地址,也能夠是一個域名。
Username:應用服務器的用戶,這裏生產環境最好不用root,我就隨意了。
Remote Directory:應用服務器的訪問目錄,請肯定你的用戶有該目錄的操做權限。
Password:勾選上面的選擇框,而後輸入你的密碼便可。固然這裏也有其它驗證方式, 具體本身找一下。
拉到底下,還有一個測試按鈕,能夠測試本身的配置是否成功。
點擊 :
輸入你的GitHub賬號密碼,這裏是用於後面的GitHub倉庫代碼的拉取,後面其它須要用到憑證的地方也能夠以一樣的方式添加。
jenkins的配置已經初步完成,我本文的例子是使用Maven來構建的SpringBoot項目。因此接下來先建立一個Maven項目。輸入名字便可建立完成,接下來就是項目的配置了。
General配置能夠不配置,但這裏我選擇勾選上丟棄舊的構建,防止構建的jar包擠滿硬盤空間。詳情如圖所示。
這裏我選用的是Git管理,配置以下所示:
顧名思義,jenkins會根據這裏的配置選擇在何時構建的你項目。這裏你能夠先選擇跳過,先本身手動構建,後續我會講述利用GitHub的web hook觸發構建。
如上圖所示,這裏要肯定的是你的pom.xml的位置、執行的命令。另外,能夠在高級選項那裏跳過測試環節,不過這不是一種推薦的作法,測試仍是很重要的。
jenkins在構建完成後,會根據這裏的配置執行相關操做。就如一開始的那張圖片同樣,這裏的流程是:把jar包發送到應用服務器,執行啓動腳本
服務器咱們以前已經配置好了,如今解釋一下Transfer裏面的字段含義。
Source files:要發送的文件,這裏咱們只須要把生成的jar發送過去便可。路徑匹配和能夠參考linux命令。
Remove prefix:目前還沒弄清具體含義。
Remote directory:將文件放在應用服務器的該目錄下,須要注意的是:這裏的路徑是基於前面的ssh server路徑配置的。例如:前面的路徑配置了/usr/local/,而這裏配置了project/temp/。那麼文件的完整路徑應該是:/usr/local/project/temp/*.jar
Exec command:應用服務器中的啓動腳本路徑,能夠根據本身的喜愛放置。同時我不太懂shell編程,寫了一個參考版的啓動腳本,看看就好。
#!/bin/sh PROJECT_DIR="/usr/local/project/" #刪除當前已啓動的舊項目,只適用於只有一個java項目的時候 proName="java" echo "${proName}" PID=$(ps -e|grep ${proName}|awk '{printf $1}') echo "$PID" if [ $? -eq 0 ]; then echo "process id:$PID" else echo "process ${proName} not exit" exit fi kill $PID #刪除已存在與project目錄的jar包 rm -f ${PROJECT_DIR}counsel*.jar #複製新的jar到當前路徑 mv ${PROJECT_DIR}temp/counsel*.jar ${PROJECT_DIR} #啓動新的項目 nohup java -jar ${PROJECT_DIR}counsel*.jar >${PROJECT_DIR}output
配置完成,點擊保存便可,能夠嘗試先手動構建一次,若是成功了,就能夠繼續接下來的自動化構建。
自動化構建的文章下次再更新。