在学习jenkins的过程中,遇到了   'android' 不是内部或外部命令 问题 ,再在此记录

在配置好jenkins环境之后,我尝试构建本地项目。在“新增构建步骤”中选择“execute Windows batch command”,在输入如下代码

E:
cd E:\workspace\test6
android update project --name test6 -p ./ --subprojects
ant debug

即定位到android工程test6的目录,执行更新项目,然后用ant命名打包debug版本的命令,

但是最后编译失败“ Console Output”中输出的是

Started by user anonymous
Building in workspace E:\workspace
[workspace] $ cmd /c call C:\Windows\TEMP\hudson2024457796563965089.bat

E:\workspace>E:

E:\workspace>cd E:\workspace\test6 

E:\workspace\test6>android update project --name test6 -p ./ --subprojects 
'android' 不是内部或外部命令,也不是可运行的程序
或批处理文件。

E:\workspace\test6>ant debug 
'ant' 不是内部或外部命令,也不是可运行的程序
或批处理文件。

E:\workspace\test6>exit 9009 
Build step 'Execute Windows batch command' marked build as failure
Finished: FAILURE


cmd启动成功,跳转到test6目录也成功,但是执行android命令和ant命令失败 ,"'android' 不是内部或外部命令,也不是可运行的程序或批处理文件。"

第一反应是环境变量配置失败。

但是直接启动cmd,执行相应的代码,是可以正常执行了。


分析是jenkins没有得到配置的环境变量。因为我的jenkins是通过管理员权限用jenkins.msi 安装包安装的,所以jenkins启动的时候 用名是system,而我配置的环境变量是在用户变量中的。所以jenkins拿不到我的环境变量。




这样解决的方案有两种了:

1、将相关的环境变量配置到系统环境变量中,就可以了。(这就不用说了吧)


2、将jenkins改为由相关的用户去启动。


因为公司的电脑,每次拿管理员权限需要申请,关机再启动需要再次申请,很麻烦,所以我使用的第二种方法。

具体的执行步骤如下:

右键单击“计算机”,选择“管理” ,点开“服务和应用程序”,打开“服务”,选择jenkins,(这里有个小技巧,选中任务管理器之后,按“j”,就会跳到j开头的任务上,多次点击就能很快的找到jenkins了),右键,选择“属性”,在“登陆”中选择“此账户”,,然后点击“浏览”,选择你的账号,需要和用户变量中的那个账号相同。




这里有个小细节,点击“浏览”后,弹出如下界面,在输入对象名称中输入你的用户名,点击检查名称来判断名称是否正确。



但是我在实际使用的过程中,发现我的用户名一直通不过,但是名称是没问题的。这个时候需要更改“查找位置”,

点击位置,弹出界面,选择“整个目录”下的那个文件,而不是选择“整个目录”





修改完成之后再去构建项目,就成功了!



ps:有的人说不能通过任务管理器关闭jenkins,可是尝试使用命令的形式,即:

在cmd中输入命令 "sc delete jenkins",

实际操作中成功关闭了jinkens


jenkins出问题,很多时候都是配置的问题(有时候发现问题了却很难再网上找到对应的解决方案,郁闷)。



Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