前文我们主要聊了下jenkins的插件安装、用户及权限管理、邮件发送、配置凭证到gitlab上拉取项目和创建普通job;回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13810648.html;今天我们来了解下jenkins的一个核心功能pipline以及jenkins的分布式slave节点的部署;

  pipline介绍

  pipline 是帮助 Jenkins 实现 CI 到 CD 转变的重要角色,是运行在 jenkins 2.X 版本的核心插件,简单来说 Pipline 就是一套运行于 Jenkins 上的工作流框架,将原本独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂发布流程,从而实现单个任务很难实现的复杂流程编排和任务可视化,Pipeline 的实现方式是一套 Groovy DSL,任何发布流程都可以表述为一段 Groovy 脚本。

  pipline优势

  可持续性:jenkins 的重启或者中断后不影响已经执行的 Pipline Job;

  支持暂停:pipline 可以选择停止并等待人工输入或批准后再继续执行。

  可扩展:通过 groovy 的编程更容易的扩展插件。

  并行执行:通过 groovy 脚本可以实现 step,stage 间的并行执行,和更复杂的相互依赖关系。

  pipline语法

  Stage:阶段,一个 pipline 可以划分为若干个 stage,每个 stage 都是一个操作,比如 clone 代码、代码编译、代码测试和代码部署,阶段是一个逻辑分组,可以跨多个 node 执行。

  Node:节点,每个 node 都是一个 jenkins 节点,可以是 jenkins master 也可以是 jenkins agent,node 是执行 step 的具体服务器。

  Step:步骤,step 是 jenkins pipline 最基本的操作单元,从在服务器创建目录到构建容器镜像,由各类Jenkins 插件提供实现,例如: sh “make”;

  示例

node {
stage("clone 代码"){
echo "代码 clone"
}
stage("代码构建"){
echo "代码构建"
}
stage("代码测试"){
echo "代码测试"
}
stage("代码部署"){
echo "代码部署"
}
}

  提示:上面是pipline脚本示例,node用于指定节点,stage用于指定阶段名称;而下面的echo就是在每个阶段需要做的事;基本语法就是这样;从上面的示例不难反应一个job的工作流程;我们写pipline 构建pipline job就是根据项目构建流程来把要做的事用上述语法的形式表示出来,然后jenkins就可以根据我们定义的pipline任务,依次去各节点执行定义在自身的阶段任务;

  创建pipline job

  提示:新建任务要首先给任务写一个名称,然后选择流水线,点确定;

  提示:我们在general写上任务描述,然后就可以直接到流水线把我们上面的pipline 示例贴在此处;

  提示:选择立即构建;

  提示:最后执行成功就会显示浅绿色的方格,每个方格代表一个阶段;我们可以点击方格查看对应阶段执行的操作日志;如下

  当然我们也可以查看整个构建过程的日志,如下

  提示:找到左下方的构建时间,点击时间后端小三角,选择console output就可以查看整个构建的日志中了;

  当然,我上面只是一个很简单的测试,主要是让我们去理解pipline执行的流程和效果;

  生成Groovy代码

  示例:把拉取代码生成Groovy脚本

  提示:点击配置,进入到配置任务的界面;

  提示:找到流水线语法,然后点击跳转到另外一个页面;

  提示:这里我们可以选择很多类型,比如我们要拉去代码,可以选择git:Git ;

  提示:选择git:Git后,它会让我们输入仓库地址和凭证,如果这里没有凭证我们也可以选择添加凭证;选择好以后点击下面的生成流水线脚本;然后我们就可以把生成后的脚本,拷贝到我们需要执行的步骤里;

  提示:编辑好pipline脚本后,点击应用,我们又可以去执行我们现在的任务;

  提示:可以看到我们第二次构构建任务也是执行成功的;在克隆代码阶段,我们也可以看到jenkins到我们指定的仓库中拉去代码;

  验证:在服务器上对任务目录中看看是否将gitlab上的代码拉去下来了?

  提示:可以看到对应的任务目录下的确有从gitlab上拉去的文件;

  pipline 中执行 shell 命令

  提示:执行shell命令我用sh去执行,把要执行的shell命令用引号引起来;上面在代码构建这个阶段,用shell命令做了一件事,到test-pipline-job目录打包了所有文件,生成了一个test.tar.gz的压缩文件;

  验证:执行test-pipline-job,看看服务器对应的目录下是否有test.tar.gz文件生成?

  提示:从构建日志和视图上看是执行成功了;我们在去服务器上确认下

  提示:在test-pipline-job目录下的确有test.tar.gz文件生成;说明我们在代码构建阶段执行的shell命令成功了;

  配置jenkins的slave节点

  在要成为slave节点上安装java环境

