企业DevOps之路:Jenkins 流水线
1. Pipeline 概述
Pipeline 即流水线,是 jenkins2.X 的新特性,是 jenkins 官方推荐使用的持续集成方案。与传统的自由风格项目不同,它是通过 jenkins DSL 编写代码来实现。相比于之前用户只能通过 Web 界面进行配置的方式来定义 Jenkins 任务,现在通过使用 jenkins DSL 和 Groovy 语言编写程序,用户可以定义流水线并执行各种任务。
Jenkins pipeline包含两类元素,分别是stages和steps。如图:

step 代表单一的操作;告诉 Jenkins 做什么。比如,代码从仓库检出代码,执行脚本
stage 等于一系列 step 的组合,通常来表示 Jenkins pipeline 进程的可示化。例如,Build、Test、Deploy等
更详细的资料请查看官网
https://www.jenkins.io/doc/book/pipeline/
Pipeline 有两种语法,分别是声明式和脚本式
声明式语法
pipeline {
agent any
stages {
stage('Build') {
steps {
// TODO
}
}
stage('Test') {
steps {
// TODO
}
}
stage('Deploy') {
steps {
// TODO
}
}
}
}
agent any:表示任意一个可用代理节点上执行该Pipeline
stage('Build'):定义阶段
steps {}:阶段执行的步骤
脚本式语法
node {
stage('Build') {
// TODO
}
stage('Test') {
// TODO
}
stage('Deploy') {
// TODO
}
}
node:表示任意一个可用代理节点上执行该Pipeline
stage('Build') {}:定义阶段。在脚本式语法中 stage 代码块是可选的;不过明确写上的话可以让每个阶段的任务更清晰
3. 安装 Jenkins Pipeline 插件
安装 Pipeline 和 Pipeline Maven Integration 插件
Manage Jenkins -> Manage Plugins

安装后,重启 Tomcat。
3. 流水线编译与部署
创建流水线任务
新建Item

配置流水线任务
初学者对于 Pipeline 的脚本肯定无从入手的;但是 Pipeline 提供了一个非常有用的帮助文档。

http://127.0.0.1:8080/jenkins/job/Pipeline_maven/pipeline-syntax/
Pipeline 脚本有两种编写模式
Pipeline 脚本
Jenkinsfile 文件

