写在前面的话

我们在使用普通的构建任务的时候使用了 Sonar 做代码质量管理,也使用了 Publish Over SSH 插件中更新上线,但是我们在 Pipeline 怎么使用他们呢。

如果你没有查看之前的 Sonar 章节,建议倒回去专门看一遍:

https://www.cnblogs.com/Dy1an/p/11198822.html

否则有些概念无法理解!

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 的基本写法:

  1. node {
  2. stage("拉取代码"){
  3. echo 'STEP 1:Clone code'
  4. git credentialsId: 'xxxx', url: 'http://192.168.10.199:8041/xxxx.git'
  5. }
  6. stage('代码质量检测') {
  7. echo 'STEP 2:Sonar code check'
  8. // 获取 Sonar Scaner 家目录并赋值给变量
  9. def SonarScannerHome = tool name: 'xxxx'
  10. withSonarQubeEnv(credentialsId: 'xxxx') {
  11. sh "${SonarScannerHome}/bin/sonar-scanner -X "+
  12. "-Dsonar.host.url=http://192.168.10.202:9000 " +
  13. "-Dsonar.language=java " +
  14. "-Dsonar.projectKey=Pipeline-Sonar-Test " +
  15. "-Dsonar.projectName=Pipeline-Sonar-Test " +
  16. "-Dsonar.sources=./ " +
  17. "-Dsonar.sourceEncoding=UTF-8 " +
  18. "-Dsonar.java.binaries=./ "
  19. }
  20. }
  21. }

红色 xxxx 部分需要替换成为自己生成的。

当然,我们其实可以将验证直接写为 withSonarQubeEnv('Sonar') ,Sonar 是我们添加验证时候上图中的 Name 属性。

至于后面 Sonar 扫描的语法,其实就是我们之前普通任务扫描时候的参数。具体含义可以回去看之前的章节。

4. 查看构建结果:

Sonar 中查看:

至此,Pipeline 中使用 Sonar 到这里完成。

Pipeline 中使用 Publish Over SSH

在新版本的 Publish Over SSH 插件中已经支持了 Pipeline,这意味着,我们在语法生成器中可以直接生成:

最终生成的语法如下:

配置示例:

  1. node {
  2. stage("拉取代码"){
  3. echo 'STEP 1:clone code'
  4. git credentialsId: 'xxxx', url: 'http://192.168.10.199:8041/xxxx.git'
  5. }
  6. stage("打包代码"){
  7. echo 'STEP 2:code package'
  8. withEnv(['JAVA_HOME=/data/jdk7']) {
  9. sh '/data/maven/bin/mvn -e clean package -U -Dmaven.test.skip=true -Ptest'
  10. }
  11. }
  12. stage("上线发布"){
  13. echo 'STEP 3:deploy package'
  14. sshPublisher(publishers: xxxx)
  15. }
  16. }

红色 xxxx 部分为自己环境的配置,构建后在 Blue Ocean 中查看输出:

Pipeline 中触发另外一个 Job

在语法生成器中,我们可以选择 build a job 进行添加:

小结

当然还有一些其他用法,我这里只列举了一下常用的用法,至于其他的用法,后续用到的时候再来增加。

