写在前面的话

我们在使用普通的构建任务的时候使用了 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 的基本写法:

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 补充的更多相关文章

  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. Retrofit+Okhttp+RxJava打造网络请求之Post

    之前一直在准备Android培训的事情,所幸的是终于完事啦,在这过程中真的发现了自身无论从沟通能力还是技术能力上很多的不足,就用一句 路漫漫其修远兮,吾将上下而求索 来勉励自己吧.之前也在项目上用上O ...

  2. [b0012] Hadoop 版hello word mapreduce wordcount 运行(二)

    目的: 学习Hadoop mapreduce 开发环境eclipse windows下的搭建 环境: Winows 7 64 eclipse 直接连接hadoop运行的环境已经搭建好,结果输出到ecl ...

  3. 编译器与Debug的传奇:Grace Murray Hopper小传

    摘要: 改变世界的程序员前辈. 来自:http://www.road2stat.com/cn/network_3c/grace_murray_hopper.html 这两天读<UNIX痛恨者手册 ...

  4. day 34 作业

    作业 mysql> create table tea( -> id int unsigned auto_increment primary key, -> name varchar( ...

  5. Windows远程连接其他主机

    一.远程主机开启允许被远程连接 1. 右键计算机 --> 属性 --> 远程设置 2. 默认是不允许远程桌面的, 在这里我们勾选开启 3. 远程主机设置完成 二.客户机连接设置 1. wi ...

  6. ezdml设计数据库

    数据结构和设计的介绍 ezdml软件:https://www.lanzous.com/i6ew2pe 1 用ezdml设计数据表然后导出到mysql数据库中 点击生成模型 2 选择库 3 点击开始生成

  7. Centos7服务器搭建网络家园和论坛

    环境:Centos7 工具:mysql,php,httpd 目的:熟练掌握httpd服务器搭建和个服务器之间的配合. 有兴趣的朋友可以来实践一下,我会提供各种源码进行搭建. 网络家园和论坛源码:htt ...

  8. 构建Apache Web服务器

    Apache 是世界使用排名第一的 Web 服务器软件.它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的 Web 服务器端软件之一.Apache工作模式有多种,其 ...

  9. 安装教程-VMware 12 安装Ubuntu 19.04 桌面版

    VMware 12 安装Ubuntu 19.04 桌面版 1.实验描述 在虚拟机中,手动安装 Ubuntu 19.04 操作系统,为学习 Linux 桌面版提供平台,因此,有的参数有些差异,请勿较真. ...

  10. 笔记5:Django知识一

    Django 1 MVC MVC的核心思想就是解耦. 2 Django介绍 2.1 MVT Django遵循MVC思想,其称为MVT.其中: M: Model模型:和MVC中的M相同和数据库交互 V: ...