在 Jenkins 上构建 Cordova 工具 Visual Studio 2013 CTP3.1

Build Cordova tools Visual Studio 2013 CTP3.1 on Jenkins

经过长时间的努力,我能够 运行 从命令行构建 .jsproj,但项目源代码仍然没有被复制,而只是 [= 中的空白平台目录30=].

bld\Debug 目录看起来与从 VS 内部生成的目录完全相同。

我使用 MSBuild(通过 NANT)来完成它传递以下参数:

  <target name="generatedeployfolderripple">
    <exec program="${MSBuildPath}" verbose="true">
      <arg line='"${SolutionFile}"' />
      <arg value="/target:Build" />
      <arg value="/property:LangName=en-US" />
      <arg value="/v:Detailed" />
      <arg value="/property:platform=Android" />
      <arg value="/property:DebuggerFlavor=RippleNexus" />
      <arg value="/property:ProjectDir=." />
      <arg value="/property:MdaVsCliProjectDir=." />
      <arg value="/property:NpmInstallDir=${NpmInstallDir}" />
      <arg line="/property:Configuration=Debug;MDAVsixDir=${MDAVsixDir};NodeJsDir=${NodeJsDir}" />
    </exec>
  </target>

有没有办法生成与Visual studio通过命令行生成的相同的项目包?

我的目标是复制输出目录以执行持续集成构建。

看来我遗漏了一些简单的东西...

我找到了这个,但它清楚地表明它不适用于 2013 年,而仅适用于 2015 年: https://github.com/Microsoft/cordova-docs/tree/master/tutorial-team-build

Visual Studio 2015 使用任何构建系统都容易得多。甚至还有 tutorial for Jenkins.

也就是说,如果您必须继续使用 VS 2013,您应该能够在 "Getting Resulting Packages to Land in the Drop Folder" section of the TFS 2013 tutorial for VS 2015 RC

中使用 PowerShell 脚本

这些说明非常接近 VS 2013 所需的内容。我相信您已经注意到最大的区别是位置 MDAVSIXDIR 是不可预测的。我们已经在 VS 2015 中解决了这个问题,但我们实际上建议在 VS 2015 中使用 Gulp 而不是 MSBuild 项目,因为这可以 运行 直接在 OSX 上为您的 iOS 构建而无需必须将您的构建服务器与远程构建代理配对。这就是教程不直接适用于 VS 2013 的原因,因为该技术在那里不可用。

关于将 VS 2013 项目转换为 VS 2015 的说明can be found here

对于 VS 2013 中的 Ripple,没有内置的方法可以在不为本机 Android 平台构建的情况下实现这一点。 Ripple 并非设计用于 CI 场景。

改为:

  1. 为 Android
  2. 做原生构建
  3. 进入bld/Debug
  4. 安装后从命令行执行ripple:

    npm install -g ripple-emulator
    ripple emulate android
    

在 VS 2015 中,您甚至不需要构建。将 VS 2013 项目转换为 VS 2015 的说明 can be found here。要在 2015 年在 VS 之外的 Ripple 中 运行 项目,首先执行以下命令以安装正确的工具:

npm install -g ripple-emulator
npm install -g cordova@5.1.1

...用您的目标 Cordova 版本替换 5.1.1。

接下来,只需将源代码检出到一个文件夹,然后从项目文件夹的根目录执行以下命令

cordova platform add android
ripple emulate android