Jenkins項目常用三種構建類型風格詳解

Jenkins構建的項目類型介紹

jenkins 的安裝配置請參考:《jenkins war包安裝部署,tomcat+JDK+maven》

Jenkins中自動構建項目的類型有很多,常用的有以下三種:

自由風格軟件項目( FreeStyle Project)
Maven 項目(Maven Project)
流水線項目( Pipeline Project)
在這裏插入圖片描述
每種類型的構建其實都可以完成一樣的構建過程與結果,只是在操作方式、靈活度等方面有所區別,在實際開發中可以根據自己的需求和習慣來選擇。(PS: 個人推薦使用流水線類型,因爲靈活度非常高

實驗用的是簡單的 maven 打包的項目,需要的小夥伴可以到我的GitHub拉取:GIthub實驗構建項目。項目構建會部署到遠程 Tomcat 的服務器上

在這裏插入圖片描述

先配置 Tomcat 服務器:

1、wget 安裝tomcat9的版本 :
wget http://mirrors.hust.edu.cn/apache/tomcat/tomcat-9/v9.0.34/bin/apache-tomcat-9.0.34.tar.gz
tar -xf apache-tomcat-9.0.34.tar.gz && mv apache-tomcat-9.0.34 /usr/local/tomcat
chmod +710 /usr/local/tomcat/bin/*.sh
2、用戶配置,設置登錄的用戶密碼都是: tomcat
[root@jenkins conf]# vim /usr/local/tomcat/conf/tomcat-users.xml
    .....
         <role rolename="tomcat"/>
         <role rolename="role1"/>
         <role rolename="manager-script"/>
         <role rolename="manager-gui"/>
         <role rolename="manager-status"/>
         <role rolename="admin-gui"/>
         <role rolename="admin-script"/>
        <user username="tomcat" password="tomcat" roles="tomcat,manager-script,manager-gui,manager-status,admin-gui,admin-script"/>
</tomcat-users>

爲了配的用戶能登錄到,還需要對一下進行修改
[root@enkins META-INF]# vim /usr/local/tomcat/webapps/manager/META-INF/context.xml
        <!--
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
        -->
停止tomcat並重新啓動即可
3、通過遠程的 Tomcat 地址登錄即可:http://loschost:8080/manager/html

在這裏插入圖片描述

項目構建環境需要安裝插件:Deploy to container(部署到遠程Tomcat插件) 和 Maven Integration(maven項目類型)、Pipeline(流水線項目類型)

項目類型一、自由風格項目構建

項目構建流程:拉取代碼->編譯->打包->部署

1、創建新的自由風格的項目,配置拉取的地址

在這裏插入圖片描述

2、編譯打包

構建->添加構建步驟->Executor Shell

echo "start:編譯和打包"
mvn clean package
echo "end:編譯和打包"

構建->構建後操作->Deploy war/ear to a container (前面一定要安裝Deploy to container插件)
構建->構建後操作->Deploy war/ear to a container -> Containers 選擇對應的tomcat版本,這裏用的是 Tomcat 9.x Remote
沒有憑證可以先添加憑證,憑證就是遠程Tomcat登錄的賬號密碼:http://loschost:8080/manager/html

在這裏插入圖片描述

3、構建測試:

在這裏插入圖片描述
打包完成後到Tomcat Web應用程序管理者點擊打開:http://loschost:8080/manager/html
在這裏插入圖片描述
在這裏插入圖片描述
如果顯示此頁面則表示部署成功

項目類型二、Maven 項目

1、創建項目,配置項目

創建項目時候選擇 “構建一個 mvaen 項目”,拉取代碼和遠程部署的過程和自由風格項目一樣,只是"構建"部分不同(前面需要安裝 Maven Integration 插件)

Root POM:pom.xml	對應GitHub上面的xml文件名
Goals and options:clean package


配置完成構建出來的結果和自由風格的一樣

項目類型三、Pipeline 流水線項目(Pipeline Script 或 Pipeline Script from SCM)

Pipeline Script 1、簡介

stages :代表整個流水線的所有執行階段。通常stages只有1個,裏面包含多個stage
stage :代表流水線中的某個階段,可能出現n個。一般分爲拉取代碼,編譯構建,部署等階段。
steps:代表一個階段內需要執行的邏輯。steps裏面是shell腳本,git拉取代碼,ssh遠程發佈等任意內
容。
1 )概念
Pipeline,簡單來說,就是一套運行在 Jenkins 上的工作流框架,將原來獨立運行於單個或者多個節點
的任務連接起來,實現單個任務難以完成的複雜流程編排和可視化的工作。

2)使用 Pipeline 有以下好處(來自翻譯自官方文檔):
代碼:Pipeline以代碼的形式實現,通常被檢入源代碼控制,使團隊能夠編輯,審查和迭代其傳送流
程。 持久:無論是計劃內的還是計劃外的服務器重啓,Pipeline都是可恢復的。 可停止:Pipeline可接
收交互式輸入,以確定是否繼續執行Pipeline。 多功能:Pipeline支持現實世界中複雜的持續交付要
求。它支持fork/join、循環執行,並行執行任務的功能。 可擴展:Pipeline插件支持其DSL的自定義擴
展 ,以及與其他插件集成的多個選項。

3)如何創建和使用 Jenkins Pipeline
Pipeline  支持兩種語法:Declarative(聲明式)和 Scripted Pipeline(腳本式)語法
Pipeline  也有兩種創建方法:可以直接在 Jenkins 的 Web UI 界面中輸入腳本;也可以通過創建一
個 Jenkinsfile 腳本文件放入項目源碼庫中

2、創建新的自由風格項目(兩個代碼類型二選一即可)

代碼類型一:流水線 -> 選擇HelloWorld模板

在這裏插入圖片描述

pipeline {
   agent any

   stages {
      stage('pull code') {
         steps {
            echo '拉取代碼'
         }
      }
        stage('Build projeck') {
         steps {
            echo '編譯構建'
         }
      }
        stage('push code') {
         steps {
            echo '項目部署'
         }
      }
   }
}

stages :代表整個流水線的所有執行階段。通常stages只有1個,裏面包含多個stage
stage :代表流水線中的某個階段,可能出現n個。一般分爲拉取代碼,編譯構建,部署等階段。
steps:代表一個階段內需要執行的邏輯。steps裏面是shell腳本,git拉取代碼,ssh遠程發佈等任意內容。

編寫一個簡單聲明式 Pipeline:

代碼類型二:流水線 -> 選擇Scripted Pipeline
node {
   def mvnHome
   stage('pull code') {
        echo '拉取代碼'
   }
   stage('Build projeck') {
        echo '編譯構建'
   }
   stage('push code') {
        echo '項目部署'        
    }   
}

Node :節點,一個 Node 就是一個 Jenkins 節點,Master 或者 Agent,是執行 Step 的具體運行
環境,Jenkins的Master-Slave架構的時候用到。
Stage :階段,一個 Pipeline 可以劃分爲若干個 Stage,每個 Stage 代表一組操作,比如:
Build、Test、Deploy,Stage 是一個邏輯分組的概念。
Step :步驟,Step 是最基本的操作單元,可以是打印一句話,也可以是構建一個 Docker 鏡像,
由各類 Jenkins 插件提供,比如命令:sh ‘make’,就相當於我們平時 shell 終端中執行 make 命令
一樣。

編寫一個簡單的腳本式 Pipeline:
在這裏插入圖片描述
構建測試觀察效果:
在這裏插入圖片描述

構建得出的結果都一樣

3、配置一個完整的 pipeline 腳本(這裏用的是:代碼類型一,聲明式腳本)

在對應項目下 “流水線語法” 可以編寫完成的 pipeline 腳本
在這裏插入圖片描述
通過生成器生成對應的 pipeline 腳本代碼
在這裏插入圖片描述
代碼拉取選擇:checkout:Check out from version control
構建選擇:sh:Shell Script
推送發佈選擇:deploy:Deploy war/ear to a container

pipeline {
   agent any

   stages {
      stage('pull code') {
         steps {
            checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'a20e4f7f-6d66-4055-9cbc-115cc9827664', url: 'https://github.com/arosendeng/rosen-jenkins.git']]])
         }
      }
        stage('Build projeck') {
         steps {
            sh label: '', script: 'mvn clean package'
         }
      }
        stage('push code') {
         steps {
            deploy adapters: [tomcat9(credentialsId: 'b1ca6678-8339-43bb-a0da-c3935c509dc2', path: '', url: 'http://192.168.66.102:8080/')], contextPath: null, war: 'target/*.war'
         }
      }
   }
}

構建測試,發現可以構建成功

Pipeline Script from SCM

剛纔都是直接在 Jenkins 的 UI 界面編寫 Pipeline 代碼,這樣不方便腳本維護,建議把 Pipeline 腳本放在項目中(一起進行版本控制)

1、在項目根目錄建立 Jenkinsfile 文件,把內容複製到該文件中

文件放到項目的:src 目錄下,命名 Jenkinsfile
在這裏插入圖片描述
把 Jenkinsfile 上傳到 GitHab

2、引用文件

注意路徑:Jenkinsfile 在 src下,路徑爲 src/Jenkinsfile
在這裏插入圖片描述
以上的簡單實驗操作爲了對上述三種常用的構建方式多熟悉!!!以上的知識點學習都是來自 ”黑馬程序員“

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章