使用管線建立及部署 Xamarin 應用程式

Azure Pipelines

使用管線部署 xamarin 應用程式,開始使用xamarin和 Azure Pipelines。 您可以在相同或不同的管線中部署 Android 和 iOS 應用程式。

必要條件

具有下列專案:

取得驗證碼

在 GitHub 將下列存放庫分叉:

https://github.com/MicrosoftDocs/pipelines-xamarin

此範例是存放 FirstApp 庫中的範例 https://github.com/xamarin/xamarin-forms-samples 。 如需開始使用 Xamarin 的詳細資訊,請參閱 建立您的第一個 xamarin. Forms 應用程式

登入 Azure Pipelines

登入Azure Pipelines。 登入之後,您的瀏覽器會移至 https://dev.azure.com/my-organization-name 並顯示您的 Azure DevOps 儀表板。

在您選取的組織內建立 專案。 如果您的組織中沒有任何專案,您會看到 [ 建立專案] 以開始 使用畫面。 否則,請選取儀表板右上角的 [建立] Project按鈕。

建立管線

  1. 登入您的 Azure DevOps 組織,並移至您的專案。

  2. 移至Pipelines,然後選取 [新增管線]。

  3. 先選取GitHub作為原始程式碼的位置,以執行嚮導的步驟。

  4. 系統可能會將您重新導向至 GitHub 以進行登入。 若是如此,請輸入您的 GitHub 認證。

  5. 當您看到存放庫清單時,請選取您的存放庫。

  6. 您可能會被重新導向至 GitHub,以安裝 Azure Pipelines 應用程式。 如果是,請選取 [ 核准 安裝]。

  1. 在 [ 設定 ] 索引標籤上,選取 [ xamarin ] 以建立 Android 專案或 [ xamarin ] 來建立 ios 專案。 如果您想要使用包含的範例檔案 .yml ,請選擇 [.yml檔],然後選擇其中一個隨附的範例管線 (Android、iOS 或建立這兩種) 的組合管線。

  2. 當您的新管線出現時,請查看 YAML 查看其功能。 當您準備好時,請選取 [ 儲存並執行]。

    Save and run button in a new YAML pipeline

  3. 如果您已建立新的 YAML 檔案,請將新的 >azure-pipelines.yml yml 檔案認可至您的存放庫。 當您感到滿意訊息之後,請選取 [儲存後再 執行 一次]。

    如果您想要監看管線的作用,請選取組建作業。 您現在已有可 azure-pipelines.yml 供您自訂的 () 儲存機制中的工作 YAML 管線!

  4. 當您準備好要對管線進行變更時,請在 [ Pipelines ] 頁面中選取該檔案,然後編輯該檔案

進一步閱讀以瞭解自訂管線的一些較常見的方式。

設定 Xamarin 工具

您可以使用 Azure Pipelines 來建立 Xamarin 應用程式,而不需要設定自己的基礎結構。 Xamarin 工具會預先安裝在 Azure Pipelines 的 Microsoft 裝載的代理程式上。 您可以使用 macOS 或 Windows 代理程式來執行 xamarin. Android 組建,以及 macOS 代理程式來執行 xamarin 組建。 如果您是使用自我裝載的代理程式,請安裝下列其中一項工具:

針對已預先安裝的 Xamarin 確切版本,請參閱 Microsoft 裝載的 代理程式。

在存放庫的根目錄中建立名為 >azure-pipelines.yml 的檔案。 然後,將下列程式碼片段新增至您的檔案, azure-pipelines.yml 以選取適當的代理程式組件區:

# https://docs.microsoft.com/azure/devops/pipelines/ecosystems/xamarin
pool:
  vmImage: 'macOS-10.15' # For Windows, use 'windows-2019'

建立 Xamarin Android 應用程式

若要建立 Xamarin Android 應用程式,請將下列程式碼片段新增至您的檔案 azure-pipelines.yml 。 變更值以符合您的專案設定。 如需選項的詳細資訊,請參閱 Xamarin. Android 工作。

variables:
  buildConfiguration: 'Release'
  outputDirectory: '$(build.binariesDirectory)/$(buildConfiguration)'

steps:
- task: NuGetToolInstaller@1

- task: NuGetCommand@2
  inputs:
    restoreSolution: '**/*.sln'

- task: XamarinAndroid@1
  inputs:
    projectFile: '**/*Droid*.csproj'
    outputDirectory: '$(outputDirectory)'
    configuration: '$(buildConfiguration)'
    msbuildVersionOption: '16.0'

簽署 Xamarin. Android 應用程式

如需簽署應用程式的相關資訊,請參閱 在 CI 期間簽署您的行動 Android 應用程式

建立 Xamarin iOS 應用程式

若要建立 Xamarin iOS 應用程式,請將下列程式碼片段新增至您的檔案 azure-pipelines.yml 。 變更值以符合您的專案設定。 如需選項的詳細資訊,請參閱「 Xamarin. iOS 」工作。

variables:
  buildConfiguration: 'Release'

