1. 程式人生 > >三十二張圖告訴你,Jenkins構建Spring Boot 有多簡單~

三十二張圖告訴你,Jenkins構建Spring Boot 有多簡單~

持續原創輸出,點選上方藍字關注我

目錄

  • 前言
  • 如何安裝Jenkins?
    • 環境準備
    • 開始安裝Jenkins
  • 初始化配置
    • 訪問首頁
    • 輸入管理員密碼
    • 安裝外掛
    • 建立管理員
    • 例項配置
    • 配置完成
  • 構建Spring Boot 專案
    • 配置JDK、maven、Git環境
    • 安裝外掛
    • 新增 SSH Server
    • 新增憑據
    • 新建Maven專案
    • 構建任務
  • 如何構建託管在GitLab的專案?
    • 安裝外掛
    • 新增GitLab API token
    • 配置GitLab外掛
    • 新建任務
    • 後續操作
  • 多模組專案如何構建?
  • 總結

前言

自動持續整合不知道大傢伙有沒有聽說過,有用過類似的工具嗎?

簡而言之,自動持續整合的工作主要是能對專案進行構建、自動化測試和釋出。

今天這篇文章就來講講常用的持續整合的工具Jenkins以及如何自動構建Spring Boot專案。

如何安裝Jenkins?

Jenkins是Java開發的一套工具,可以直接下載war包部署在Tomcat上,但是今天作者用最方便、最流行的Docker安裝。

環境準備

在開始安裝之前需要準備以下環境和工具:

  1. 一臺伺服器,當然沒有的話可以用自己的電腦,作者的伺服器型號是Ubuntu
  2. JDK環境安裝,作者的版本是1.8,至於如何安裝,網上很多教程。
  3. 準備maven環境,官網下載一個安裝包,放在指定的目錄下即可。
  4. Git環境安裝,網上教程很多。
  5. 程式碼託管平臺,比如GithubGitLab等。

開始安裝Jenkins

Docker安裝Jenkins非常方便,只要跟著作者的步驟一步步操作,一定能夠安裝成功。

Docker環境安裝

每個型號伺服器安裝的方式各不相同,讀者可以根據自己的型號安裝,網上教程很多。

拉取映象

我這裡安裝的版本是jenkins/jenkins:2.222.3-centos,可以去這裡獲取你需要的版本: https://hub.docker.com/_/jenkins?tab=tags。執行如下命令安裝:

docker pull jenkins/jenkins:2.222.3-centos

建立本地資料卷

在本地建立一個數據卷掛載docker容器中的資料卷,我建立的是/data/jenkins_home/

,命令如下:

 mkdir -p /data/jenkins_home/

需要修改下目錄許可權,因為當對映本地資料卷時,/data/jenkins_home/目錄的擁有者為root使用者,而容器中jenkins使用者的 uid1000

chown -R 1000:1000 /data/jenkins_home/

建立容器

除了需要掛載上面建立的/data/jenkins_home/以外,還需要掛載mavenjdk的根目錄。啟動命令如下:

docker run -d --name jenkins -p 8040:8080 -p 50000:50000 -v /data/jenkins_home:/var/jenkins_home -v /usr/local/jdk:/usr/local/jdk -v /usr/local/maven:/usr/local/maven jenkins/jenkins:2.222.3-centos

以上命令解析如下:

  1. -d:後臺執行容器
  2. --name:指定容器啟動的名稱
  3. -p:指定對映的埠,這裡是將伺服器的8040埠對映到容器的8080以及50000對映到容器的50000。 「注意:」 804050000一定要是開放的且未被佔用,如果用的是雲伺服器,還需要在管理平臺開放對應的規則。
  4. -v:掛載本地的資料捲到docker容器中,「注意:」 需要將JDKmaven的所在的目錄掛載。

初始化配置

容器啟動成功,則需要配置Jenkins,安裝一些外掛、配置遠端推送等等。

訪問首頁

容器建立成功,訪問http://ip:8040,如果出現以下頁面表示安裝成功:

輸入管理員密碼

