クイックスタート: パイプラインを使用して 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. フォームアプリの構築」を参照してください。

Azure Pipelines にサインインします

Azure Pipelinesにサインインします。 サインインすると、ブラウザーに移動して https://dev.azure.com/my-organization-name Azure DevOps ダッシュボードが表示されます。

選択した組織内で、 プロジェクト を作成します。 組織内にプロジェクトがない場合は、[ 開始するプロジェクトの作成 ] 画面が表示されます。 それ以外の場合は、ダッシュボードの右上隅にある [ プロジェクトの作成 ] ボタンを選択します。

パイプラインを作成する

  1. Azure DevOps 組織にサインインし、プロジェクトに移動します。

  2. [ パイプライン] にアクセスし、[ 新しいパイプライン] を選択します。

  3. 最初に、ソース コードの場所として GitHub を選択し、ウィザードの手順を実行します。

  4. サインインするために GitHub にリダイレクトされる場合があります。 その場合は、GitHub の資格情報を入力します。

  5. リポジトリの一覧が表示されたら、リポジトリを選択します。

  6. Azure Pipelines アプリをインストールするために、GitHub にリダイレクトされる場合があります。 その場合は、[ 承認 & インストール] を選択します。

  1. [ 構成 ] タブが表示されたら、[ xamarin android ] を選択して android プロジェクトをビルドするか、 xamarin ios プロジェクトをビルドします。 含まれているサンプルファイルを使用する場合は .yml 、[ 既存の Azure Pipelines yaml ファイル ] を選択し、含まれているサンプルパイプライン (Android、iOS、または両方をビルドする結合パイプライン) のいずれかを選択します。

  2. 新しいパイプラインが表示されたら、YAML でその動作を確認します。 準備ができたら、[ 保存して実行] を選択します。

    新しい YAML パイプラインでの [保存して実行] ボタン

  3. 新しい YAML ファイルを作成した場合は、新しい azure-pipelines ファイルをリポジトリにコミットするように求めるメッセージが表示されます。 メッセージが表示されたら、[ 保存して再度実行 する] を選択します。

    パイプラインの動作を監視する場合は、[ビルド] ジョブを選択します。 これで、お客様がカスタマイズできるようにするための機能を備えた既製のパイプライン () がリポジトリに作成されました azure-pipelines.yml

  4. パイプラインを変更する準備ができたら、[ パイプライン ] ページでそれを選択し、ファイルを 編集azure-pipelines.yml ます。

  5. パイプラインをカスタマイズする一般的な方法については、以下のセクションを参照してください。

Xamarin ツールを設定する

独自のインフラストラクチャAzure Pipelinesを設定することなく、Xamarin アプリをビルドするために、このアプリを使用できます。 Xamarin ツールは、Microsoft で ホストされているエージェント にプレインストールAzure Pipelines。 macOS または Windows エージェントを使用して Xamarin.Android ビルドを実行し、macOS エージェントを使用して Xamarin.iOS ビルドを実行できます。 セルフホステッド エージェントを使用している場合は、Visual Studio for Mac Xamarin for Windows エージェントまたは macOS エージェント用の Visual Studio Tools をインストールする必要があります。

プレインストールされている 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 パッケージを生成するには、 packageApp をに設定 true し、このタスクの前に、アプリバンドル ID と一致する適切な Apple プロビジョニングプロファイルと Apple 証明書をジョブを実行しているエージェントにインストールしたことを確認します。

これらの必須の要件を満たすには、 Apple プロビジョニングプロファイルのインストールapple 証明書のインストールについて、Microsoft が提供するタスクを使用します。

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

ヒント

Ipa パッケージは、ジョブを実行しているエージェントに適切なプロビジョニングプロファイルと Apple 証明書がインストールされている場合にのみ生成されます。 PackageApp オプションを有効にした場合、エージェントに適切な apple プロビジョニングプロファイル (. .mobileprovision) と apple 証明書 (p12) がないと、ビルドは成功したものの、ipa が生成されない可能性があります。

Microsoft ホステッドエージェントの場合、ipa パッケージは既定で [パス] の下にあります。
{iOS.csproj root}/bin/{Configuration}/{iPhone/iPhoneSimulator}/

出力パスを構成するには、Xamarin. iOS タスクに引数を追加します。

- 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 のバージョンを設定するには、ファイル内のタスクの前に次のスニペットを追加し XamariniOS azure-pipelines.yml ます。 バージョン番号を適切に書式設定する方法の詳細については、「ホストさ れている macOS エージェントで手動でツールのバージョンを選択するにはどうすればよいですか?」を参照してください。

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

1つのパイプラインを使用して Xamarin Android アプリと Xamarin iOS アプリをビルドする

で複数の ジョブ を定義することで、同じパイプラインで xamarin android アプリ、xamarin iOS アプリ、関連アプリをビルドしてテストでき azure-pipelines.yml ます。 これらのジョブは、時間を節約するために並列に実行できます。 次の完全な例では、2 つのジョブを使用して、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します。

次のステップ