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 請參考<Generating SSH keys>的説明。
      但是要先安裝需要的 Plugins:
      04
      02
      00
       
  3. 調整系統預設 NuGet 下載的位置,參考下圖修改:
    image
    爲什麽會需要這樣的調整呢?因爲預設 MSBuild 的 Nuget 下載的位置與開發時使用 Visual Studio 下載的位置不一樣。
    加上 Jenkins 預設參考的 user.home 是在 【%systemroot%\system32\config\systemprofile】
    下載的時候檔案會跑到 %systemroot%\system32\config\systemprofile 裏面,這樣 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