啟動成功,則會要求輸入密碼,如下圖:

這裡要求輸入的是管理的密碼,提示是在/var/jenkins_home/secrets/initialAdminPassword,但是我們已經將/var/jenkins_home這個資料夾掛載到本地目錄了,因此只需要去掛載的目錄/data/jenkins_home/secrets/initialAdminPassword檔案中找。

輸入密碼,點選繼續。

安裝外掛

初始化安裝只需要安裝社群推薦的一些外掛即可,如下圖:

這裡選擇安裝推薦的外掛,然後 Jenkins 會自動開始安裝。

「注意:」 如果出現想外掛安裝很慢的問題,找到/data/jenkins_home/updates/default.json檔案,替換的內容如下:

  1. updates.jenkins-ci.org/download 替換為mirrors.tuna.tsinghua.edu.cn/jenkins
  2. www.google.com 替換為www.baidu.com

執行以下兩條命令:

sed -i 's/www.google.com/www.baidu.com/g' default.json

sed -i 's/updates.jenkins-ci.org\/download/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json

全部安裝完成,繼續下一步。

建立管理員

隨便建立一個管理員,按要求填寫資訊,如下圖:

例項配置

配置自己的伺服器IP,如下圖:

配置完成

按照以上步驟,配置完成後自動跳轉到如下介面:

構建Spring Boot 專案

在構建之前還需要配置一些開發環境,比如JDKMaven等環境。

配置JDK、maven、Git環境

Jenkins整合需要用到mavenJDKGit環境,下面介紹如何配置。

首先開啟系統管理->全域性工具配置,如下圖:

分別配置JDKGitMaven的路徑,根據你的實際路徑來填寫。

「注意」:這裡的JDKGitMaven環境一定要掛載到docker容器中,否則會出現以下提示:

 xxxx is not a directory on the Jenkins master (but perhaps it exists on some agents)

配置成功後,點選儲存。

安裝外掛

除了初始化配置中安裝的外掛外,還需要安裝如下幾個外掛:

  1. Maven Integration
  2. Publish Over SSH

開啟系統管理 -> 外掛管理,選擇可選外掛,勾選中 Maven IntegrationPublish Over SSH,點選直接安裝

在安裝介面勾選上安裝完成後重啟 Jenkins

新增 SSH Server

SSH Server 是用來連線部署伺服器的,用於在專案構建完成後將你的應用推送到伺服器中並執行相應的指令碼。

開啟 系統管理 -> 系統配置,找到 Publish Over SSH 部分,選擇新增

點選 高階 展開配置

最終配置如下:

配置完成後可點選 Test Configuration 測試連線,出現 success 則連線成功。

新增憑據

憑據 是用來從 Git 倉庫拉取程式碼的,開啟 憑據 -> 系統 -> 全域性憑據 -> 新增憑據

這裡配置的是Github,直接使用使用者名稱密碼,如下圖:

建立成功,點選儲存。

新建Maven專案

以上配置完成後即可開始構建了,首先需要新建一個Maven專案,步驟如下。

建立任務

首頁點選新建任務->構建一個maven專案,如下圖:

原始碼管理

在原始碼管理中,選擇Git,填寫倉庫地址,選擇之前新增的憑證

構建環境

勾選 Add timestamps to the Console Output,程式碼構建的過程中會將日誌打印出來。

構建命令

Build中,填寫 Root POMGoals and options,也就是你構建專案的命令。

Post Steps

選擇Run only if build succeeds,新增 Post 步驟,選擇 Send files or execute commands over SSH

上圖各個選項解析如下:

  1. name:選擇前面新增的SSH Server
  2. Source files:要推送的檔案
  3. Remove prefix:檔案路徑中要去掉的字首,
  4. Remote directory:要推送到目標伺服器上的哪個目錄下
  5. Exec command:目標伺服器上要執行的指令碼

Exec command指定了需要執行的指令碼,如下:

