jenkins插件Pipeline脚本jenkinsfile操作指南

目录
  • 前言
  • 一,安装pipeline支持插件
  • 二,创建流式Item
  • 三,编写pipeline脚本
    • 脚本如下:
    • 添加运行参数
  • 四,尝试构建任务
  • 五,pipeline的一点技巧
  • 文末结语

前言

jenkins是一款流行的开源持续集成软件,插件丰富,扩展灵活。2.0后推出pipeline流式构建,支持构建任务脚本化。本文主要旨在使用jenkins 的pipeline功能完成java maven项目的打包,上传jar到目标服务器。pipeline推出时间不长,实际使用的不是很多,网上基本没啥参考资料,官方的文档很详细,但不成本文所述体系。这篇博文是博主摸索半天后的成果,如有错落,欢迎指出。

说明:本文环境默认包含组件:jenkins,maven,jdk

一,安装pipeline支持插件

到配置中心插件管理搜索如下插件,安装

Pipeline Maven Integration Plugin :执行withMaven方法支持,用于构建maven项目工程,使用方式如下图,详细说明见:https://wiki.jenkins.io/display/JENKINS/Pipeline+Maven+Plugin

SSH Agent Plugin :sshagent方法支持,用于上传构建产物到目标服务器,使用详情见:
https://wiki.jenkins.io/display/JENKINS/SSH+Agent+Plugin,这边博主实操时有个大坑,后面说详细说明

二,创建流式Item

如图

三,编写pipeline脚本

脚本分三个步骤块,分别是git clone(下载源码到本地),build(构建工程),deploy(上传构建产物到目标主机)

脚本如下:

node {
   stage('git clone') { // for display purposes
     checkout([$class: 'GitSCM', branches: [[name: '*/${branch}']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'xxxx-xxxx-xxxxx-xxxxxx', url: 'http://git.xx.xxx/xxx/xform-boot.git']]])
   }
   stage('Build') {
           env.JAVA_HOME="${tool 'jdk1.8.0_92'}"
           withMaven(
            maven: 'M3',
            mavenLocalRepo: '.repository') {
                sh "mvn clean install -U  -P${profile} -Dmaven.test.skip=true"
        }
   }
   stage('deploy') {
    sshagent(credentials: ['deploy_ssh_key']) {
        sh 'ssh root@120.xx.95.105'
        sh 'echo hello'
       sh 'scp producer/target/salesApp-1.0-RELEASES.jar  root@120.xx.95.105:/root/deploy/'
     }
   }
}

如上脚本需要配置两个认证凭证,分别是git的credentialsId和sshagent的credentials,到配置管理credentials处添加,如图

git的认证比较简单,使用密码用户名验证,直接选Username with password就好了,这里还有个技巧,后面会讲到。

sshagen测试下来只支持私钥,需要选择如下配置:

如图,使用了From the Jenkins master ~./ssh,需要你到jenkins所在主机的.ssh目录,通过命令”ssh-keygen -t rsa“生成公私钥,生成时会询问你是否使用密码 加密,可以直接跳过,如果写了密码,那么上图中Passphrase需要写上加密密码,没写就留空。然后将id_rsa.pub中的内容拷贝到目标主机的/root/.ssh/authorized_keys文件中。上图中的ID可以指定,不指定会生成一个唯一字符串如:

这个ID对应了pipeline脚本中的验证ID,到此,我们准备工作都已经做完了。

添加运行参数

细心的你可能发现了脚本中有类似占位符。这些的代码,如${branch},${profile},其实就是pipeline的占位符,这些参数控制了git从哪个分支拉代码,maven构建的哪个环境的代码,这些参数需要在构建任务中明确指定,用以区分是生产环境还是测试环境等,如图

四,尝试构建任务

到这里我们的准备工作都已完成了,可以开启构建任务测试了,这时博主走了一个好大的坑,无论认证凭证模块怎么配置,总是抛如下的异常:Host key verification failed.

这个异常非常明显,pipeline流式构建前两个步骤已经成功了,代码拉下来并已经构建成功了。但是通过sshagent上传到目标服务器时,认证失败了。这个问题占了我们摸索过程的一大半时间。最后还是感谢唐老大发现了问题。

异常原因:生产公私钥使用的root用户生产的,jenkins是使用jenkins用户启动的,所有jenkins没有权限,

其实上面所有的步骤都没问题。最终在尝试了无数次的构建失败后构建图标终于绿了,构建产物成功上传到目标主机

一次次的失败:

成功的绿标

五,pipeline的一点技巧

流式项目Item创建好后,在左边菜单最下面会有pipeline的语法菜单,点进去,会有如下页面:

