モバイルアプリに署名する

Azure Pipelines |Azure DevOps Server 2020 |Azure DevOps Server 2019 |TFS 2018 | TFS 2017.2

Android または Apple オペレーティングシステム用のアプリを開発する場合は、最終的に署名証明書を管理する必要があり、Apple アプリの場合は プロビジョニングプロファイルを使用します。 この記事では、アプリの署名とプロビジョニングのためにそれらを安全に管理する方法について説明します。

ヒント

Microsoft がホストする Linux、macOS、または Windows ビルドエージェントを使用するか、独自のエージェントを設定します。 「 ビルドエージェントとリリースエージェント」を参照してください。

この記事には、次の内容が含まれます。

注意

Microsoft Team Foundation Server (TFS) 2018 以前のバージョンでは、ビルドとリリースの "パイプライン" は "定義"、"実行" は "ビルド"、"サービス接続" は "サービス エンドポイント"、"ステージ" は "環境"、"ジョブ" は "フェーズ" と呼ばれます。

Android アプリの署名

署名証明書を安全に保つために、次の手順に従って Android アプリに署名します。

  1. 最初に、署名証明書を含むキーストアファイルを取得します。 Android のドキュメントでは、キーストアファイルとそれに対応するキーを生成するプロセスについて説明しています。

  2. Android または Xamarin のビルドテンプレートからビルドパイプラインを作成します。 または、既にビルドパイプラインがある場合は、APK をビルドするタスクの後に Android 署名 タスクを追加します。

  3. Android 署名タスクの [ APK に署名 する] チェックボックスをオンにして、有効にします。

  4. [ キーストアファイル ] フィールドの横にある設定アイコンをクリックし、キーストアファイルを セキュリティで保護されたファイルライブラリにアップロードします。 アップロード中、キーストアは暗号化され、安全に保存されます。

  5. キーストアがセキュアファイルライブラリにアップロードされたら、[ キーストアファイル ] ドロップダウンから選択します。

  6. [ 変数 ] タブにアクセスし、次の変数を追加します。 [ ] 列に、キー ストアのパスワードキーのエイリアス、およびキーの パスワード を入力します。

    • keystore-password: 暗号化されていないキーストア ファイルのパスワード。 必ずロック アイコン をクリック してください。 これにより、パスワードがセキュリティで保護され、ログに保存されます。

    • key-alias: 生成した署名証明書のキー エイリアス。

    • key-password: 指定したエイリアスに関連付けられているキーのパスワード。 ここでも、必ずロック アイコンを クリック してください。

      Android 署名変数

  7. [タスク] タブ 戻り、署名オプションで新しく作成した変数の名前を参照します。

    Android 署名の入力値

ビルド パイプラインを保存すると、すべてが設定されます。 これで、ビルド エージェントは、ビルド マシン自体で証明書を管理することなく、アプリに安全に署名できます。

Apple iOS、macOS、tvOS、または watchOS アプリに署名する

Xcode または Xamarin.iOS ビルドでアプリの署名とプロビジョニングを行う場合は、P12 署名証明書と 1 つ以上のプロビジョニング プロファイルにアクセスする必要があります。 以下のセクションでは、これらのファイルを取得する方法について説明します。

P12 署名証明書を取得する

開発または配布の署名証明書を作成した後、macOS 上の Xcode またはキーチェーン アクセス アプリを使用してファイル .p12 にエクスポートします。

  1. Xcode 8 以下を使用してエクスポートするには 、Xcode > Preferences...Accounts に移動し > 、Apple Developer アカウントを選択します。

  2. [ 詳細の表示...] をクリックし、エクスポートする署名 ID を右クリックし、[ エクスポート ] をクリックします

  3. ファイル名とパスワードを入力します。 後で必要になりますので、パスワードをメモします。

    Xcode Export 証明書

  4. または、macOS で キーチェーンアクセス アプリを使用して同様のプロセスに従うか、Windows で署名証明書を生成します。 この方法をお勧めする場合は、 この記事で説明 されている手順を使用します。