[root@node05 ~]# yum install -y java-1.8.0-openjdk-devel

  验证:java环境

[root@node05 ~]# java -version
openjdk version "1.8.0_262"
OpenJDK Runtime Environment (build 1.8.0_262-b10)
OpenJDK 64-Bit Server VM (build 25.262-b10, mixed mode)
[root@node05 ~]#

  创建存放slave数据的目录

[root@node05 ~]# mkdir /data/jenkins/slave01 -p
[root@node05 ~]# tree /data
/data
└── jenkins
└── slave01 2 directories, 0 files
[root@node05 ~]#

  在jenkinsweb图形界面找到节点管理,选择新建节点

  提示:填写slave节点名称或者IP地址,然后选择固定节点,然后点击确定;

  提示:填写对应的信息,在启动方式里选择SSH,然后主机就写slave主机的ip地址,然后选择凭证,如果没有就选择添加;

  提示:这里把连接slave节点的用户和密码填写上;也可以选择公钥私钥,然后把私钥放上去也行;填写好,点添加;然后在凭证里再选我们添加的凭证;

  提示:这里如果是第一次连接slave我们要选择为验证那个选项,这样jenkins去用ssh连接slave出现输入yes,它会帮我们输入,否则jenkins会连接上不是;如果之前用ssh连接过slave,host key验证我们可以选择第一个know那个;选择好以后点击保存就好;

  提示:以上就是成功将192.168.0.45配置成jenkins的slave节点的状态,如果我们添加到对应节点上有小红叉,说明我们添加slave节点有问题;我们可以查看日志,来排查对应的错误;

  查看slave构建日志

  提示:从上面日志上,我们可以看到jenkins启动slave时,首先会去我们指定的数据目录找java命令,然后返回java的版本,然后启动一个sftp线程,拷贝remoting.jar到我们指定的数据目录,然后在slave节点上执行 java -jar 把对应的jar包运行起来;

  验证:在192.168.0.45上查看是否运行了remoting.jar的进程

  提示:可以看到在192.168.0.45上,运行了一个remoting.jar的jave进程;

  配置 slave 执行 job

  执行job

  提示:这里提示我们执行job失败,说没有git;我们在slave节点上安装git命令

[root@node05 ~]# yum install git -y

  再次构建job,看看是否能够够构建成功?

  提示:这里这个错误严格上不应该出现,我们在pipline中写的构建代码,cd的目录在slave上是不存在的,所以构建代码这一步就失败了;

  修改pipline脚本,然后重新构建job

  再次构建

  查看执行job日志

  提示:在日志中的确可以看到,执行过程是在我们指定的slave节点上执行的;

  验证:去slave节点上对应目录下看看是否有test.tar.gz生成?

  提示:可以看到slave节点上对应目录下生成了我们指定打包文件;