1.其中箭头一所指的,就是前文提到的git添加认证的一个小技巧,这个是一个pipeline脚本生成器,选中git scm后会出来git相关的配置,按照提示添加后,点击生成,就会生成以及配置组装好的脚本。特别适合新手

2.箭头而是步骤指南,这个里面罗列了所有pipeline语法支持的一些DSL函数,如git,checkout,wthMaven等,并且详细的描述了方法的具体使用细节,详细 到每个参数的说明,如withMavene:

文末结语

pipeline的概念去年就听说了,现在实际操作了一把,还是非常的震撼,通过在项目中新增jenkinsfile就可以解决构建问题,而且非常灵活,支持写if等的逻辑判断脚本来决定构建行为。经历了无数次失败后成功的成就感不言而喻,有兴趣的都可以试试,彻底改变原先的构建模式。建议刚接触pipeline的新手,多看看pipeline语法页面的相关内容,对理解pipeline语法及书写脚本有很大的帮助。其次就是去相关的插件wiki页面多看看说明。国内的那些博客很多都是一笔带过,看不出在生产上面应用的痕迹,不建议去参考

以上就是jenkins插件Pipeline脚本jenkinsfile操作指南的详细内容,更多关于jenkins插件Pipeline脚本jenkinsfile操作的资料请关注我们其它相关文章!

(0)