プロビジョニングプロファイルを取得する

アプリで自動署名を使用しない限り、Apple Developer portal からアプリプロビジョニングプロファイルをダウンロードできます。 また、Xcode を使用して、Mac にインストールされているものにアクセスすることもできます。

  1. Xcode 8 以下を使用する場合は、 Xcode の [設定] [アカウント] にアクセスして、 > > Apple 開発者アカウントを選択します。

  2. 使用するプロビジョニングプロファイルを右クリックし、[ Finder で表示] を選択します。

  3. 強調表示されたファイルを Finder から別の場所にコピーし、わかりやすいファイル名を指定します。

    Finder での Xcode の表示

ビルドの構成

ビルドが署名証明書にアクセスするための2つの推奨される方法と、アプリの署名とプロビジョニングのためのプロビジョニングプロファイルがあります。

  1. ビルド中のインストール
  2. MacOS ビルドエージェントへのプレインストール

詳細については、次のいずれかのタブを選択してください。

このメソッドは、ホストされている macOS エージェントなど、ビルドエージェントへの永続的アクセスがない場合に使用します。 P12 証明書とプロビジョニングプロファイルは、ビルドの開始時にインストールされ、ビルドが完了すると削除されます。

ビルド中に P12 証明書をインストールする

ビジュアルエディター
  1. Xcode または Xamarin. iOS タスクの前に、ビルドに [ Apple 証明書のインストール ] タスクを追加します。
  2. [証明書 (P12) ] フィールドの横にある設定アイコンをクリックし、P12 ファイルをセキュリティで保護されたファイル ライブラリ にアップロードします。 アップロード時に、証明書が暗号化され、安全に格納されます。
  3. 証明書がセキュリティで保護されたファイル ライブラリにアップロードされた後、[証明書 (P12) ] ドロップダウンで選択します。
  4. [変数] タブに移動 し、 という名前の変数を追加します P12password 。 その値を証明書のパスワードに設定します。 必ずロック アイコン をクリック してください。 これにより、パスワードがセキュリティで保護され、ログに保存されます。
  5. [タスク] タブに る。[Apple 証明書のインストール] タスク の設定で、新しく作成した変数を [ 証明書 (P12) パスワード] フィールドで次のように参照 します。 $(P12password)
サンプル YAML
  1. P12 ファイルを Secure Files ライブラリ にアップロードします。 アップロード時に、証明書が暗号化され、安全に格納されます。

  2. [変数] タブに移動 し、 という名前の変数を追加します P12password 。 その値を証明書のパスワードに設定します。 必ずロック アイコン をクリック してください。 これにより、パスワードがセキュリティで保護され、ログに保存されます。

  3. Xcode または Xamarin.iOS タスクの前に、Apple 証明書のインストール タスクを YAML に追加します。

    - task: InstallAppleCertificate@2
        inputs:
          certSecureFile: 'my-secure-file.p12' # replace my-secure-file.p12 with the name of your P12 file.
          certPwd: '$(P12password)'
    

ビルド中にプロビジョニング プロファイルをインストールする

ビジュアル エディター
  1. Xcode または Xamarin.iOS タスクの前に、Apple プロビジョニング プロファイルのインストール タスクをビルドに追加します。
  2. [プロビジョニング プロファイル の場所] オプションで 、[ セキュリティで保護 されたファイル] を選択します (YAML では secureFiles )。
  3. [ プロビジョニングプロファイル ] フィールドの横にある設定アイコンをクリックし、プロビジョニングプロファイルファイルを セキュリティで保護されたファイルライブラリにアップロードします。 アップロード中、証明書は暗号化され、安全に保存されます。
  4. 証明書がセキュリティで保護されたファイルライブラリにアップロードされたら、[ プロビジョニングプロファイル ] ドロップダウンから選択します。
  5. [ ビルド後にプロファイルを削除] というチェックボックスをオンにします。 これにより、プロビジョニングプロファイルがエージェントコンピューターに残されないようになります。
