Jenkins之三----Pipeline與Jenkins視圖


實戰一:在Jenkins基於pipeline拉取Gitlab代碼,部署到后端tomcat服務器上

1、pipeline介紹

官網地址:https://jenkins.io/2.0/

pipline是幫助Jenkins實現CI到CD轉變的重要角色,是運行在 jenkins 2.X版本的核心插件,簡單來說 Pipline 就是一套運行於 Jenkins 上的工作流框架,將原本獨立運行

於單個或者多個 節點的任務連接起來,實現單個任務難以完成的復雜發布流程, 從而實現單個任務很難實現的復雜流程編排和任務可視化 Pipeline 的實現方式是一套

Groovy DSL ,任何發布流程都可以表述為 一段 Groovy 腳本。

2、pipline語法

Stage階段:一個pipline可以划分為若干個 stage ,每個 stage 都是一個操作,比如clone 代碼、代碼 編譯 、 代碼 測試和代碼部署 階段是一個邏輯分組, 可以 跨多個 node執行。

Node節點:每個node都是一個jenkins節點,可以是jenkins master也可以是jenkins agent node是執行step 的具體服務器。

Step:步驟 step 是 jenkins pipline 最基本的操作單元 從 在 服務器創建目錄到 構建容器 鏡像 ,由各類 Jenkins 插件 提供實現,例如: sh “make”

3、pipline優勢

可持續性: jenkins 的重啟 或者 中斷后不影響已經執行的 Pipline Job

支持暫停: pipline 可以選擇 停止並 等待人工輸入 或 批准后再繼續執行。

可擴展通過 groovy 的編程更容易的擴展插件。

並行執行: 通過 groovy 腳本可以實現 step stage 間的並行執行,和更復雜的相互依賴關系 。

4、創建一個pipeline-test任務

1、創建一個pipeline-test任務,jenkins--->創建New任務

 2、創建一個簡單的pipeline job測試,丟棄舊的構建,設置保留的時間,也可以不設置。

選擇流水線語法的選項,可以查看克隆gitlab網站上代碼的pipeline語法:

git credentialsId: '26375340-9ad6-41f6-82b9-73571c30e266', url: 'git@192.168.7.100:linux_gitlab/web1.git'  # pipeline克隆gitlab語法

3、開始創建pipeline腳本,先選擇pipeline范例

4、配置pipeline語法腳本,其中192.168.7.104的地址是后端tomcat服務器的IP地址

node("jenkins-node1"){  # 括號中指定用jenkins-slave的主機進行克隆代碼並進行一系列的操作。
  stage("clone 代碼"){
    sh 'cd /var/lib/jenkins/workspace/pipeline-test && rm -rf ./*'  # 注意,一開始沒有此目錄,用shell命令切換此目錄下無法成功,剛開始構建時,可以創建此目錄。
    git credentialsId: '26375340-9ad6-41f6-82b9-73571c30e266', url: 'git@192.168.7.100:linux_gitlab/web1.git'
    echo "代碼 clone完成"
  }

  stage("代碼打包"){
    sh 'cd  /var/lib/jenkins/workspace/pipeline-test && tar czvf code.tar.gz  ./*'
    echo "代碼打包完成"
  }
  stage("停止tomcat服務"){
    sh 'ssh www@192.168.7.104 "/apps/tomcat/bin/shutdown.sh"'
  }
   
  stage("代碼復制"){
    sh 'cd /var/lib/jenkins/workspace/pipeline-test && scp  code.tar.gz www@192.168.7.104:/data/tomcat/tomcat_appdir/'
  }
   
  stage("代碼部署"){
    sh 'ssh www@192.168.7.104 "cd /data/tomcat/tomcat_appdir/ && rm -rf /data/tomcat/tomcat_webdir/myapp/*  && tar xvf code.tar.gz -C /data/tomcat/tomcat_webdir/myapp/ "'
  }
   
  stage("啟動tomcat服務"){
    sh 'ssh www@192.168.7.104 "/apps/tomcat/bin/startup.sh"'
  }
}

如果使用jenkins-node1的主機,需要將本主機的ssh公鑰復制到后端tomcat服務器上,實現免秘鑰登錄

[root@jenkins-slave ~]# ssh-keygen
[root@jenkins-slave ~]# ssh-copy-id www@192.168.7.104

