当前位置: 首页 > 科技观察

JenkinsPipeline调用Shell、Python、Java脚本的正确使用姿势

时间:2023-03-16 12:54:59 科技观察

在设计Pipeline脚本的过程中,我们经常会遇到调用外部脚本来配合实现某些功能的场景。比如在服务器上执行shell命令,运行python或java测试代码,使用groovy脚本实现一些比较复杂的功能等等,下面我将详细讲解最常用的三种脚本使用场景!执行shell命令1、使用sh""完成执行shell命令的操作。例如:进入某个目录sh"cdmyfile"2、需要多个shell命令组合使用;forconnection例如:进入某个目录,然后删除该目录下的所有文件sh"cdmyfile;rm-rf*.*"3.执行shell命令,获取其返回值result=sh(script:"",returnStdout:true).trim()例如:查找是否有pom.xml文件defexitValue=sh(script:"在jenkins当前目录下查找${WORKSPACE}-namepom.xml",returnStdout:true).trim()if(exitValue.empty){//没有找到,逻辑处理}有一个需求是使用groovy脚本从配置文件中读取url信息,我们可以通过groovy脚本来实现,具体代码实现如下:file=newFile(filePath)urls=file.readLines()注意需要在jenkins的ScriptApproval中添加File和readLines(第一次运行会提示是否加入),添加之后可以看到相关的结果在Dashboard>ScriptApproval页面,如下图所示:调用java或python脚本本质上就是运行py或java脚本thr嘘。我们以运行python脚本为例。代码如下:1.执行脚本yourscript.pysh"/usr/bin/pythonyourscript.py"2.执行脚本yourscript.py,传入参数paramsh"/usr/bin/pythonyourscript.pyparam"3.管道中shell命令的标准输出方式如下:例如:执行python脚本获取其返回值。定义pyscript.py代码如下。目的是输出testdeffunc1():print"test"func1()。我们可以使用下面的方法获取输出test的值defstr=sh(script:"/usr/bin/python/opt/scripts/test/pyscript.py",returnStdout:true).trim()执行代码后,test会被赋值给变量str