【09】Jenkins:Pipeline 补充

写在前面的话

我们在使用普通的构建任务的时候使用了 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 进行添加:

小结

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

原文地址:https://www.cnblogs.com/Dy1an/p/11225035.html

时间: 2024-10-02 23:03:02

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

Jenkins pipeline:pipeline 使用之语法详解

一.引言 Jenkins 2.0的到来,pipline进入了视野,jenkins2.0的核心特性. 也是最适合持续交付的feature. 简单的来说,就是把Jenkins1.0版本中,Project中的相关配置信息,如SVN/Git的配置,Parameter的配置等都变成Code,即Pipeline as Code. 随着pipeline交付流水线在团队中的推广,使用pipeline脚本的job也迅速增加. 优势: 通过写代码的形式配置Project,且Jenkins中内置了常用的steps.

Docker的Jenkins Pipeline工作流

原文地址:http://www.youruncloud.com/blog/127.html 分享主题 一个软件产品的开发周期中,尤其是敏捷开发,持续集成和持续部署是必不可少的环节,而随着产品的丰富,模块的增多.随即带来了更加多的问题,各模块间编译环境的准备,编译复杂,耗时增加,还需要专人去负责这个流程.而Jenkins则可以很好的解决这个单一而容易出错的CI(持续集成)工作. Jenkins也存在着编译环境不隔离的问题,虽然可以通过集群的方式解决,可是需要为每种环境甚至是一种语言的不同版本准备多

用Jenkins Pipeline实现网元日志和配置的导出

整体架构: Jenkins > PC1 > RobotFramework > NEs_1 > PC2 > RobotFramework > NEs_2 > PC3 > RobotFramework > NEs_3 .... 通过Jenkins控制多台PC,再借助RobotFramework框架实现对网元的自动化测试,使用SSHLibrary等库. Jenkins Pipeline中的代码: node(pc) { stage('Export_Log_an

jfrog artifactory jenkins pipeline 集成

1. 预备环境 artifactory ( 开源版本 ) maven jenkins jenkins artifactory plugin (在插件管理安装即可) 2. 配置artifactory a. maven local 仓库 b. jenkins 配置(添加 artifactory 账户信息) 3.  jenkins  pipeline 配置(实例使用github 实例) jenkinsfile 内容如下: node("docker-64") { def server = Ar

Jenkins pipeline shared library

Jenkinsfile https://jenkins.io/doc/book/pipeline/jenkinsfile/ Jenkins Pipeline is a suite of plugins that supports implementing and integrating continuous delivery pipelines into Jenkins. Pipeline provides an extensible set of tools for modeling simp

Jenkins pipeline概念理解

1.Jenkins Pipeline总体介绍 Pipeline,简而言之,就是一台运行于Jenkins上的工作流框架,将原本独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂流程编排与可视化. Pipeline是Jenkins2.X最核心的特性,帮助Jenkins实现从CI到CD与DevOps的转变. 详细介绍可见https://jenkins.io/2.0 2.什么是Jenkins Pipeline Jenkins Pipeline是一组插件,让Jenkins可以实现持续交付

Jenkins Pipeline+Docker实现流水线自动化构建(上百个项目共用一个脚本方案)

Jenkins Pipeline是一套插件,支持将连续输送Pipeline实施和整合到Jenkins.Pipeline提供了一组可扩展的工具,用于通过PipelineDSL为代码创建简单到复杂的传送Pipeline. 对于单个项目来说,使用这样的Pipeline来构建能够满足绝大部分需求,但是这样做也有很多缺陷,包括: 多个项目的Pipeline打包脚本不能公用,导致一个项目写一份脚本,维护比较麻烦.Jenkins提供了一个更优雅的管理Pipeline脚本的方式,在配置项目Pipeline的时候

Jenkins pipeline自动化构建审批功能

Jenkins Pipeline是一套插件,支持将连续输送Pipeline实施和整合到Jenkins.Pipeline提供了一组可扩展的工具,用于通过PipelineDSL为代码创建简单到复杂的传送Pipeline. 对于单个项目来说,使用这样的Pipeline来构建能够满足绝大部分需求,但是这样做也有很多缺陷,包括: 多个项目的Pipeline打包脚本不能公用,导致一个项目写一份脚本,维护比较麻烦.Jenkins提供了一个更优雅的管理Pipeline脚本的方式,在配置项目Pipeline的时候

Jenkins pipeline 语法详解

原文地址http://www.cnblogs.com/fengjian2016/p/8227532.html pipeline 是一套运行于jenkins上的工作流框架,将原本独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂流程编排与可视化. pipeline 是jenkins2.X 最核心的特性, 帮助jenkins 实现从CI 到 CD与 DevOps的转变 pipeline 提供一组可扩展的工具, 通过 pipeline domain specific language

在Jenkins pipeline中融入python和go语言编程

在Jenkins pipeline的groovy脚本中可以实现很多复杂灵活的功能,但是:1 一来对java.groovy不是很熟,也不知道能不能引入一些三方库?比如搞个jdbc操作下mysql什么的.2 二是自己对go和python比较熟悉,所以想能够更加灵活的实现更多的功能:比如: 操作数据库,无需依赖构建宿主机必须有数据库client来靠shell操作数据库. 操作gitlab,比如参数化构建,传递进来的各仓库的tag参数,需要先将tag在gitlab中对应起来一一先打tag,然后再拉取新打