【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上的工作流框架,将原本独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂流程 ...
随机推荐
- 网页跳H5实例
public static void CheckAgent() { string redirect = string.Empty; string agent = HttpContext.Current ...
- PL/SQL Developer报错 ORA-12154:tns:could not resolve the connect identifier specified
PL/SQL Developer使用预先配置数据库报错 ORA-12154:tns:could not resolve the connect identifier specified. 情况描述:我 ...
- supervisor 管理应用程序
supervisor 进程管理 主要包含后台进程 supervisord 和控制台 supervisorctl 两个程序 supervisor # 官方文档 http://www.supervisor ...
- [Linux] nginx的try_files指令实现隐藏index.php的重写
1.nginx的try_files指令 ,核心功能是替代rewrite,并且比rewrite更强大的是可以按顺序查找文件是否存在,如果文件都找不到才会执行最后的重定向解决的问题是,如果一个网站的部署是 ...
- Rust第一次综合练习
读取文件哈. 但分成了lib.rs和main.rs. 按文档上不行,自己胡乱的调通,但原理不熟悉. 里面的套路代码还是蛮多的. src/lib.rs use std::io::Read; use st ...
- 09事件传递参数-封装网络请求api get和post合并整合在一起
1==>通过点击事件进行传递参数 <view bindtap="goEdution" data-index="5">西南大学</view ...
- JS高阶---显式原型和隐式原型
前言: 1.函数对象即函数的prototype原型属性指向原型对象,在创建函数时便存在,默认为空Object 2.实例对象的__proto__隐式原型在实例化创建实例时产生,值等于构造函数的显式pro ...
- 201871010126 王亚涛 《面向对象程序设计(java)》 第6-7周学习总结
项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p ...
- WIN10安装64位JDK10.0.2详细完整教程(图文)
1.下载JDK 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html 1)如下图,点击红色箭头处: 2)如下图 ...
- HTTPS各版本安全策略HTTPS1_1_TLS1_0、HTTPS2_TLS1_0、HTTPS2_TLS1_2
来自阿里云 https://help.aliyun.com/document_detail/115169.html HTTPS安全策略 更新时间:2019-04-26 14:49:12 分组 ...