# jdk環境,如果全域性配置了,可以省略
export JAVA_HOME=/xx/xx/jdk
export JRE_HOME=/xx/xx/jdk/jre
export CLASSPATH=/xx/xx/jdk/lib
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
 
# jenkins編譯之後的jar包位置,在掛載docker的目錄下
JAR_PATH=/data/jenkins_home/workspace/test/target
# 自定義的jar包位置
DIR=/data/test

## jar包的名稱
JARFILE=swagger-demo-0.0.1-SNAPSHOT.jar

if [ ! -d $DIR/backup ];then
   mkdir -p $DIR/backup
fi

ps -ef | grep $JARFILE | grep -v grep | awk '{print $2}' | xargs kill -9

if [ -f $DIR/backup/$JARFILE ]; then
 rm -f $DIR/backup/$JARFILE
fi

mv $JAR_PATH/$JARFILE $DIR/backup/$JARFILE


java -jar $DIR/backup/$JARFILE > out.log &
if [ $? = 0 ];then
        sleep 30
        tail -n 50 out.log
fi

cd $DIR/backup/
ls -lt|awk 'NR>5{print $NF}'|xargs rm -rf

以上指令碼大致的意思就是將kill原有的程序,啟動新構建jar包。

相關推薦

告訴Jenkins構建Spring Boot 簡單~

持續原創輸出,點選上方藍字關注我 目錄 前言如何安裝Jenkins? 環境準備開始安裝Jenkins 初始化配置 訪問首頁輸入管理員密碼安裝外掛建立管理員例項配置配置完成 構建Spring Boot 專案 配置JDK、maven、Git環境安裝外掛新增 SSH Server新增憑據新建Maven專

快取與庫先寫哪個告訴

日常生產場景中,為了避免大量請求同時打在資料庫上導致故障,資料庫+快取的方式已經成了日常標配。 對於讀取的部分,大家都很熟悉。但是對於寫的部分,到底是先寫庫還是先寫快取,這點可能困擾著很多人。 各位看官請跟隨小萊往下看: 思維導圖 旁路快取策略 提到這個有逼格的名詞你可能不是很熟悉,但是說到它的使用方式

JavaScript實現簡單圖片滾動 --9告訴C羅欲哭無淚

charset () element edit fas 簡單圖 pad jpg sni 源代碼下載:http://download.csdn.net/detail/u011043843/7510425 昨晚德國和葡萄牙的焦點之戰你看了嗎?北京時間淩晨的比賽

用兩告訴為什麼的App會卡頓?

有什麼料? 從這篇文章中你能獲得這些料: - 知道setContentView()之後發生了什麼? - 知道Android究竟是如何在螢幕上顯示我們期望的畫面的? - 對Android的檢視架構有整體把握。 - 學會從根源處分析畫面卡頓的原因。

阿里年架構師用一告訴什麼是系統架構師

這張圖從架構師的綜合能力、崗位認識、崗位職責等方面,清楚的畫出了作為一個架構的基本準則。人人都想成為架構師,可作為架構你達到了圖上面的要求了嗎? 系統架構師是個神奇的崗位。為什麼這麼說,在一個人數不多的小公司,你可能什麼都需要做,身體力行,做總監兼架構師

告訴SQL使用inner joinleft join 等

sql之left join、right join、inner join的區別 union、union all的區別跳轉https://www.cnblogs.com/logon/p/3748020.html SQL JOINS:   Please refer the

講清楚CRUD時BufferPool中發生了什麼!以及BufferPool的優化!

### 一、收到了大佬們的建議 **1、篇幅偏短,建議稍微加長一點。** 這點說的確實挺對,有的篇幅確實比較短,針對這個提議我會考慮將相似的話題放在一篇文章中。但是這可能會導致我中斷每天更新的步調,換成隔幾天發一篇的步調(但是這個系列的文章一定會寫完的!) **2、Buffer Pool、LRU Lis

MySQL必知必會:用講清楚CRUD時BufferPool中發生了什麼!以及BufferPool的優化!