这里选择 Pipeline script
3.1 克隆代码
git credentialsId: 'c8eea0cc-24e7-4eb1-a2dd-42fc1066f35a', url: 'https://gitee.com/hjj520/ruoyi-patrol.git'
3.2 编译
bat 'mvn clean install'
在 Windows 操作系统 Jenkins Pipeline 中要使用bat来运行 Windows 命令;而 Linux 操作系统则需要使用sh来运行 Shell 命令。
3.3 上传 jar包
bat 'C:/jenkins/pscp.exe -r -l root -pw root %WORKSPACE%/ruoyi-admin/target/ruoyi-admin.jar 192.168.10.8:/home/huangjinjin/software/springdocker'
图片
完整 Pipeline 脚本
pipeline {
agent any
stages {
stage('git clone') {
steps {
git credentialsId: 'c8eea0cc-24e7-4eb1-a2dd-42fc1066f35a', url: 'https://gitee.com/hjj520/ruoyi-patrol.git'
}
}
stage('complie') {
steps {
bat 'mvn clean install'
}
}
stage('upload') {
steps {
bat 'C:/jenkins/pscp.exe -r -l root -pw root %WORKSPACE%/ruoyi-admin/target/ruoyi-admin.jar 192.168.10.8:/home/huangjinjin/software/springdocker'
}
}
}
}
其他步骤可以自行添加,例如,测试、部署等。
企业DevOps之路:Jenkins 流水线的更多相关文章
- 03 持续集成和部署/基础设施 - DevOps之路
02 持续集成和部署/基础设施 - DevOps之路 文章Github地址,欢迎start:https://github.com/li-keli/DevOps-WiKi 服务的持续集成和部署这里有两套 ...
- 从零开始针对 .NET 应用的 DevOps 运营实践 - Jenkins & SonarQube 安装配置
一.Overview 继续 DevOps 实施的相关内容,在上一篇的博客中,完成了对于工具链中使用到的软件所需的运行环境的配置,在这一篇的博客中,将聚焦于我们使用到的两个主要的软件:Jenkins 与 ...
- 02 基础设施/Gitlab - DevOps之路
基础设施/Gitlab - DevOps之路 文章Github地址,欢迎start:https://github.com/li-keli/DevOps-WiKi 源代码管理器选用Gitlab,新版(2 ...
- 06 Nexus仓储/基础设施 - DevOps之路
06 Nexus仓储/基础设施 - DevOps之路 文章Github地址,欢迎start:https://github.com/li-keli/DevOps-WiKi Nexus仓储官网简介: Th ...
- 05 Docker集群/基础设施 - DevOps之路
05 Docker集群/基础设施 - DevOps之路 文章Github地址,欢迎start:https://github.com/li-keli/DevOps-WiKi Docker的集群目前主流的 ...
- 07 YAPI/基础设施 - DevOps之路
07 YAPI/基础设施 - DevOps之路 文章Github地址,欢迎start:https://github.com/li-keli/DevOps-WiKi 简介 YApi 是一个可本地部署的. ...
- 04 Docker/基础设施 - DevOps之路
04 Docker/基础设施 - DevOps之路 文章Github地址,欢迎start:https://github.com/li-keli/DevOps-WiKi Docker是一个开源的引擎,可 ...
- 01 前言/基础设施 - DevOps之路
01 前言/基础设施 - DevOps之路 文章Github地址,欢迎start:https://github.com/li-keli/DevOps-WiKi 简介 基础架构采用DevOps设计思想, ...
- Jenkins持续集成企业实战系列之Jenkins插件下载及邮件配置-----05
注:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任. 最初接触Jenkins也是由于公司需求,根据公司需求Java代码项目升级的.(公司是 ...
随机推荐
- 微信Native支付
微信Native支付对接(扫码) 由于有业务需求对接了微信和paypal支付,这边做个记录 微信支付开发文档:https://pay.weixin.qq.com/wiki/doc/api/index. ...
- python+pytest接口自动化(11)-测试函数、测试类/测试方法的封装
前言 在python+pytest 接口自动化系列中,我们之前的文章基本都没有将代码进行封装,但实际编写自动化测试脚本中,我们都需要将测试代码进行封装,才能被测试框架识别执行. 例如单个接口的请求代码 ...
- Android 12(S) 图形显示系统 - 解读Gralloc架构及GraphicBuffer创建/传递/释放(十四)
必读: Android 12(S) 图形显示系统 - 开篇 一.前言 在前面的文章中,已经出现过 GraphicBuffer 的身影,GraphicBuffer 是Android图形显示系统中的一个重 ...
- TypeSciprt webpack配置
初始化 初始化项目 npm init -y 安装依赖 npm install ... --save-dev 依赖包列表 名称 作用 webpack 构建工具webpack webpack-cli we ...
- 解决Flash CS6初始化字体就自动退出
系统win7 问题始于安装了同事的字体,启动Flash CS6时界面上显示开始初始化字体...然后 就自动退出了 尝试过进入pe系统删除字体,可是删除不了 网上搜索找到了这一个删除字体的工具FontF ...
- React算法复杂度优化?
react树对比是按照层级去对比的, 他会给树编号0,1,2,3,4.... 然后相同的编号进行比较.所以复杂度是n,这个好理解. 关键是传统diff的复杂度是怎么算的?传统的diff需要出了上面的比 ...
- ServletConfig对象和ServletContext对象有什么区别?
一个Servlet对应有一个ServletConfig对象,可以用来读取初始化参数. 一个webapp对应一个ServletContext对象. ServletContext对象获取初始化定义的参数. ...
- Dubbo 服务降级,失败重试怎么做?
可以通过 dubbo:reference 中设置 mock="return null".mock 的值也可以修 改为 true,然后再跟接口同一个路径下实现一个 Mock 类,命名 ...
- IOC——Spring的bean的管理(注解方式)
注解(简单解释) 1.代码里面特殊标记,使用注解可以完成一定的功能 2.注解写法 @注解名称(属性名称=属性值) 3.注解使用在类上面,方法上面和属性上面 注意:注解方式不能完全替代配置文件方式 Sp ...
- Effective Java —— try-with-resources 优先于 try-finally
本文参考 本篇文章参考自<Effective Java>第三版第九条"Prefer try-with-resources to try-finally" The cod ...