相关推荐

  • jenkins 构建项目之 pipeline基础教程

    一.pipeline 简介 ​pipeline ,简单来说,就是一套运行在 jenkins 上的工作流框架.将原来独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂流程 编排 和 可视化 的工作. 二.pipeline 有哪些好处 代码:pipeline 以代码的形式实现,通常被检入源代码控制,使团队能够编辑,审查和迭代其传送流程. 持久:无论是计划内的还是计划外的服务器重启,pipeline 都是可以恢复的. 可停止:pipeline 可接受交互式输入,以确定是否继续执行 p

  • 使用Jenkins Pipeline自动化构建发布Java项目的方法

    简介 Pipeline,简而言之,就是一套运行于Jenkins上的工作流框架,将原本独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂流程编排与可视化. Pipeline是Jenkins2.X的最核心的特性,帮助Jenkins实现从CI到CD与DevOps的转变. 一,创建pipeline项目 二,清除部分历史构建 三,参数化构建 这里使用三个参数,分别对应是否拉取代码,项目名称,以及发版选项 四,编写pipeline脚本 选择pipeline script 编写pipelin

  • 教你如何用Jenkins自动化部署项目(从零到搭建完成)

    最近在实习中接触了jenkins这个东西,所以花点时间了解了下.它可以在代码上传仓库(如github,gitee,gitlab)后,在jenkins(一个网站界面)中通过获取代码仓库中最新代码,进行自动化部署,而省去手动打包.上传服务器.部署这一系列步骤,非常方便. 下面教程分为以下几个部分: 一.在你的本地电脑或者linux服务器上下载安装jenkins: jenkins下载地址:https://jenkins.io/  下载网站的war包版本就好了 下载完后把它部署到你的tomcat上运行:

  • Jenkins Pipeline 部署 SpringBoot 应用的教程详解

    一. 安装依赖包 yum install -y wget yum install -y gcc-c++ yum install -y zlib-devel perl-ExtUtils-MakeMaker yum -y install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker yum install -y openssh-clients yum install

  • Jenkins安装和插件管理配置入门教程

    目录 安装Jenkins 持续集成环境Jenkins插件管理 修改Jenkins插件下载地址 下载中文汉化插件 升级Jenkins 安装Jenkins 1)安装JDK Jenkins需要依赖JDK,所以先安装JDK1.8 yum -y install java-1.8.0-openjdk* # 安装到了: /usr/lib/jvm # 查看java版本信息 java -version 2)获取Jenkins安装包,进行安装, 下载页面:https://jenkins.io/zh/download

  • jenkins插件Pipeline脚本jenkinsfile操作指南

    目录 前言 一,安装pipeline支持插件 二,创建流式Item 三,编写pipeline脚本 脚本如下: 添加运行参数 四,尝试构建任务 五,pipeline的一点技巧 文末结语 前言 jenkins是一款流行的开源持续集成软件,插件丰富,扩展灵活.2.0后推出pipeline流式构建,支持构建任务脚本化.本文主要旨在使用jenkins 的pipeline功能完成java maven项目的打包,上传jar到目标服务器.pipeline推出时间不长,实际使用的不是很多,网上基本没啥参考资料,官

  • jenkins插件pipeline集成持续交付管道全面介绍

    目录 前言 Jenkinspipeline是什么? 为什么使用pipeline? enkinsfile支持脚本式ScriptedPipeline和声明式DeclarativePipeline ScriptedPipeline 声明式DeclarativePipeline 使用Jenkinsfile的好处: 关于BlueOcean 前言 前篇博文我们实践了jenkins pipeline的脚本模式,体验到了pipeline的流式构建流程,以及通过bule  ocean更清晰的展示了构建的全过程,下

  • Jenkins插件pipeline原理及使用方法解析

    摘要: pipeline字面意思就是流水线,将很多步骤按顺序排列好,做完一个执行下一个.下面简单介绍下如何使用该插件帮我们完成一些流水线型的任务 pipeline字面意思就是流水线,将很多步骤按顺序排列好,做完一个执行下一个.下面简单介绍下如何使用该插件帮我们完成一些流水线型的任务 一,安装pipeline 进入jenkins的[系统管理]--[插件管理]页面,选择[可选插件]然后搜索pipeline. 然后选择直接安装,它会将依赖的一些插件也一并安装.安装完成后重启jenkins就可以使用了.

  • Android Studio插件之Jenkins插件详解

    现在我就来介绍Android Studio上的Jenkins插件,让你可以更加方便地使用Jenkins.用Jenkins持续集成很久了,再Android Studio上的Jenkins插件也有一段时间了,用了该Jenkins插件之后,就不需要每次都在浏览器中区打开Jenkins服务器,然后输入用户名和密码进行登陆,再接着去找到相应的Jenkins任务进行编译了.至少我用起来很方便,这里推荐你们也使用! 现在先来介绍介绍该插件如何使用. 一.Jenkins插件功能介绍 1.Jenkins任务列表

  • 关于jenkins插件下载失败的解决方法

    最近在2台电脑上装了jenkins,插件下载时好多失败的,网上找了各种方法,最后找到一个方法可以解决我的问题: 1.插件下载失败截图: 2.可以点击重试,多下载几次,如果多次后仍然不成功,可以跳过,进入jenkins管理界面. 3.修改jenkins插件的下载源地址,点击managejenkins,点击manageplugins 4.点击高级,更改升级站点下的url为https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-cente

  • 教你编写 Pipeline 脚本的方法

    目录 前言 调试 grok 和 pipeline Grok 通配搜索 多行如何处理 Pipeline 字段命名注意事项 完整 Pipeline 示例 如何在一个 Pipeline 中切割多种不同格式的日志? 如何丢弃字段切割 add_pattern()转义问题 前言 Pipeline 编写较为麻烦,为此,DataKit 中内置了简单的调试工具,用以辅助大家来编写 Pipeline 脚本. 调试 grok 和 pipeline 指定 pipeline 脚本名称,输入一段文本即可判断提取是否成功 P

  • 容器化技术架构jenkins docker k8s脚本浅析

    目录 前言碎语 浅谈docker 浅谈k8s的部署脚本 最后聊聊jenkinspipeline 前言碎语 基于kubernetes容器化技术架构能够带来诸多好处,诸如,弹性伸缩,自动修复等,在比如蓝绿部署,灰度发布等.近几年容器化技术飞速发展,了解服务网格 的人可能会发现,新兴技术 istio 等service mesh技术没有容器化的技术环境根本就没法实践. 浅谈docker docker可以类比为jvm,jvm也是虚拟机,然后docker的image可以类比为jar包,jar运行在jvm里面

  • jenkins配置python脚本定时任务过程图解

    这篇文章主要介绍了jekins配置python脚本定时任务过程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1.首先安装jekins环境,访问网页https://jenkins.io/zh/download/,下载长期稳定版如下: 2.下载安装包后直接运行,进行选择安装路径,傻瓜式安装.安装完成后,点Finished,弹出jekins输入密匙网页,根据网页提示路径,找到 对应的jekins密匙输入后,选择推荐插件安装即可.(也可以不安装插

  • 用node.js写一个jenkins发版脚本

    背景 每次到网页里手动发版有点烦,写个脚本来提高开发效率. CFG 在 jenkins 设置里获取 API TOKEN. 把 host 和账号密码拼接起来就可以通过鉴权. const token = { user: '', password: '', } const host = 'jenkins.xxx.cn'; const basicUrl = `http://${token.user}:${token.password}@${host}`; BUILD 调用 jenkins 提供的 jen

  • MySQL导出sql脚本文件操作指南

    目录 前言 MySQL导出sql脚本文件 一.打开MySQL数据库安装目录下的bin文件夹 二.在文件夹内打开命令行 三.在命令框内输入指令导出sql脚本 最后的话 前言 sql脚本文件在我们做项目时,特别是学习别人的开源项目时经常需要进行导入导出操作,才能在自己的系统上跑起来,这篇文章主要介绍如何导出sql脚本文件,具体操作如下,附带截图详解. MySQL导出sql脚本文件 一.打开MySQL数据库安装目录下的bin文件夹 会有很多人找不到MySQL的bin目录,我们可以按照下边的操作来找到它

随机推荐