### 一、收到了大佬們的建議 **1、篇幅偏短,建議稍微加長一點。** 這點說的確實挺對,有的篇幅確實比較短,針對這個提議我會考慮將相似的話題放在一篇文章中。但是這可能會導致我中斷每天更新的步調,換成隔幾天發一篇的步調(但是這個系列的文章一定會寫完的!) **2、Buffer Pool、LRU Lis

告訴angular2所有知識點

技術分享 代碼 自動化 我想 合作 .cn 動畫 image 框架 忙活了半年,從angular2.0到現在angular4.2。從沒AOT到有AOT。我想說,angular2的學習曲線真的有點陡峭。只能說,angular2是一個比較完整的框架,框架就是這樣,一大堆條條框框

告訴Raid的玩法

raid 概念一張圖告訴你Raid的玩法

Python 基礎 一告訴PyCharm如何進行斷點除錯

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

為什麼程式設計師“找不到物件”!幾告訴

人生第四大錯覺:程式設計師找不到物件! 1.群嘲面向物件程式設計 來自外界的滿滿惡意 2.別太苛刻程式設計師 程式設計師御用催婚圖 3.都回家了還盯著電腦,看看我會死啊? 都回家了!還敲什麼程式碼?都這樣了還死盯著電腦!你不孤生誰孤生? 4.丈母孃

學Java還是Python?一告訴

Java 和 Python 一直都是兩種很火很強大的程式語言,對於剛開始起步學習程式設計的同學來說,會迷惑且最經常問的問題是,我該學 Java 還是 Python,是不是 Python 容易學,或是應該先學什麼程式語言等等這樣的問題。作為一名 Java 程式

是學python還是java?一告訴

Java 和 Python 一直都是兩種很火很強大的程式語言,對於剛開始起步學習程式設計的同學來說,會迷惑且最經常問的問題是,我該學 Java 還是 Python,是不是 Python 容易學,或是應該先學什麼程式語言等等這樣的問題。作為一名 Jav

告訴學JAVA還是學Python!

Java和Python一直都是兩種很火很強大的程式語言,對於剛開始起步學習程式設計的同學來說,會迷惑且最經常問的問題是,我該學Java還是Python,是不是Python容易學,或是應該先學什麼程式語言等等這樣的問題。作為一名Java程式設計師,肯定會建議你先學

告訴為什麼是服務閘道器

閘道器服務是單一訪問點,並充當多項服務的代理。服務閘道器啟用了跨所有服務的路由轉發、過濾和公共處理等。 在微服務實踐中遠不止這點功能,它可以做到統一接入、流量管控、安全防護、業務隔離等功能。 下面是服務閘道器的大概作用圖。 看完這張圖,或許你已經明白了

告訴學Java還是Python!

來源:AI科技大本營(ID:rgznai100)本文長度為800字,建議閱讀3分鐘本文為你解析J

告訴什麼是系統架構師

這張圖從架構師的綜合能力、崗位認識、崗位職責等方面,清楚的畫出了作為一個架構的基本準則。人人都想成為架構師,可作為架構你達到了上面的要求了嗎? 系統架構師是個神奇的崗位。為什麼這麼說,在一個人數不多的小公司,你可能什麼都需要做,身體力行,做總監兼架構師或者

opencv筆記(影象矩moments輪廓面積contourArea輪廓周長arcLength)

理論來自: 1.概述 影象識別的一個核心問題是影象的特徵提取,簡單描述即為用一組簡單的資料(資料描述量)來描述整個影象,這組資料月簡單越有代表性越好。良好的特徵不受光線、噪點、幾何形變的干擾,影象識別技術的發展中,不斷有新的描述影象特徵提出,而影象不變矩就是其

自學前端開發程序員和科班出身的程序員差別在哪?一告訴

告訴 學習方法 基礎 大學生 迷茫 學生 如果 專業 免費 自學前端開發程序員和大學學計算機的人學習前端開發,差別在哪?誰會更受公司歡迎? 相對於專業就是編程的人來說,學習前端自然會更容易,因為他們具備更加完善的理論體系,所以學習編程會更加容易。 相對於自學前端開發編程的