steps:
- task: XamariniOS@2
  inputs:
    solutionFile: '**/*iOS.csproj'
    configuration: '$(buildConfiguration)'
    packageApp: false
    buildForSimulator: true

簽署及布建 Xamarin iOS 應用程式-PackageApp 選項

若要產生已簽署和已布建的 ipa 套件,請將設定 packageApptrue 。 確定您已安裝正確的 Apple 布建設定檔,以及符合您的應用程式套件組合識別碼的 Apple 憑證到執行此作業的代理程式。

若要滿足這些必要的必要條件,請使用 Microsoft 提供的工作來 安裝 apple 布建設定檔安裝 apple 憑證

- task: XamariniOS@2
    inputs:
      solutionFile: '**/*iOS.csproj'
      configuration: 'AppStore'
      packageApp: true

提示

如果執行作業的代理程式已安裝適當的布建設定檔和 Apple 憑證,則 Xamarin 組建工作會產生 ipa 套件。 如果您啟用 packageApp 選項,且代理程式沒有適當的 apple 布建設定檔 (. >.mobileprovision) 和 apple 憑證 ( p12) 組建可能會成功,但不會產生 ipa。

若為 Microsoft 裝載的代理程式,則 ipa 封裝預設位於下列路徑:
{iOS.csproj root}/bin/{Configuration}/{iPhone/iPhoneSimulator}/

您可以藉由將引數新增至 Xamarin 工作來設定輸出路徑:

- task: XamariniOS@2
    inputs:
      solutionFile: '**/*iOS.csproj'
      configuration: 'AppStore'
      packageApp: true
      args: /p:IpaPackageDir="/Users/vsts/agent/2.153.2/work/1/a"

此範例會在組建成品臨時目錄中尋找 ipa。 它已準備好推送至 Azure DevOps 作為每個組建執行的成品。 若要將其推送至 Azure DevOps,請將「發行成品」工作新增至管線的結尾。

如需有關簽署及布建 iOS 應用程式的詳細資訊,請參閱 在 CI 期間簽署您的行動 iOS 應用程式

在 macOS 上設定 Xamarin SDK 版本

若要設定要在 Microsoft 裝載的 macOS 代理程式組件區上使用的特定 Xamarin SDK 版本,請在檔案中的工作之前新增下列程式碼片段 XamariniOSazure-pipelines.yml 。 如需正確設定版本號碼格式的詳細資料 (如下所示 5_4_1) ,請參閱 如何在 Hosted macOS 代理程式上手動選取工具的版本?

- script: sudo $AGENT_HOMEDIRECTORY/scripts/select-xamarin-sdk.sh 5_4_1
  displayName: 'Select Xamarin SDK version'

使用一個管線建立 Xamarin. Android 和 Xamarin iOS 應用程式

您可以在中定義多個 作業 ,以在相同的管線中建立和測試您的 xamarin Android 應用程式、xamarin ios 應用程式和相關應用程式 。 這些工作可以平行執行,以節省時間。 下列完整範例會使用兩個工作,在 Windows 上建立 xamarin Android 應用程式,並在 macOS 上建立 xamarin ios 應用程式。

# Xamarin.Android and Xamarin.iOS
# Build a Xamarin.Android and Xamarin.iOS app.
# Add steps that test, sign, and distribute the app, save build artifacts, and more:
# https://docs.microsoft.com/azure/devops/pipelines/ecosystems/xamarin

jobs:

- job: Android
  pool:
    vmImage: 'windows-2019'

  variables:
    buildConfiguration: 'Release'
    outputDirectory: '$(build.binariesDirectory)/$(buildConfiguration)'

  steps:
  - task: NuGetToolInstaller@1

  - task: NuGetCommand@2
    inputs:
      restoreSolution: '**/*.sln'

  - task: XamarinAndroid@1
    inputs:
      projectFile: '**/*droid*.csproj'
      outputDirectory: '$(outputDirectory)'
      configuration: '$(buildConfiguration)'
      msbuildVersionOption: '16.0'

  - task: AndroidSigning@3
    inputs:
      apksign: false
      zipalign: false
      apkFiles: '$(outputDirectory)/*.apk'

  - task: PublishBuildArtifacts@1
    inputs:
      pathtoPublish: '$(outputDirectory)'

- job: iOS
  pool:
    vmImage: 'macOS-10.15'

  steps:
  # To manually select a Xamarin SDK version on the Hosted macOS agent, enable this script with the SDK version you want to target
  # https://go.microsoft.com/fwlink/?linkid=871629
  - script: sudo $AGENT_HOMEDIRECTORY/scripts/select-xamarin-sdk.sh 5_4_1 
    displayName: 'Select Xamarin SDK version'
    enabled: false

  - task: NuGetToolInstaller@1

  - task: NuGetCommand@2
    inputs:
      restoreSolution: '**/*.sln'

  - task: XamariniOS@2
    inputs:
      solutionFile: '**/*.sln'
      configuration: 'Release'
      buildForSimulator: true
      packageApp: false

清除資源

如果您不需要範例程式碼,請刪除您的 GitHub 存放庫,並 Azure Pipelines 專案。

下一步