1. 程式人生 > >jenkins使用入門(郵件、ssh、git、)

jenkins使用入門(郵件、ssh、git、)

jenkins部署可以參考:https://blog.csdn.net/luanpeng825485697/article/details/82945004

郵件通知

我這裡使用的是qq企業郵箱
在這裡插入圖片描述

配置郵件通知,系統管理–系統設定

新增管理員郵箱,新增郵件

在這裡插入圖片描述

點選儲存或測試郵件,系統會給目標郵箱傳送一封測試郵件:

在這裡插入圖片描述

注意,接收郵件必須滿足設定的字尾。

注意:如果你的系統設定中還有Extended E-mail Notification,就需要配置這個才能正常傳送郵件

任務配置中

在這裡插入圖片描述

郵件的html模板

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>${PROJECT_NAME}-第${BUILD_NUMBER}次構建日誌</title>
</head>

<body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4"
    offset="0">
    <table width="95%" cellpadding="0" cellspacing="0"
        style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">
        <tr>
            <td>(本郵件是程式自動下發的,請勿回覆!)</td>
        </tr>
        <tr>
            <td><h2>
                    <font color="#0000FF">構建結果 - ${BUILD_STATUS}</font>
                </h2></td>
        </tr>
        <tr>
            <td><br />
            <b><font color="#0B610B">構建資訊</font></b>
            <hr size="2" width="100%" align="center" /></td>
        </tr>
        <tr>
            <td>
                <ul>
                    <li>專案名稱 : ${PROJECT_NAME}</li>
                    <li>構建編號 : 第${BUILD_NUMBER}次構建</li>
                    <li>觸發原因: ${CAUSE}</li>
                    <li>構建日誌: <a href="${BUILD_URL}console">${BUILD_URL}console</a></li>
                    <li>構建  Url : <a href="${BUILD_URL}">${BUILD_URL}</a></li>
                    <li>工作目錄 : <a href="${PROJECT_URL}ws">${PROJECT_URL}ws</a></li>
                    <li>專案  Url : <a href="${PROJECT_URL}">${PROJECT_URL}</a></li>
                </ul>
            </td>
        </tr>
        <tr>
            <td><b><font color="#0B610B">Changes Since Last
                        Successful Build:</font></b>
            <hr size="2" width="100%" align="center" /></td>
        </tr>
        <tr>
            <td>
                <ul>
                    <li>歷史變更記錄 : <a href="${PROJECT_URL}changes">${PROJECT_URL}changes</a></li>
                </ul> ${CHANGES_SINCE_LAST_SUCCESS,reverse=true, format="Changes for Build #%n:<br />%c<br />",showPaths=true,changesFormat="<pre>[%a]<br />%m</pre>",pathFormat="    %p"}
            </td>
        </tr>
        <tr>
            <td><b>Test Informations</b>
            <hr size="2" width="100%" align="center" /></td>
        </tr>
        <tr>
            <td><pre
                    style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">Total:${TEST_COUNTS,var="total"},Pass:${TEST_COUNTS,var="pass"},Failed:${TEST_COUNTS,var="fail"},Skiped:${TEST_COUNTS,var="skip"}</pre>
                <br /></td>
        </tr>
        <tr>
            <td><b><font color="#0B610B">構建日誌 (最後 100行):</font></b>
            <hr size="2" width="100%" align="center" /></td>
        </tr>
        <tr>
            <td><textarea cols="80" rows="30" readonly="readonly"
                    style="font-family: Courier New">${BUILD_LOG, maxLines=100}</textarea>
            </td>
        </tr>
    </table>
</body>
</html>

在郵件通知的高階配置中,可以配置什麼編譯結果的情況下下發通知,和通知給誰
在這裡插入圖片描述

配置ssh

點選-系統管理-系統外掛-可選外掛中 直接搜 publish over ssh 點選安裝,安裝完之後,重啟jenkins

1,系統管理->系統設定->Publish over SSH配置裡面配置ssh伺服器資訊
在這裡插入圖片描述

參考:https://blog.csdn.net/u012946310/article/details/80969447

配置git

安裝gitlab外掛,系統管理–管理外掛–可選外掛

在這裡插入圖片描述

外掛安裝介面,會額外安裝一些依賴關係的外掛,jenkins基於ruby開發,所以會有ruby環境:
在這裡插入圖片描述

系統管理 --> 憑據配置

在這裡插入圖片描述

在這裡插入圖片描述

在這裡插入圖片描述

在這裡插入圖片描述

jenkins伺服器上(或者docker裡面)root使用者生成金鑰對

ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub 

在git網頁中加入jenkins的公鑰

在這裡插入圖片描述

在伺服器上手動試一下git clone目標倉庫能否成功。

jenkins拉取程式碼沒問題,繼續配置jenkins的認證,這裡應該輸入私鑰
在這裡插入圖片描述

複製jenkins拉取git程式碼伺服器root的私鑰

cat ~/.ssh/id_rsa

在任務構建中就可以為專案提供原始碼倉庫了

在這裡插入圖片描述

當然你也可以在憑證中建立賬號密碼憑證,使用賬號密碼拉取git倉庫https地址

實戰:向GitHub提交程式碼時觸發Jenkins自動構建

