【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上的工作流框架,将原本独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂流程 ...
随机推荐
- SQL的简单函数(极客时间)
SQL的函数 函数就是将我们经常使用的代码封装起来, 需要的时候直接调用, 提高代码效率和可维护性. SQL函数一般是在数据上执行, 可以方便地转换和处理数据. 常用的SQL函数 SQL提供了一些常用 ...
- 白话SCRUM 之二:product backlog
在SCRUM方法中明确要求了3个文档: 1 product backlog 2sprint backlog 3 burn-down chart Product backlog 中列举了本项目应该实现的 ...
- Python乘法口诀表
乘法口诀表 print("乘法口诀表") for i in range(1,10): for j in range(1,i+1): print(str(i) ...
- Linux编译安装相关命令
1. configuer configure 是一个shell脚本,用来检测安装平台是否符合要求,并通过配置参数生成makefile文件 2. make (make all 的简写) 编译命令, ...
- 系统级性能分析工具 — Perf【转】
转自:https://blog.csdn.net/zhangskd/article/details/37902159 版权声明:本文为博主原创文章,转载请注明出处. https://blog.csdn ...
- 快速、优雅的前端IDE之H-builder-X
为什么介绍的是HBuidler-X而不是Hbuilder HX是全新的一个软件,它抛弃了eclipse架构,使用C++为基础架构.HX目前还不能完全替代HBuilder.但在markdown记事的 ...
- Ubuntu下部署Portainer管理docker
在上一篇文章中,我们部署了Shipyard来管理docker集群,总体比较简单,而且Shipyard界面风格很简约,还是比较喜欢的,但是正如提出的node节点无法显示bug,以及该项目早已停止维护,让 ...
- Go语言goroutine调度器初始化(12)
本文是<Go语言调度器源代码情景分析>系列的第12篇,也是第二章的第2小节. 本章将以下面这个简单的Hello World程序为例,通过跟踪其从启动到退出这一完整的运行流程来分析Go语言调 ...
- PoI 3.17 已过时代码对比
PoI 3.17 已过时代码对比颜色定义变化旧版本 : HSSFColor.BLACK.index新版本 : IndexedColors.BLACK.index 获取单元格格式旧版本 : cell.g ...
- opencv使用cv::Mat_和push_back
cv::Mat left_image; right_image.push_back(cv::Mat((cv::Mat_<float>(1, 3) << ori.x, ori.y ...