5、立即構建pipeline-test

 6、查看此時構建執行的腳本結果

Started by user 974212253@qq.com
Running in Durability level: MAX_SURVIVABILITY
[Pipeline] Start of Pipeline
[Pipeline] node
Running on jenkins-node1 in /var/lib/jenkins/workspace/pipeline-test
[Pipeline] {
[Pipeline] stage
[Pipeline] { (clone 代碼)
[Pipeline] sh
+ cd /var/lib/jenkins/workspace/pipeline-test
+ rm -rf ./code.tar.gz ./index.html
[Pipeline] git
using credential 26375340-9ad6-41f6-82b9-73571c30e266
Fetching changes from the remote Git repository
 > git rev-parse --is-inside-work-tree # timeout=10
 > git config remote.origin.url git@192.168.7.100:linux_gitlab/web1.git # timeout=10
Fetching upstream changes from git@192.168.7.100:linux_gitlab/web1.git
 > git --version # timeout=10
using GIT_SSH to set credentials 
 > git fetch --tags --progress git@192.168.7.100:linux_gitlab/web1.git +refs/heads/*:refs/remotes/origin/* # timeout=10
 > git rev-parse refs/remotes/origin/master^{commit} # timeout=10
Checking out Revision 5bd130b5a0936bafeb55b3a3617308902feb29e4 (refs/remotes/origin/master)
 > git rev-parse refs/remotes/origin/origin/master^{commit} # timeout=10
 > git config core.sparsecheckout # timeout=10
 > git checkout -f 5bd130b5a0936bafeb55b3a3617308902feb29e4 # timeout=10
 > git branch -a -v --no-abbrev # timeout=10
 > git checkout -b master 5bd130b5a0936bafeb55b3a3617308902feb29e4 # timeout=10
Commit message: "Add index.html"
[Pipeline] echo
代碼 clone完成
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (代碼打包)
[Pipeline] sh
 > git rev-list --no-walk 5bd130b5a0936bafeb55b3a3617308902feb29e4 # timeout=10
+ cd /var/lib/jenkins/workspace/pipeline-test
+ tar czvf code.tar.gz ./index.html
./index.html
[Pipeline] echo
代碼打包完成
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (停止tomcat服務)
[Pipeline] sh
+ ssh www@192.168.7.104 /apps/tomcat/bin/shutdown.sh
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (代碼復制)
[Pipeline] sh
+ cd /var/lib/jenkins/workspace/pipeline-test
+ scp code.tar.gz www@192.168.7.104:/data/tomcat/tomcat_appdir/
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (代碼部署)
[Pipeline] sh
+ ssh www@192.168.7.104 'cd /data/tomcat/tomcat_appdir/ && rm -rf /data/tomcat/tomcat_webdir/myapp/*  && tar xvf code.tar.gz -C /data/tomcat/tomcat_webdir/myapp/ '
./index.html
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (啟動tomcat服務)
[Pipeline] sh
+ ssh www@192.168.7.104 /apps/tomcat/bin/startup.sh
Tomcat started.
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS

7、此時可以看到jenkins-slave服務器上已經有代碼

[root@jenkins-slave ~]# cd /var/lib/jenkins/workspace/pipeline-test
[root@jenkins-slave pipeline-test]# ls
code.tar.gz  index.html
[root@jenkins-slave pipeline-test]# cat index.html 
linux web 123456[root@jenkins-slave pipeline-test]# 

8、后端tomcat服務器上也已經有了代碼

[root@tomcat-web1 ~]# cd /data/tomcat/tomcat_webdir/myapp/
[root@tomcat-web1 myapp]# cat index.html 
linux web 123456[root@tomcat-web1 myapp]# 

9、訪問tomcat網站,成功訪問網頁,此時基於pipeline流水線拉取代碼成功。

 

 Jenkins視圖

1、列表視圖

1、我的視圖----->列表視圖使用場景比較多,用於將一個業務的job保存至一個列表視圖進行分類管理,即不同業務的job放在不同的列表視圖中 。

2、創建一個列表視圖,命名為pipeline-view

 

 

 3、創建完pipeline-view,選擇自己已經創建的項目。

4、在新創建的pipeline-view列表視圖后,可以查看到分配的相同業務的項目。

 

 

 

 

 

 

 

 

  

 


免責聲明!

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



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