分別點選"系統管理"->“外掛管理”->“可選外掛”,選擇

Git client plugin
Git plugin
GitLab Plugin
Gitlab Hook Plugin

檢視jenkin生成回撥地址。在任務重構建觸發器下獲取回撥URL。下面的URL那一行只有Gitlab Hook Plugin外掛下載成功後才能顯示。

在這裡插入圖片描述

Gitlab上的操作

登陸Gitlab上的專案中,新增webhook(用上面Jenkins中生成的回撥url)

gitlab鉤子hook分為系統級的和專案級別的。

系統級別的

在這裡插入圖片描述

專案級的

在這裡插入圖片描述

在這裡插入圖片描述

其中token需要在jenkins中git hook的高階配置中生成。

新增成功後,點選此webhook後面的test進行測試

在這裡插入圖片描述

如果返回Hook successfully executed.表示配置成功。
這樣,下次push程式碼後,就會自動觸發jenkins上相關的構建工程進行自動釋出了!無需人工干預~

Jenkins定時構建和輪詢SCM設定說明

在這裡插入圖片描述

一、定時構建:不管SVN或Git中資料有無變化,均執行定時化的構建任務 ;

二、輪詢SCM:只要SVN或Git中資料有更新,則執行構建任務;

三、構建語法說明:

1.首先格式為:* * * * *(五個星);

2.第一個表示分鐘,取值0~59
第二個
表示小時,取值0~23
第三個表示一個月的第幾天,取值1~31
第四個
表示第幾月,取值1~12
第五個*表示一週中的第幾天,取值0~7,其中0和7代表的都是週日

3.使用舉例:

每隔10分鐘構建一次:H/5 * * * *

每隔1小時構建一次: H H/1 * * *

每月30號構建一次: H H 30 * *

四、定時構建和輪詢SCM使用互不衝突,具體如何組合,需要根據專案情況合理配置;

jenkins關閉重啟重新載入

1、關閉Jenkins

只需要在訪問jenkins伺服器的網址url地址後加上exit。例如我jenkins的地址http://localhost:8080/,那麼我只需要在瀏覽器位址列上敲下http://localhost:8080/exit 網址就能關閉jenkins服務.

2、重啟Jenkies

http://localhost:8080/restart

3、重新載入配置資訊

 http://localhost:8080/reload

mvn安裝

jenkins中需要編譯java程式碼,所以需要mvn環境

下載合適版本的maven:http://maven.apache.org/download.cgi

將下載的壓縮檔案複製到jenkins容器中

進入jenkins容器

## 解壓maven
tar -zxvf apache-maven-3.3.9-bin.tar.gz

## 轉移maven到合適的目錄
mv apache-maven-3.3.9 /opt/maven

## 設定maven的環境變數
vi /etc/profile

## 設定內容如下
#maven env
export MAVEN_HOME=/opt/maven
PATH=$MAVEN_HOME/bin:$PATH
export PATH

## 編譯profile生效
source /etc/profile

## 測試maven是否安裝成功
[[email protected] maven]# mvn --version
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-10T11:41:47-05:00)
Maven home: /opt/maven
Java version: 1.8.0_111, vendor: Oracle Corporation
Java home: /usr/java/jdk1.8.0_111/jre
Default locale: zh_CN, platform encoding: GB18030
OS name: "linux", version: "3.10.0-514.2.2.el7.x86_64", arch: "amd64", family: "unix"

jenkins 呼叫maven有兩種方式

1) 採用Jenkins外掛方式呼叫

系統配置中配置maven

系統管理/系統設定/

在這裡插入圖片描述

然後呼叫的時候 在job中設定
在這裡插入圖片描述

2 ) jenkins 通過shell指令碼呼叫 maven

需要在系統中配置好環境變數
在這裡插入圖片描述

Jenkins 通過shell指令碼呼叫mvn 命令的時候,是從/usr/bin 資料夾中找命令的,這個時候需要做個軟連結

ln -s /opt/maven/bin/mvn /usr/bin/mvn 

這樣設定後就不會出現 mvn command not found 的問題了

Maven預設會使用本地快取的庫來編譯工程,如果上次下載的庫失敗將導致類似下面的錯誤

Non-resolvable import POM: Failure to find org.springframework:spring-framework-bom:pom:5.1.0.RC1 in http://repo.maven.apache.org/maven2 was cached in the local repository, resolution will not be reattempted until the update interval of central has elapsed or updates are forced @ line 366, column 25 -> [Help 2]

解決辦法
刪除~/.m2/repository/對應目錄或目錄下的*.lastUpdated檔案,然後再次執行maven命令
maven命令後加-U,如mvn package -U
在repository的release或者snapshots版本中新增updatePolicy屬性,其中updatePolicy可以設定為”always”、”daily” (預設)、”interval:XXX” (分鐘)或”never”

<repositories>
    <repository>
      <id>io.spring.repo.maven.release</id>
      <url>http://repo.spring.io/release/</url>
      <releases>
        <enabled>true</enabled>
        <updatePolicy>always</updatePolicy>
      </releases>
      <snapshots><enabled>false</enabled></snapshots>
    </repository>
  </repositories>

當然你可以在容器中執行mvn help:system 將本地倉庫清空重新下載