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列表视图后,可以查看到分配的相同业务的项目。

 

  

原文地址:https://www.cnblogs.com/struggle-1216/p/12435107.html