【09】Jenkins:Pipeline 补充
写在前面的话
我们在使用普通的构建任务的时候使用了 Sonar 做代码质量管理,也使用了 Publish Over SSH 插件中更新上线,但是我们在 Pipeline 怎么使用他们呢。
如果你没有查看之前的 Sonar 章节,建议倒回去专门看一遍:
否则有些概念无法理解!
Pipeline 中使用 Sonar
我们操作的前提都是以及安装了 Sonar,具体怎么安装可以参考前面的章节。
1. Sonar 中配置 Token:

生成 Token,注意该 Token 只显示一次,注意保存:

2. 在 Jenkins 系统管理 --> 系统设置中配置 Sonar,如果你跟着前面章节做,这里应该是配置了的。

3. 新建 Pipeline 任务:

3. 接下来便是操作的重点,配置 Pipeline:
在这之前,我们需要知道几个重点,Sonar 在代码扫描的时候会用到:
【1】Sonar 扫描工具 Sonar Scaner:系统管理 --> 全局工具配置

【2】Sonar 的认证:系统管理 --> 系统设置

当然,这两个配置我们都可以自动生成语法来形成,但是我们得需要知道他的原理,我们后续在 Pipeline 中使用 Sonar 其实就是注意依赖于这两个。
在流水线语法中,我们先生成 Sonar Home 的路径:

生成 Sonar 认证的语法:

通过 withSonarEnv 通过对应的 Token 能够生成认证语法。
此时,我们就可以编写整个 Pipeline 中使用 Sonar 的方法:
这是最终 Sonar Pipeline 的基本写法:
node {
stage("拉取代码"){
echo 'STEP 1:Clone code'
git credentialsId: 'xxxx', url: 'http://192.168.10.199:8041/xxxx.git'
}
stage('代码质量检测') {
echo 'STEP 2:Sonar code check'
// 获取 Sonar Scaner 家目录并赋值给变量
def SonarScannerHome = tool name: 'xxxx'
withSonarQubeEnv(credentialsId: 'xxxx') {
sh "${SonarScannerHome}/bin/sonar-scanner -X "+
"-Dsonar.host.url=http://192.168.10.202:9000 " +
"-Dsonar.language=java " +
"-Dsonar.projectKey=Pipeline-Sonar-Test " +
"-Dsonar.projectName=Pipeline-Sonar-Test " +
"-Dsonar.sources=./ " +
"-Dsonar.sourceEncoding=UTF-8 " +
"-Dsonar.java.binaries=./ "
}
}
}
红色 xxxx 部分需要替换成为自己生成的。
当然,我们其实可以将验证直接写为 withSonarQubeEnv('Sonar') ,Sonar 是我们添加验证时候上图中的 Name 属性。
至于后面 Sonar 扫描的语法,其实就是我们之前普通任务扫描时候的参数。具体含义可以回去看之前的章节。
4. 查看构建结果:

Sonar 中查看:

至此,Pipeline 中使用 Sonar 到这里完成。
Pipeline 中使用 Publish Over SSH
在新版本的 Publish Over SSH 插件中已经支持了 Pipeline,这意味着,我们在语法生成器中可以直接生成:

最终生成的语法如下:

配置示例:
node {
stage("拉取代码"){
echo 'STEP 1:clone code'
git credentialsId: 'xxxx', url: 'http://192.168.10.199:8041/xxxx.git'
}
stage("打包代码"){
echo 'STEP 2:code package'
withEnv(['JAVA_HOME=/data/jdk7']) {
sh '/data/maven/bin/mvn -e clean package -U -Dmaven.test.skip=true -Ptest'
}
}
stage("上线发布"){
echo 'STEP 3:deploy package'
sshPublisher(publishers: xxxx)
}
}
红色 xxxx 部分为自己环境的配置,构建后在 Blue Ocean 中查看输出:

Pipeline 中触发另外一个 Job
在语法生成器中,我们可以选择 build a job 进行添加:

小结
当然还有一些其他用法,我这里只列举了一下常用的用法,至于其他的用法,后续用到的时候再来增加。
【09】Jenkins:Pipeline 补充的更多相关文章
- Jenkins pipeline:pipeline 使用之语法详解
一.引言 Jenkins 2.0的到来,pipline进入了视野,jenkins2.0的核心特性. 也是最适合持续交付的feature. 简单的来说,就是把Jenkins1.0版本中,Project中 ...
- [持续交付实践] Jenkins Pipeline 高可用设计方法
前言 这篇写好一段时间了,一直也没发布上来,今天稍微整理下了交下作业,部分内容偷懒引用了一些别人的内容.使用Jenkins做持续集成/持续交付,当业务达到一定规模的时候,Jenkins本身就很容易成为 ...
- 转~Jenkins pipeline:pipeline 使用之语法详解
一.引言 Jenkins 2.0的到来,pipline进入了视野,jenkins2.0的核心特性. 也是最适合持续交付的feature. 简单的来说,就是把Jenkins1.0版本中,Project中 ...
- Kubernetes笔记(三):Gitlab+Jenkins Pipeline+Docker+k8s+Helm自动化部署实践(干货分享!)
通过前面两篇文章,我们已经有了一个"嗷嗷待哺"的K8s集群环境,也对相关的概念与组件有了一个基本了解(前期对概念有个印象即可,因为只有实践了才能对其有深入理解,所谓"纸上 ...
- 在容器中运行 Jenkins pipeline 任务
持续集成中的 pipeline 技术和 docker 都是当前正在发展的主流方向,当然把它们结合起来在 CI/CD 过程中发挥出更强大的威力也是大家共同的目标.本文将介绍如何在 Jenkins pip ...
- 基于Jenkins Pipeline的ASP.NET Core持续集成实践
最近在公司实践持续集成,使用到了Jenkins的Pipeline来提高团队基于ASP.NET Core API服务的集成与部署效率,因此这里总结一下. 一.关于持续集成与Jenkins Pipelin ...
- Jenkins pipeline job 根据参数动态获取触发事件的分支
此文需要有Jenkins pipeline job 的简单使用经验 场景 我们日常的测试函数, 一般是不能仅仅在本地跑的,还需要一个公共的跑测试的环境,作为合并新的PR的依据. 如果用Jenkins ...
- Jenkins pipeline:pipeline 语法详解
jenkins pipeline 总体介绍 pipeline 是一套运行于jenkins上的工作流框架,将原本独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂流程编排与可视化. ...
- Jenkins pipeline shared library
Jenkinsfile https://jenkins.io/doc/book/pipeline/jenkinsfile/ Jenkins Pipeline is a suite of plugins ...
- Jenkins pipeline概念理解
1.Jenkins Pipeline总体介绍 Pipeline,简而言之,就是一台运行于Jenkins上的工作流框架,将原本独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂流程 ...
随机推荐
- Unix/Linux/Mac os下 文件互传
说起文件互传,就不得不提命令scp. 他是Secure copy的缩写,使用ssh连接和加密方式, 如果两台机器之间配置了ssh免密登录, 那在使用scp的时候可以不用输入密码. scp 和 cp ...
- 【前端_css】RGB 常用颜色列表
转载博客:RGB 常用颜色列表
- Linux 初识Libevent网络库
初识Libevent libevent是用c写的高并发网络io库,只要有文件描述符,就都可使用libevent. libevent使用回调函数(callback) . 有了libevent,网络编程我 ...
- linux 通过wol远程开机【转】
转自:http://yangbajing.blog.chinaunix.net/uid-10480699-id-5179860.html 今天发现个可以对linux服务器进行远程开机的软件-wakeo ...
- Jmeter接口测试,变量是订单和订单明细,怎么一起传?
", "price": 12.0, "orderDate": "2019-07-05 10:40:00", "order ...
- 【POJ3784】Running Median
Running Median Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 3406 Accepted: 1576 De ...
- Linux终端执行shell脚本,提示权限不够
在学习dubbo过程中,上传自己写的脚本,执行的时候提示“权限不够”,从网上了解到是因为没有为脚本赋权限 解决方法是使用chmod命令为shell脚本赋予权限 chmod 777 ./service- ...
- JDOJ 1139 水仙花数
JDOJ 1139: 水仙花数 https://neooj.com/oldoj/problem.php?id=1139 Description 打印出所有"水仙花数",所谓&quo ...
- Excel 日期和时间函数
1.TODAY和NOW函数 today和now函数 日期可以进行加减运算 2.提取日期和时间的函数 公式=Year() 公式=month() 公式=day() 公式=hour() 公式=minute( ...
- MySQL实战45讲学习笔记:第十一讲
一.如何在邮箱这样的字段上建立合理的索引 现在,几乎所有的系统都支持邮箱登录,如何在邮箱这样的字段上建立合理的索引,是我们今天要讨论的问题. 假设,你现在维护一个支持邮箱登录的系统,用户表是这么定义的 ...