Jenkins 2.0开始推行Pipeline as Code,实现从CI到CD的转变。 Pipeline实际上是一套Groovy DSL,用Groovy脚本描述CI/CD的流程,Jenkins可以从代码库中获取脚本,实现了Pipeline as Code。Pipeline将原来独立运行的多个任务连接起来,可以实现更加复杂的CI/CD流程。
为什么要使用Pipeline?对于实践微服务的团队,产品有很多服务组成,传统的在Jenkins中集中进行job配置的方式会成为瓶颈,微服务团队会将CI Job的配置和服务的发布交给具体负责某个服务的团队,这正需要Pipeline as Code; 除此之外,一次产品的发布会涉及到多个服务的协同发布,用单个CI Job实现起来会十分困难,使用Pipeline可以很好的完成这个需求。
一、Pipeline的基本概念和Jenkinsfile
- Node:一个Node就是一个Jenkins节点,可以是Master,也可以是Slave,是Pipeline中具体Step的运行环境。
- Stage:一个Pipeline有多个Stage组成,每个Stage包含一组Step。注意一个Stage可以跨多个Node执行,即Stage实际上是Step的逻辑分组。
- Step:是最基本的运行单元,可以是创建一个目录、从代码库中checkout代码、执行一个shell命令、构建Docker镜像、将服务发布到Kubernetes集群中。Step由Jenkins和Jenkins各种插件提供。
二、使用Jenkins中pipeline风格构建项目,共gitee中拉取代码自动执行测试
1.gitee中需要创建仓库上传代码
2.配置Jenkins
b.选择项目名称、项目风格
c.新增凭据(只需要新增一次即可,第二次如果还是从相同仓库拉去不需要在新增凭据)
注意:
新增凭据这里就是为了和gitee建立连接
弹窗内容,注意这里需要使用ssh连接,需要一对密钥,公钥保存在gitee中,私钥在下面添加
d.设置执行代码
代码如下:
node{ stage 'checkout' git([url:'https://gitee.com/haugus/automated-testing-keyword-driven.git',brabch:"master"]) stage 'run' sh 'python run.py' }
注意:
由于上述配置的是ssh方式连接,所有项目在gitee中的地址,必须写出ssh地址,类似:git@gitee.com:haugus/automated-testing-keyword-driven.git
e.注意
在构建之前,由于我这里是拉去的代码是接口自动化测试的代码,所以Jenkins服务器要能执行必须要有python3的环境,以及相应的库
pip install requests pip install openpyxl pip install ddt