Jenkins持续交付实战演练
jenkins web hook机制
运行jenkins任务触发方式:
主动运行
定时构建
就算代码库没有更新,也会构建。通过代码库主动触发Jenkins的构建任务
jenkins向外暴露一个触发器,github或gitlab代码库提交代码的时候,可以主动触发jenkins。
需要打通通信
需要有github或gitlab权限
好处是:节省jenkins资源。
- 定时轮询代码库
如果gitbub或gitlab无法访问jenkins,则需要更换触发策略。
Poll SCM配置,定时查询代码库,有更新才构建。
构建结果提取与远程调用jenkins api
构建结果提取
- 通过参数提取jenkins任务构建结果 -$BUILD_STATUS
jenkins参数提取构建结果,只能看到成功或者失败。
- Editable Email Notification插件,正则表达式匹配
提醒邮件中提取出自己想看的信息,更加灵活
利用正则表达式从log匹配测试结果
远程调用jenkins api
- 简介
jenkins对外暴露的动作交互入口
为外部程序提供入口,可以控制jenkins
支持http协议
api接口支持用户名、密码认证
支持的典型功能:运行job、查看任务状态,返回任务编号
在搭建测试平台时,可以使用jenkins api集成jenkins
- 调用jenkins api环境准备
创建用户
准备任务
- 利用代码控制jenkins任务
接口自动化测试持续集成
- 接口自动化测试项目介绍
测试接口应用:
接口功能:获取对于城市的天气预报
源码:java
协议:http
请求方法:get
自动化测试运行框架:TestNG
项目框架:Maven
开发工具:
源码位置:
- 接口自动化测试项目源码讲解
1.py
程序代码
2.src
test
3.pom.xml
- allure report
先在运行环境安装allure
在jenkins安装allure插件
pom.xml中引入依赖
构建过程生成report
UI自动化测试持续集成
用例业务内容:测试百度首页搜索关键词之后,跳转页面标题的正确性。
- nosetests
http://blog.sina.com.cn/s/blog_4c7cc7fd0102xfb1.html
https://nose.readthedocs.io/en/latest/man.html
Jenkins Pipeline
借用Unix中的Pipeline思路,一种高内聚低耦合的工具。
不同的构建阶段独立显示,展示清晰。
- 安装插件
https://blog.csdn.net/ojwftded/article/details/86521801


- 方式1: 通过jenkins图形界面进行jenkinsfile编辑
选择sricpt
helo world演示
- Pipeline代码放在git源码库
选择SCM
先把代码下载下来,再运行
https://blog.csdn.net/liumiaocn/article/details/86344537
Jenkinsfile语法
Pipeline最基本的部分是“step”。基本上,step告诉Jenkins 要做什么,并且作为Declarative Pipeline和Scripted Pipeline语法的基本构建块。
Pipeline支持两种语法:Declarative Pipeline(在Pipeline 2.5中引入,结构化方式)和Scripted Pipeline,两者都支持建立连续输送的Pipeline。
Declarative Pipeline
https://www.cnblogs.com/YatHo/p/7856556.html
Scripted Pipeline
语法树
流程控制if else
流程控制try catch
代码中应用配置工具,如jdk、maven
Declarative pipeline和Scripted pipeline的比较
共同点:
两者都是pipeline代码的持久实现,都能够使用pipeline内置的插件或者插件提供的steps,两者都可以利用共享库扩展。
区别:
两者不同之处在于语法和灵活性。Declarative pipeline对用户来说,语法更严格,有固定的组织结构,更容易生成代码段,使其成为用户更理想的选择。但是Scripted pipeline更加灵活,因为Groovy本身只能对结构和语法进行限制,对于更复杂的pipeline来说,用户可以根据自己的业务进行灵活的实现和扩展。
Blue Ocean介绍
- 安装插件
Jenkins->系统管理->插件管理,在“可选插件”中搜索“Blue Ocean”

选中Blue Ocean,然后点击“直接安装”,等待安装完成
安装完成后回到首页会发现最左侧的列表中多了一个图标:

Jenkinsfile实战Docker应用实战演练
拉取源代码-maven打包-清理Docker环境-生成包含新包的Docker镜像-启动新的Docker镜像
Jenkins持续交付实战演练的更多相关文章
- Asp.Net Core&Jenkins持续交付到Windows Server
对于Linux平台上的持续集成和持续交付可以使用Docker快捷的完成任务,但是Windows Server下却不好使用,一般来讲,windows Server下最简单的发布方式是直接手动打包发布或是 ...
- 使用 Docker 和 Jenkins 持续交付(新书免费获取!)
今天没有长篇大论,给大家推荐一本新书,书名:Continuous Delivery with Docker and Jenkins.封面如图所示: 以下内容纯属凑字数 本书结合了 Jenkins 和 ...
- 还在手动部署jar包吗?快速掌握Jenkins安装,教你使用Jenkins实现持续交付
Jenkins Jenkins: 开源软件项目 基于Java开发的一种持续集成工具 用于监控持续重复的工作 旨在提供一个开放易用的软件平台, 便于软件的持续集成 基于Docker安装Jenkins 与 ...
- SonarQube+Jenkins,搭建持续交付平台
前言 Kurt Bittner曾说过,如果敏捷仅仅只是开始,那持续交付就是头条! "If Agile Was the Opening Act, Continuous Delivery is ...
- Jenkins自动化部署-----持续交付【转】
感谢之前带领过我的leader,让我能够知道什么是好的开发方法. 在很早之前就接触过敏捷开发.什么是敏捷开发,简单来说就是让软件可靠地,快速地发布出来的一种开发方法和技巧. 而敏捷开发中有许多的实践, ...
- [持续交付实践] Jenkins Pipeline 高可用设计方法
前言 这篇写好一段时间了,一直也没发布上来,今天稍微整理下了交下作业,部分内容偷懒引用了一些别人的内容.使用Jenkins做持续集成/持续交付,当业务达到一定规模的时候,Jenkins本身就很容易成为 ...
- [持续交付实践] Jenkins 中国用户大会参会见闻
前言 上周日在上海召开了Jenkins中国用户大会(Jenkins User Confluence China),这应该是Jenkins在中国第一次举办吧.Jenkins的创始人Kohsuke Kaw ...
- 基于Jenkins的持续交付方案
简介 Jenkins是开源的自动化编译.测试.部署的Web应用程序一个持续性交付应用 Jenkins的优势 1.Jenkins在国内的开发者中认可度较高,很多创业公司的自建持续交付系统的选择大部分都是 ...
- 利用jenkins和docker实现持续交付
利用jenkins和docker实现持续交付 一.什么是持续交付 让软件产品的产出过程在一个短周期内完成,以保证软件可以稳定.持续的保持在随时可以发布的状况.它的目标在于让软件的构建.测试与发布变得更 ...
随机推荐
- 带你梳理Jetty自定义ProxyServlet实现反向代理服务
摘要:最近要做一个将K8s中的某组件UI通过反向代理映射到自定义规则的链接地址上,提供给用户访问的需求.所以顺便研究了一下Jetty的ProxyServlet. 本文分享自华为云社区<Jetty ...
- Mysql中的Join详解
一.Simple Nested-Loop Join(简单的嵌套循环连接) 简单来说嵌套循环连接算法就是一个双层for 循环 ,通过循环外层表的行数据,逐个与内层表的所有行数据进行比较来获取结果,当执行 ...
- Linux部署PgSQL数据库
1.安装: yum install postgresql-server -y postgresql-setup initdb cd /var/lib/pgsql/data 2.进入 /var/lib/ ...
- SQL Server中的distinct(不允许重复)
参考网址:https://blog.csdn.net/tswc_byy/article/details/81835023 一.建库和建表create database scortuse scortcr ...
- vue中v-show和v-if在显示和隐藏元素上的区别
v-show将元素隐藏是在dom节点上加style='display:none' v-if是直接将元素完全去掉 拿v-show示例,(v-if 也是一样,把下面的代码中v-show替换成v-if即可运 ...
- 初识cookie
package day01.cookies; import java.io.IOException; import java.net.URLDecoder; import java.net.URLEn ...
- git 使用代理出现 LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to github.com:443 错误
删除代理即可. 具体操作如下: 1. git config --global --list 查看git配置 发现其中有 http.https.XXXXXX.proxy 和 https.http ...
- jdbc操作mysql(三):利用注解封装
案例五:利用注解封装 重复步骤 我们使用jdbc操作mysql时发现,操作不同表中数据,所写的方法基本相同:比如我们根据id向用户表添加数据,根据id删除商品表的数据,或者查询所有数据并用list集合 ...
- .Net Core配置Configuration源码研究
最近又研究了一下.NetCore配置选项的源码实现,又学习到了不少东西.这篇文章先写一下IConfiguration的学习成果,Options的后面补上 核心类 ConfigurationBuilde ...
- vue2.0与3.0中的provide和inject 用法
1.provide/inject有什么用? 常用的父子组件通信方式都是父组件绑定要传递给子组件的数据,子组件通过props属性接收,一旦组件层级变多时,采用这种方式一级一级传递值非常麻烦,而且代码可读 ...