解决Jenkins无法编译Egret5.0项目的问题

原创 2017年07月20日 13:24:19

Egret4.0升级Egret5.0导致Jenkins无法编译项目

项目升级到Egret5.0,同时也把Egret的引擎工具更换为EgretLauncher,结果出现问题,原来跑得好好Jenkins,突然无法进行编译了。(以前4.0的时候是好好的)。花费了一些功夫,追踪了Egret引擎的相关编译,最终才找到解决办法。现在把这些给记录下来,主要也是方便自己升级或者降级引擎时可以查看。

Jenkins错误表现

直接查看编译错误信息,发现了下面的错误信息

C:\Program Files (x86)\Jenkins\workspace\pal_dev>C:\Users\sodaChen\AppData\Roaming\npm\egret.cmd clean 
C:\Program Files (x86)\Egret\EgretLauncher\resources\app\engine\win\selector.js:86
        var isUsingDefault = requestVersion == defaultVersion.version;
                                                             ^

TypeError: Cannot read property 'version' of null
    at entry (C:\Program Files (x86)\Egret\EgretLauncher\resources\app\engine\win\selector.js:86:62)
    at Object.<anonymous> (C:\Program Files (x86)\Egret\EgretLauncher\resources\app\engine\win\selector.js:360:1)
    at Module._compile (module.js:541:32)
    at Object.Module._extensions..js (module.js:550:10)
    at Module.load (module.js:458:32)
    at tryModuleLoad (module.js:417:12)
    at Function.Module._load (module.js:409:3)
    at Module.runMain (module.js:575:10)
    at run (bootstrap_node.js:352:7)
    at startup (bootstrap_node.js:144:9)
Build step 'Execute Windows batch command' marked build as failure
Finished: FAILURE

既然有代码报错,那么就追踪相关的代码,从

C:\Program Files (x86)\Egret\EgretLauncher\resources\app\engine\win\selector.js

这个js文件开始追踪。发现这段代码获取egret系统路径有问题

function getAppDataPath() {
    switch (process.platform) {
        case 'win32': return process.env['APPDATA'] || path.join(process.env['USERPROFILE'], 'AppData', 'Roaming');
        case 'darwin': return path.join(os.homedir(), 'Library', 'Application Support');
        case 'linux': return process.env['XDG_CONFIG_HOME'] || path.join(os.homedir(), '.config');
        default: throw new Error('Platform not supported');
    }
}

跟我们在cmd下面输入egret build获取的引擎配置路径不一样。最终发现是引擎的位置读取错了。最终发现是引擎的位置读取错了。读成这样了:

C:\Windows\system32\config\systemprofile\AppData\Roaming\Egret\engine

实际引擎的路径是

C:\Users\sodaChen\AppData\Roaming\Egret\engine
怀疑是Jenkins里面有改变环境变量(也有可能是白鹭自己设置环境变量有问题,没去深入研究)

解决方法是在EgretLauncher的安装路径下修改这个js文件

C:\Program Files (x86)\Egret\EgretLauncher\resources\app\engine\egret.js

强制把enginePath这个变量设置为自己的引起路径

enginePath = "C:\\Users\\linlong\\AppData\\Roaming\\Egret\\engine\\"

它会读取这个配置文件config.json,然后这个配置文件有记录你的使用的引擎版本号
如果你有修改自定义引擎位置,那么记得维护这个配置文件
比方说我的最新配置:

C:\Program Files (x86)\Jenkins\workspace\egret-core

最终可以正常编译了,有个麻烦的地方就每次升级egret必须再次egret.js文件。

版权声明:本文为博主原创文章,转载必须声明出处和作者。地址:http://blog.csdn.net/sujun10 作者:弃天笑

Egret)引擎工作原理

Egret engine 使用 nodejs 来编译项目,为了避免对系统的依赖,所以node是放在引擎的安装目录中的。 windows 下 在 C:\Program Files\Egret\Egr...
  • taotao3686
  • taotao3686
  • 2016年01月06日 15:53
  • 1698

Intel C++ 编译器进行自动化并行编译

A Guide to Auto-vectorization with Intel® C++ Compilers   http://software.intel.com/en-us/node/311...
  • cmsbupt
  • cmsbupt
  • 2013年08月10日 15:44
  • 1018

Jenkins搭建.NET自动编译测试与发布环境

操作系统Windows, http://jenkins-ci.org/下载Windows安装包。安装后,访问http://localhost:8080 . Jenkins => Manager Jen...
  • wangjia184
  • wangjia184
  • 2014年01月20日 17:42
  • 33050

c++持续集成工具Jenkins

Jenkins是一个CI工具。它可以持续编译,运行你的代码;运行UT或集成测试;将运行结果发送至邮件,或展示成报告。。。 这样做的最终目的是: 让项目保持健康的状态。如果任何checkin bre...
  • davidsu33
  • davidsu33
  • 2014年06月18日 15:49
  • 2026

Jenkins配置MSBuild编译.net4.6的项目

Jenkins配置MSBuild编译.net4 经过测试,如果用原始的msbuild,会出现语法无法识别的问题,"C:\Windows\Microsoft.NET\Framework64\v...
  • orichisonic
  • orichisonic
  • 2017年01月19日 13:22
  • 578

Jenkins自动编译Android Studio创建的工程

前提 Jekins服务器所在的Ubuntu上安装下列软件 Android SDK - 记住版本号,后面需要在Gradle脚本中设置 Android SDK Build-tools Android ...
  • stwstw0123
  • stwstw0123
  • 2015年08月21日 20:21
  • 3520

为JenKins编写的自动打包脚本

前段时间为公司的一个项目部署了JenKins用于自动持续集成一个c++的项目。项目使用msbuild编译解决方案,在解决方案下包含了需要打包进最终的安装文件的可执行文件和部分静态库。在编译完解决方案后...
  • lanzheng_1113
  • lanzheng_1113
  • 2017年04月23日 22:07
  • 1704

Jenkins:VS项目的自动化编译

看过前面的Jenkins+Github环境的配置相信大家已经对Jenkins有了一定的熟练程度,也大概知道怎么对vs项目进行自动化编译,这篇博文主要是对一些细节进行补充,后面主要就是Jenkins插件...
  • vipyhd
  • vipyhd
  • 2014年07月07日 16:41
  • 2255

Jenkins 搭建C++持续集成环境

简介本文主要介绍如何通过 Jenkins 搭建 C++的持续集成环境。最后达到的效果是每天00:00 - 08:00之间构建、测试和打包一次工程。开发环境为 VS2015,测试工具为 CppUnit,...
  • u011304970
  • u011304970
  • 2017年07月04日 09:33
  • 2491

JenKins结合cppcheck及cpplint进行代码风格及静态代码检测

JenKins结合cppcheck及cpplint最近公司需要在Jenkins上安装cppcheck及cpplint进行代码风格及静态代码检测,这里记录下过程。前提条件 安装了Jenkins 步骤如下...
  • LOUISLIAOXH
  • LOUISLIAOXH
  • 2017年01月18日 10:04
  • 2757
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:解决Jenkins无法编译Egret5.0项目的问题
举报原因:
原因补充:

(最多只允许输入30个字)