windows下jenkins的bat用法

Windows下使用Jenkins进行C++项目自动化打包

在windows下搭建jenkins,主要是为了方便运维同事来打包,主要是针对windows下的C++开发以及nsis打包以及自动化编译打包脚本python而言。

准备工作:

1.安装支持的python(此处是python3.x)

2.安装jdk11 (jenkins需要安装jdk,具体版本看安装jenkins时的说明)

3.下载安装jenkins

安装完成jenkins之后,(安装时会指定端口比如8088),在本地浏览器访问127.0.0.1:8088

进入jenkins初始化配置界面,按照界面操作即可,初始化完成后会得到一个密码,就是admin用户的密码。

刷新127.0.0.1:8088进入登录页面,登录admin账户,并填写上一步保存的密码。

登录admin完成后如下:

New Item 就是创建任务,在创建任务之前我们在manage jenkins 里面要创建一些环节变量,

最主要的就是path,比如说指定python的程序目录。

点击进入configure system 

<think>我们正在处理用户关于在Jenkins中通过bat脚本执行命令并捕获返回值的问题。用户提供的引用内容是一个bat脚本示例,用于根据端口号杀死进程,但用户的实际需求是执行命令并捕获返回值。关键点:1.在Jenkins中,通常通过bat脚本执行命令。2.需要捕获命令的返回值(即退出码)以便在Jenkinspipeline中根据返回值进行后续操作。解决方案:在bat脚本中,每个命令执行后都会有一个退出码(errorlevel),我们可以通过`%errorlevel%`来获取上一个命令的退出码。在Jenkinspipeline中,我们可以将bat脚本的返回值赋值给一个变量,然后根据这个变量值进行判断。步骤:1.在bat脚本中,执行命令后,我们可以使用`exit/b<value>`来返回特定的退出码。2.或者,我们可以在bat脚本中直接使用`exit%errorlevel%`来将上一条命令的退出码作为整个脚本的退出码。3.在Jenkinspipeline中,使用`bat`步骤的`returnStatus`参数可以捕获退出码(注意:`returnStatus`为true时,返回退出码,此时不会因为非零退出码而失败;如果为false,则非零退出码会导致构建失败)。示例:假设我们有一个bat脚本,执行一个命令,然后我们需要捕获这个命令的退出码,并在Jenkinspipeline中获取它。方法一:直接使用bat步骤并设置returnStatus:true```groovydefreturnCode=bat(script:'your_command',returnStatus:true)```方法二:在bat脚本中控制退出码,然后在Jenkins中获取例如,在bat脚本中:```batchyour_commandexit/b%errorlevel%```然后在Jenkinspipeline中:```groovydefreturnCode=bat(script:'path/to/your_script.bat',returnStatus:true)```注意:如果使用`returnStatus:true`,则Jenkins会将脚本的退出码作为返回值,并且不会因为非零退出码而失败。如果使用`returnStdout:true`,则可以捕获标准输出,但此时退出码会被忽略(除非使用特殊技巧)。用户可能想同时捕获输出和退出码?但通常不能同时使用returnStatus和returnStdout。因此,如果需要同时捕获,可能需要将退出码输出到文件,或者通过多个步骤实现。另一种方法:在bat脚本中,我们可以将命令的输出和退出码都捕获,并输出到标准输出,然后在Jenkins中解析。但这样可能比较复杂。推荐做法:如果只需要退出码,使用`returnStatus:true`。如果需要同时捕获输出和退出码,可以考虑:-在bat脚本中,将命令的标准输出重定向到一个文件,然后单独输出退出码(例如,最后一行输出退出码),然后在Jenkins中读取文件并解析退出码。-或者,分两步:第一步用returnStdout捕获输出,第二步用returnStatus捕获退出码(但要注意,同一个命令执行两次可能结果不同)。更常见的做法是:如果关心输出,就用returnStdout捕获输出,然后通过检查errorlevel变量(在bat脚本中)来设置退出码,但这样需要将整个脚本写在一个bat调用中,并在脚本内部处理错误。考虑到用户的需求是“执行命令并捕获返回值”,我们假设用户主要关心退出码。因此,最简单的示例:在Jenkinspipeline中:```groovydefexitCode=bat(script:'some_command',returnStatus:true)echo"Exitcode:${exitCode}"```如果命令是`some_command`,那么执行后,exitCode就是该命令的退出码。但是,如果用户需要在一个bat脚本文件中执行多个命令,并返回最后一个命令的退出码,那么可以这样写bat脚本:```batchsome_command1some_command2exit/b%errorlevel%```然后调用:```groovydefexitCode=bat(script:'callyour_script.bat',returnStatus:true)```注意:使用`call`是为了确保在同一个shell中执行脚本,这样退出码才能传递。另外,如果命令路径包含空格,需要使用引号。总结:用户的问题是在Jenkins中通过bat脚本执行命令并获取返回值(退出码),我们使用bat步骤的`returnStatus:true`参数来获取退出码。因此,回答如下:</think>### 在 Jenkins 中通过 bat 脚本执行命令并捕获返回值 在 Jenkins 中通过批处理脚本(.bat)执行命令并捕获返回值,可通过以下两种方式实现: --- #### **方法 1:直接通过 `bat` 步骤捕获退出码** 在 Jenkins Pipeline 中使用 `returnStatus: true` 参数捕获命令的退出码: ```groovy pipeline { agent any stages { stage('Execute Command') { steps { script { // 执行命令并捕获退出码(0=成功,非0=失败) def exitCode = bat(script: 'your_command.exe', returnStatus: true) // 使用返回值 echo "Exit Code: ${exitCode}" if (exitCode != 0) { error("Command failed with code ${exitCode}") } } } } } } ``` --- #### **方法 2:通过脚本输出捕获返回值** 在批处理脚本中显式输出返回值,并通过 `returnStdout: true` 捕获: 1. **批处理脚本**(`command_wrapper.bat`): ```batch @echo off your_command.exe echo EXIT_CODE=%errorlevel% ``` 2. **Jenkins Pipeline 解析输出**: ```groovy def output = bat(script: 'call command_wrapper.bat', returnStdout: true).trim() def exitCode = output.split("EXIT_CODE=")[1] as Integer echo "Captured Exit Code: ${exitCode}" ``` --- #### **关键说明** 1. **`errorlevel` 变量** Windows 批处理使用 `%errorlevel%` 存储上一条命令的退出码(0=成功)。 2. **`returnStatus` vs `returnStdout`** - `returnStatus: true` → 直接返回整数退出码 - `returnStdout: true` → 返回命令输出的文本 3. **路径空格处理** 若命令路径含空格,需用双引号包裹: ```groovy bat(script: '"C:\\Program Files\\tool.exe" arg1', ...) ``` 4. **错误处理** 默认情况下,非零退出码会中止 Pipeline。使用 `returnStatus` 可避免此行为。 [^1] --- ### 相关问题 1. 如何在 Jenkins 中捕获批处理脚本的标准输出(stdout)? 2. 当 Jenkins 执行 bat 脚本失败时,如何自动重试? 3. 如何通过 Jenkins Pipeline 传递参数给 bat 脚本? 4. 在 Windows 批处理中,`%errorlevel%` 和 `||`/`&&` 运算符有何区别?
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程经验随笔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值