【09】Jenkins:Pipeline 补充的更多相关文章

  1. Jenkins pipeline:pipeline 使用之语法详解

    一.引言 Jenkins 2.0的到来,pipline进入了视野,jenkins2.0的核心特性. 也是最适合持续交付的feature. 简单的来说,就是把Jenkins1.0版本中,Project中 ...

  2. [持续交付实践] Jenkins Pipeline 高可用设计方法

    前言 这篇写好一段时间了,一直也没发布上来,今天稍微整理下了交下作业,部分内容偷懒引用了一些别人的内容.使用Jenkins做持续集成/持续交付,当业务达到一定规模的时候,Jenkins本身就很容易成为 ...

  3. 转~Jenkins pipeline:pipeline 使用之语法详解

    一.引言 Jenkins 2.0的到来,pipline进入了视野,jenkins2.0的核心特性. 也是最适合持续交付的feature. 简单的来说,就是把Jenkins1.0版本中,Project中 ...

  4. Kubernetes笔记(三):Gitlab+Jenkins Pipeline+Docker+k8s+Helm自动化部署实践(干货分享!)

    通过前面两篇文章,我们已经有了一个"嗷嗷待哺"的K8s集群环境,也对相关的概念与组件有了一个基本了解(前期对概念有个印象即可,因为只有实践了才能对其有深入理解,所谓"纸上 ...

  5. 在容器中运行 Jenkins pipeline 任务

    持续集成中的 pipeline 技术和 docker 都是当前正在发展的主流方向,当然把它们结合起来在 CI/CD 过程中发挥出更强大的威力也是大家共同的目标.本文将介绍如何在 Jenkins pip ...

  6. 基于Jenkins Pipeline的ASP.NET Core持续集成实践

    最近在公司实践持续集成,使用到了Jenkins的Pipeline来提高团队基于ASP.NET Core API服务的集成与部署效率,因此这里总结一下. 一.关于持续集成与Jenkins Pipelin ...

  7. Jenkins pipeline job 根据参数动态获取触发事件的分支

    此文需要有Jenkins pipeline job 的简单使用经验 场景 我们日常的测试函数, 一般是不能仅仅在本地跑的,还需要一个公共的跑测试的环境,作为合并新的PR的依据. 如果用Jenkins ...

  8. Jenkins pipeline:pipeline 语法详解

    jenkins  pipeline 总体介绍 pipeline 是一套运行于jenkins上的工作流框架,将原本独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂流程编排与可视化. ...

  9. Jenkins pipeline shared library

    Jenkinsfile https://jenkins.io/doc/book/pipeline/jenkinsfile/ Jenkins Pipeline is a suite of plugins ...

  10. Jenkins pipeline概念理解

      1.Jenkins Pipeline总体介绍 Pipeline,简而言之,就是一台运行于Jenkins上的工作流框架,将原本独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂流程 ...

随机推荐

  1. SQL的简单函数(极客时间)

    SQL的函数 函数就是将我们经常使用的代码封装起来, 需要的时候直接调用, 提高代码效率和可维护性. SQL函数一般是在数据上执行, 可以方便地转换和处理数据. 常用的SQL函数 SQL提供了一些常用 ...

  2. 白话SCRUM 之二:product backlog

    在SCRUM方法中明确要求了3个文档: 1 product backlog 2sprint backlog 3 burn-down chart Product backlog 中列举了本项目应该实现的 ...

  3. Python乘法口诀表

    乘法口诀表 print("乘法口诀表") for i in range(1,10):     for j in range(1,i+1):         print(str(i) ...

  4. Linux编译安装相关命令

    1.  configuer configure  是一个shell脚本,用来检测安装平台是否符合要求,并通过配置参数生成makefile文件 2. make  (make all 的简写) 编译命令, ...

  5. 系统级性能分析工具 — Perf【转】

    转自:https://blog.csdn.net/zhangskd/article/details/37902159 版权声明:本文为博主原创文章,转载请注明出处. https://blog.csdn ...

  6. 快速、优雅的前端IDE之H-builder-X

    为什么介绍的是HBuidler-X而不是Hbuilder   HX是全新的一个软件,它抛弃了eclipse架构,使用C++为基础架构.HX目前还不能完全替代HBuilder.但在markdown记事的 ...

  7. Ubuntu下部署Portainer管理docker

    在上一篇文章中,我们部署了Shipyard来管理docker集群,总体比较简单,而且Shipyard界面风格很简约,还是比较喜欢的,但是正如提出的node节点无法显示bug,以及该项目早已停止维护,让 ...

  8. Go语言goroutine调度器初始化(12)

    本文是<Go语言调度器源代码情景分析>系列的第12篇,也是第二章的第2小节. 本章将以下面这个简单的Hello World程序为例,通过跟踪其从启动到退出这一完整的运行流程来分析Go语言调 ...

  9. PoI 3.17 已过时代码对比

    PoI 3.17 已过时代码对比颜色定义变化旧版本 : HSSFColor.BLACK.index新版本 : IndexedColors.BLACK.index 获取单元格格式旧版本 : cell.g ...

  10. opencv使用cv::Mat_和push_back

    cv::Mat left_image; right_image.push_back(cv::Mat((cv::Mat_<float>(1, 3) << ori.x, ori.y ...