クイック スタート: パイプラインを使用して Xamarin アプリをビルドしてデプロイする

Azure Pipelines

概要Xamarin アプリをデプロイするパイプラインAzure Pipelinesを使用して、Xamarinを使用してデプロイできます。 同じパイプラインまたは個別のパイプラインに 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. Azure Pipelines アプリをインストールするために、GitHub にリダイレクトされる場合があります。 その場合は、[ 承認 & インストール] を選択します。

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

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

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

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

    パイプラインの動作を監視する場合は、ビルド ジョブを選択します。 これで、カスタマイズする準備が整った作業用の YAML パイプライン ( ) がリポジトリ azure-pipelines.yml に作成されます。

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

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

Xamarin ツールを設定する

独自のインフラストラクチャAzure Pipelinesを設定することなく、Xamarin アプリをビルドするためにアプリを使用できます。 Xamarin ツールは、MicrosoftによってホストされるエージェントにプレインストールAzure Pipelines。 macOS または Windows エージェントを使用して Xamarin.Android ビルドを実行し、macOS エージェントを使用して Xamarin.iOS ビルドを実行できます。 セルフホステッド エージェントを使用している場合は、Windows Visual Studio for Macエージェント用または 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 オプション

署名済みでプロビジョニングされた Xamarin.iOS アプリ .ipa パッケージを生成するには、 を に設定し、このタスクの前に、ジョブを実行しているエージェントにアプリ バンドル ID と一致する適切な Apple プロビジョニング プロファイルと Apple 証明書をインストールしてください。 packageApp true

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

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

ヒント

Xamarin.iOS ビルド タスクでは、ジョブを実行しているエージェントに適切なプロビジョニング プロファイルと Apple 証明書がインストールされている場合にのみ、.ipa パッケージが生成されます。 packageApp オプションを有効にし、エージェントに適切な Apple プロビジョニング プロファイル (.mobileprovision) と apple certificate(.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"

この例では、ビルド実行ごとに成果物として Azure DevOpsにプッシュする準備が整ったビルド成果物ステージング ディレクトリ内の .ipa を検索します。プロジェクトにプッシュするにはAzure DevOpsパイプラインの末尾に [成果物の発行] タスクを追加します。

iOS アプリの署名とプロビジョニングの詳細については、「CI 中にモバイル iOS アプリに署名する」を参照してください

macOS で Xamarin SDK のバージョンを設定する

Microsoft ホステッド macOS エージェント プールで使用する特定の Xamarin SDK バージョンを設定するには、ファイル内のタスクの前に次のスニペット XamariniOS を追加 azure-pipelines.yml します。 バージョン番号を適切に書式設定する方法 (以下 の 5_4_1 を参照) については、「ホスト されている 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します。

次の手順