UWP – 利用 Jenkins 自动建立 App 安装档

介绍的是如何在 Jenkins 上建立 Universal Windows Platform 项目的 Apps。


由于开发 App 时,常被要求需要先 build 一个可用的版本先给客户或测试人员测试,所以非常需要 CM 的管理。
之前我是使用 Visual Studio Team Service 管理 Code 与 Project,所以如果要产生 App 给人家测试就非得开 Visual Studio 来跑。
如果你知道怎么写 MSBuild 的 commands,当然你可以写一个 Windows Service 来定期帮你建立。但是那衹是单个文件。
如果你是多人开发的团队,我就建议你使用 Visual Studio Team Service 或 Jenkins 来配合使用。

往下介绍怎么利用 Jenkins。
[准备工作]
a. 安装可以开发 UWP 的 Visual Studio 2015 版本,并且要安装  Git 第三方组件。
b. 确认已经安装 JDK 与安装 Jenkins。

[安装步骤]

  1. 安装 Jenkins:
    1. 请先安装 Java JDK (Java SE Development Kit )。
    2. 下载 Jenkins 安装档,并且安装。
  2. 进入 Jenkins 设定画面,安装需要的 Plugin。
    1. 由于 UWP 使用的最新的 MSBuild 14,所以要安装以下项目:
      03
      并且设定 MSBuild 使用的路径与版本。
      01
    2. 加入 Git 与取得 GitHub 的 Plugin 指定使用 Git 组件的路径,因为 clone code 下来的时候会需要使用的 SSH 的方式,
      相关如何使用 Git + SSH 取得 GitHub 上的 code 请参考的说明。
      但是要先安装需要的 Plugins:
      04
      02
      00
  3. 调整系统默认 NuGet 下载的位置,参考下图修改:
    image
    为什么会需要这样的调整呢?因为默认 MSBuild 的 Nuget 下载的位置与开发时使用 Visual Studio 下载的位置不一样。
    加上 Jenkins 默认参考的 user.home 是在 【%systemroot%system32configsystemprofile】
    下载的时候文件会跑到 %systemroot%system32configsystemprofile 里面,这样 MSBuild 项目时会找不到
    Nuget 的 package,因此需要把 user.home 设定到默认的 【c:User{默认用户}】。

  4. 加入一个 Job,设定相关的参数:
    1. 设定取得 GitHub 的设定。
      05
    2. 由于 UWP 的项目会用到很多 Nuget 里额外安装的 SDKs,所以需要在 MSBuild 开始建立之前先把 Nuget 需要的先下载好。
      如下图的设定:
      image
    3. 加入使用的是 MSBuild 的建立方式。
      image

依照上述的步骤就可以让 Jenkins 借由 MSBuild 14 将 UWP App 定期建立版本,重点在还原 Nuget 的项目而已,
如果你的 App 还有用到其他 SDK 是 Nuget 的没有的,要记得先安装对应的 visual studio extension files。

[补充]
〉使用 Visual Studio Team Service 来 Building 方式
    事前先建立自己的 Visual Studio online project。并且在登入 Visual Studio online 后进去那个项目。
选择 【Build】 的项目,开始以下的步骤:

  1. 选择 Template,因为是 UWP 所以选择 Visual Stduio。
    image
  2. 选择项目 Code 的来源是 Github 还是 Team Foundation Version Control。
    image
  3. 选择要建立的项目与设定建立的方式:
    image
  4. 设定要建立时要给 MSBuild 的参数:
    image
  5. 按下 Queue build 就会询问是否有需要加入的参数,通常会默认带入步骤 4 给的参数值,接着按下 OK 就会加入排程。
    image
  6. 最后进入 console 画面等待建立项目。
    image

======
本篇介绍的东西算是我在整合上遇到的所有问题,也协助需要使用 Jenkins 的人有所帮助。
当然,如果你的团队人员不多的话, 我还是建议你使用 Visual Studio Online 上面提供的 Build,
能够完成的目标是一样的,但是相对好设定很多。

References:
〉Build your Visual Studio projects
〉Hosted build controller for XAML builds
〉Building Your Project In Visual Studio Online
〉Run tests in your build
〉Create and run unit tests with Visual Studio
〉Develop and share your code in Git using Visual Studio