持续集成工具之Jenkins pipline简单示例的更多相关文章

  1. 持续集成工具之Jenkins

    Jenkins是一个很好的持续集成工具,不光可以帮助开发进行自动打包,自动验证升级和安装,也可以帮助测试人员定时执行测试任务,或者在开自动打包安装之后自动执行测试任务,实现打包-安装-测试一条线服务, ...

  2. 【持续集成工具】 Jenkins

    一.什么是持续集成 持续集成(CI):简单来说就是指将开发者的工作内容频繁地集成到主干中. 而持续集成工具可以将开发者频繁需要构建,编译,测试,部署等操作自动进行,为开发提供了非常大便利. 二.持续集 ...

  3. 持续集成工具之jenkins+sonarqube做代码扫描

    上一篇我们主要聊了下代码质量管理平台sonarqube的安装部署以及它的工作方式做了简单的描述和代码扫描演示:回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13 ...

  4. 持续集成工具之Jenkins安装部署

    一.DevOps理念 所谓DevOps是指development和Operations的组合,中文意思就是开发和运维的简写.devops理念主要是针对企业中的研发人员.运维人员和测试人员的工作理念,是 ...

  5. 持续集成工具之Jenkins使用配置

    在上一篇博客中,我们主要介绍了DevOps理念以及java环境和jenkins的安装,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13805666.html: ...

  6. 持续集成工具Jenkins安装、部署、使用

    本文介绍jenkins,利用其做项目发布与持续集成交付工具. 一.Jenkins是什么? Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作,功能包括: 1.持续的软件版本发布 ...

  7. 轻松搭建持续集成工具jenkins

    1.Jenkins介绍1)什么是持续集成随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题.尤其是近些年来,敏捷(Agile) 在软 ...

  8. 持续集成工具Jenkins学习总结

    概述 持续集成(Continuous Integration,简称CI)是一种软件开发实践,团队开发人员每次都通过自动化的构建(编译.发布.自动化测试)来验证,从而尽早的发现集成错误.持续集成最大的优 ...

  9. 持续集成工具jenkins的使用

    jenkins类似于Hadson,是一款持续集成工具.使用jenkins完成自动化部署的表现为:当开发人员向版本库提交新的代码后,应用服务器上自动部署,用户或测试人员使用的马上就是最新的应用程序.搭建 ...

随机推荐

  1. Leetcode 全排列专题(更新ing)

    总览 涉及到的题目有 题号 名字 难度 Leetcode 60 第k个排列 中等 Leetcode 46 全排列 中等 待更新...... Leetcode 46 全排列 题目 基础题 给定一个 没有 ...

  2. Tomcat三实例cluster多播方案共享session再配置

    昨天已经将两实例cluster多播方案共享Session配置成功,其中的关键就在于server.xml中,engine->channel->receiver节点中address得写成自己的 ...

  3. 蓝奏网盘CMD控制台

    LanZouCloud-CMD 2.0 基于蓝奏云API开发的CMD版蓝奏云控制台 Github : https://github.com/zaxtyson/LanZouCloud-CMD 更新说明 ...

  4. js中页面加载完成后执行的几种方法及执行顺序

    在js和jquery使用中,经常使用到页面加载完成后执行某一方法.通过整理,大概是五种方式(其中有的只是书写方式不一样). 1:使用jQuery的$(function){}; 2:使用jquery的$ ...

  5. 如何在不使用OleDbCommandBuilder情况下使用OleDbDataAdapter更新Access数据库记录

    我在博客园的博问和微软论坛都曾经请教了这个问题(问题链接),可能我的问题太简单,并没有获得太多解答. 到今天为止,我自己通过查找和摸索,基本把这个问题解决了,还是记录下来,供其他朋友参考. 第一次解决 ...

  6. 三年之久的 etcd3 数据不一致 bug 分析

    问题背景 诡异的 K8S 滚动更新异常 笔者某天收到同事反馈,测试环境中 K8S 集群进行滚动更新发布时未生效.通过 kube-apiserver 查看发现,对应的 Deployment 版本已经是最 ...

  7. 云计算openstack——维护(15)

  8. python中random库的使用

    基本随机函数 计算机产生随机数是需要随机数种子的,例如 给定一个随机数种子,就能利用梅森旋转算法产生一系列随机序列 每一个数都是随机数,只要随机种子相同,产生的随机数和数之间的关系都是确定的 随机种子 ...

  9. JMeter5.0在windows(含插件安装)

    一.jmeter下载 前提:已经安装jdk8+ jmeter下载地址:http://jmeter.apache.org/download_jmeter.cgi 有Binaries和Source版本 前 ...

  10. 5.Storm-集群配置及任务提交