YAML のサンプル
  1. プロビジョニングプロファイルを セキュリティで保護されたファイルライブラリにアップロードします。 アップロード中、証明書は暗号化され、安全に保存されます。

  2. Xcode または Xamarin. iOS タスクの前に、[ Apple プロビジョニングプロファイルのインストール ] タスクを yaml に追加します。

    - task: InstallAppleProvisioningProfile@1
        inputs:
          provProfileSecureFile: 'my-provisioning-profile.mobileprovision' # replace my-provisioning-profile.mobileprovision with the name of your provisioning profile file.
    

    付箋ビルドの既定値が true になっ た後にプロファイルを削除 します。

Xcode タスク内のファイルを参照する

ビジュアルエディター
  1. Xcode タスクを選択します。
  2. [ 署名スタイル ] オプションで、[ 手動署名] を選択します。
  3. [ 署名 id ] フィールドに、「」と入力し $(APPLE_CERTIFICATE_SIGNING_IDENTITY) ます。 この変数は、選択した証明書の [ Apple 証明書のインストール ] タスクによって自動的に設定されます。
  4. [ プロビジョニングプロファイル UUID ] フィールドに、「」と入力し $(APPLE_PROV_PROFILE_UUID) ます。 この変数は、選択したプロビジョニングプロファイルの [ Apple プロビジョニングプロファイルのインストール ] タスクによって自動的に設定されます。
YAML のサンプル
- task: Xcode@5
  inputs:
    signingOption: 'manual'
    signingIdentity: '$(APPLE_CERTIFICATE_SIGNING_IDENTITY)'
    provisioningProfileUuid: '$(APPLE_PROV_PROFILE_UUID)'

Xamarin. iOS タスク内のファイルを参照する

ビジュアル エディター
  1. [Xamarin.iOS] タスクを 選択します。
  2. [Override using]/(使用してオーバーライド する)オプションで、[識別子] を選択します
  3. [署名 ID] フィールドに「」 と入力します $(APPLE_CERTIFICATE_SIGNING_IDENTITY) 。 この変数は、選択した証明書の Apple 証明書 のインストール タスクによって自動的に設定されます。
  4. [ プロビジョニング プロファイル UUID] フィールドに「」 と入力します $(APPLE_PROV_PROFILE_UUID) 。 この変数は、選択したプロビジョニング プロファイル の Apple プロビジョニング プロファイルのインストール タスクによって自動的に設定されます。
サンプル YAML
- task: XamariniOS@2
    inputs:
      solutionFile: '**/*.iOS.csproj'
      signingIdentity: '$(APPLE_CERTIFICATE_SIGNING_IDENTITY)'
      signingProvisioningProfileID: '$(APPLE_PROV_PROFILE_UUID)'

ビルド パイプラインを保存すると、すべてが設定されます。 これで、ビルド エージェントはアプリに安全に署名してプロビジョニングできます。

よく寄せられる質問

エージェントは必要ですか?

ビルドまたはリリースを実行するには、エージェントが少なくとも 1 つ必要です。

問題が発生しています。 どのように対処すればよいですか?

ビルドとリリースのトラブルシューティングに関するページを参照してください。

既定のエージェント プールが選択できず、ビルドまたはリリースをキューに入れることができません。 これをどのように修正すればよいですか?

エージェント プール」を参照してください。

NuGet プッシュ タスクが次のエラーで失敗します: "Error: unable to get local issuer certificate" (エラー: ローカル発行者の証明書を取得できません)。 どうしたらいいですか。

これは、信頼されたルート証明書を追加することで修正できます。 ビルド エージェントに NODE_EXTRA_CA_CERTS=file 環境変数を追加するか、パイプラインに NODE.EXTRA.CA.CERTS=file タスク変数を追加することができます。 詳細については、環境変数に関するページを参照してください。

TFS をオンプレミスで使用していますが、これらの機能の一部が表示されません。 なぜでしょうか。

これらの機能の一部は Azure Pipelines でのみ使用でき、オンプレミスではまだ使用できません。 TFS の最新バージョンにアップグレードした場合は、一部の機能をオンプレミスで使用できます。