运行环境
Windows 10服务器作为Jenkins agent。节点配置里,”Launch method“选择”Launch agent by connecting it to the controller“.
在此机器上手动用CLI命令行工具发行H5,没有问题。
尝试一
-
在这台windows的Jenkins agent页面,找到jenkins-agent.jnlp文件的链接,下载并运行。在应用窗口选择 File > Install as a service。安装成功后在services.msc里可以找到Jenkins agent服务,默认以”本地系统账户“登录。
-
Jenkins创建job,执行batch脚本:
bat label: 'Publish uni-app', script: ''' @echo off echo "Launch HBuilder..." cli.exe open echo "Log in HBuilder..." cli.exe user login --username %username% --password %password % echo "Open project..." cli.exe project open --path %project_path% echo "Publish %project_name% to h5..." cli.exe publish --platform h5 --project %project_name% echo "Close project..." cli.exe project close --path %project_path% echo "Logout HBuilder..." cli.exe user logout echo "Close HBuilder..." cli.exe app quit '''
-
job执行"cli.exe open"后,HBuilder没有自动打开,在任务管理器 > 详细信息里可以找到HBuilderX.exe,以SYSTEM运行。执行到”cli.exe publish“,控制台显示”异常退出“。
尝试二
- services.msc停止Jenkins agent服务,登录用户改成用当前登录的windows用户,启动服务。
- 重新执行Jenkins job。job执行"cli.exe open"后,HBuilder没有自动打开,在任务管理器 > 详细信息里可以找到HBuilderX.exe,以当前登录的windows用户运行。执行到”cli.exe publish“,控制台显示”异常退出“。
尝试三
- services.msc停止Jenkins agent服务,运行之前下载的jenkins-agent.jnlp文件。
- 重新执行Jenkins job。job执行"cli.exe open"后,HBuilder自动打开,在任务管理器 > 详细信息里可以找到HBuilderX.exe,以当前登录的windows用户运行。”cli.exe publish“顺利执行。
尝试四
- 关闭jenkins-agent.jnlp运行窗口,cmd执行agent连接命令:java -jar agent.jar -jnlpUrl -secret -workDir
- 重新执行Jenkins job。job执行"cli.exe open"后,HBuilder自动打开,在任务管理器 > 详细信息里可以找到HBuilderX.exe,以当前登录的windows用户运行。”cli.exe publish“顺利执行。
问题
- 我希望Jenkins agent以服务的方式启动,即使服务器重启,也能继续运行。上面的尝试一和二失败了,请问这是CLI的问题吗?
- 使用CLI做任何操作前,必须执行cli open,显示地打开HBuilder?
- Jenkins执行多个CLI操作,有时候会在中间停住。比如说执行简单的cli project open 和 cli project list动作,Jenkins控制台显示项目导入成功,然后就卡住不跑cli project list了,请问这是CLI的问题吗?