Jenkins平台上运行Appium工程报错:java.lang.RuntimeException: 不存在android或者iOS测试设备

【问题背景】
在Mac使用本地终端用  java -jar target/XXX-1.0-SNAPSHOT.jar 命令跑工程,可以!
但是在Jerkins平台上,就不行,报错:
 
+ java -jar target/XXX-1.0-SNAPSHOT.jar
java.lang.RuntimeException: 不存在android或者iOS测试设备
        at com.XXX.tool.ui.appium.manager.AppiumDeviceManager.getDevices(AppiumDeviceManager.java:94)
        at com.XXX.tool.ui.appium.manager.AppiumDeviceManager.<init>(AppiumDeviceManager.java:32)
        at com.XXX.tool.ui.appium.manager.AppiumDeviceManager.getInstance(AppiumDeviceManager.java:75)
        at com.XXX.tool.Run.getDeviceQueue(Run.java:217)
        at com.XXX.tool.Run.dispersedRun(Run.java:54)
        at com.XXX.YYY.Run.main(Run.java:27)
    

 

查找问题:
1、检查Jenkins上的ADB是否能执行:
    1.1)需要在Jenkins配置文件的执行Shell处加上一句:adb devices,看看能不能打出来设备信息。
         (因为在本地的终端执行adb devices是可以打出来设备信息的!)

  

1.2)果然,在Jenkins执行这一句adb devices时,报错了…… “ jenkins: line 8: adb: command not found

 

 所以ADB有问题,查找下:

王导发的链接: [Jenkins] 配置任务中的坑s
——但是解决了两个小时还是没有解决出来啊!!!
 
 
尝试解决:
1、在Jenkins配置ANDROID_HOME的环境变量
因为连接的是Android手机,Jerkins在使用ADB时需要在Jerkins配置ANDROID_HOME的环境变量的。
配置路径:Jenkins --> Manage Jerkins --> Configure System  --> 全局属性  --> Environment variables:

——设置好之后,去重新跑工程,还是报错:“adb: command not found

 

2、在工程的Execute shell 中加第一行脚本(要放在最前面第一行)
来使Jenkins加载环境变量
1)尝试加上“#!/bin/bash”(注意 #!/ 之前不要有空格)
——还是报错:“adb: command not found”
2)尝试加上“#!/bin/bash -ilex”(注意 #!/ 之前不要有空格)
——还是报错:“adb: command not found”
3)尝试加上“#!/bin/bash -il”(注意 #!/ 之前不要有空格)
——还是报错:“adb: command not found”
4)尝试加上“source /etc/profile”
——还是报错:“adb: command not found”,Build step 'Execute shell' marked build as failure
5)尝试加上“source /Users/XXX/.zshrc”(因为我的所有环境变量配置是在 .zshrc文件中的)
——加载了一大堆东西之后报错:
+++ autoload -U compaudit compinit
/Users/crgt/.oh-my-zsh/oh-my-zsh.sh: line 23: autoload: command not found
Build step 'Execute shell' marked build as failure

 

3、没有办法,前去求助王导。
向其说明,我的所有环境变量都是配置在.zshrc文件中的,所以用了 source /Users/XXX/.zshrc,但是不行。
但是把.zshrc文件里面的环境变量内容都拷贝复制放到.bash_profile 中,

  

 

 

  

 

 

 然后在 中,第一行命令用:source ~/.bash_profile  。居然可以了!!!!!

所以Jerkins居然读不到.zshrc文件,而是只能读.bash_profile,来读取环境变量的配置的!!
 
  

 

 第一次成功是build #45号,一台安卓机跑了一个半小时+。

 
 
 
 
【Reference】
1、 [Jenkins] 配置任务中的坑s  (帮助排查问题、解决问题)
2、Jenkins build failed due to missing android SDK  (被Accept的答案也就说在Jerkins上配置Android_Home环境变量而已)
 
 
可以参考的文章:
2、使用jenkins自动化构建android和ios应用  (有讲述应用背景!)

 

posted on 2021-03-02 18:33  CuriousZero  阅读(331)  评论(0编辑  收藏  举报

导航