モバイル アプリに署名する
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
Android または Apple オペレーティング システム用のモバイル アプリに署名してプロビジョニングを行うには、署名証明書と Apple プロビジョニング プロファイルを管理する必要があります。 この記事では、Azure Pipelines でアプリに署名してプロビジョニングを行うための証明書とプロファイルを安全に管理する方法について説明します。
Note
ビルドまたはリリースを実行するには、1 つ以上のエージェントが必要になります。 Microsoft がホストする Linux、macOS、または Windows ビルド エージェントを使用することも、独自のエージェントをセットアップすることもできます。 詳細については、ビルド エージェントとリリース エージェントに関する記事を参照してください。
Android アプリの署名
署名証明書を安全に保ちながら Android アプリに署名するには、次の手順を実行します。
キーストア ファイルをアップロードする
署名証明書が含まれるキーストア ファイルを取得します。 Android のドキュメントでは、キーストア ファイルとそれに対応するキーの生成プロセスについての説明があります。
Azure Pipelines で、[Libraries] (ライブラリ)>[Secure files] (セキュア ファイル) に移動します。 [+ Secure file] (セキュア ファイル) を選択し、セキュア ファイル ライブラリにキーストア ファイルをアップロードします。 アップロード時にキーストアが暗号化され、安全に保存されます。
署名タスクをパイプラインに追加する
アプリをビルドする手順の後に、AndroidSigning@3 タスクを YAML パイプラインに追加します。 AndroidSigning@3
タスクでは、以下が必要になります。
<apkFiles>
は、署名する APK ファイルのパスと名前で、必須です。 既定値は、**/*.apk
です。<apksign>
はtrue
(既定値) にしておく必要があります。<keystore-file>
は、セキュア ファイル ライブラリにアップロードされたキーストア ファイルの名前です。<apksignerKeystorePassword>
は、暗号化されていないキーストア ファイルのパスワードです。<apksignerKeystoreAlias>
は署名証明書のキー エイリアスです。<apksignerKeyPassword>
は、指定のエイリアスに関連付けられたキーのパスワードです。
YAML で変数を設定して使用することも、Azure Pipelines UI の [Variables] (変数) タブを使用して変数を設定し、YAML で参照することもできます。
variables:
keystore-password: <keystore file password>
key-alias: <key alias for the signing certificater>
key-password: <password for the key associated with the alias>
steps:
- task: AndroidSigning@3
displayName: 'Signing and aligning APK file(s) **/*.apk'
inputs:
apkFiles: '**/*.apk'
apksign: true
apksignerKeystoreFile: <keystore-filename.keystore>
apksignerKeystorePassword: $(keystore-password)
apksignerKeystoreAlias: $(key-alias)
apksignerKeyPassword: $(key-password)
これで、ビルド マシン自体で証明書を管理することなく、ビルド エージェントが安全にアプリに署名できるようになりました。
Apple iOS、macOS、tvOS、または watchOS のアプリに署名する
アプリに署名してプロビジョニングを行うには、Xcode または Xamarin.iOS ビルドから、P12 署名証明書と 1 つ以上のプロビジョニング プロファイルにアクセスできるようにする必要があります。 これらのファイルの取得方法を以下の手順で説明します。
P12 署名証明書を取得する
macOS の Xcode またはキーチェーン アクセス アプリを使用して、開発または配布用の署名証明書を .p12 ファイルにエクスポートします。
Xcode を使用してエクスポートするには:
[Xcode]>[Preferences] (環境設定)>[Accounts] (アカウント) に移動します。
左側の列で、Apple ID を選択します。
右側で、個人用アカウントまたはチーム アカウントを選択し、[Manage Certificates] (証明書の管理) を選択します。
Ctrl キーを押しながら、エクスポートする証明書を選択し、メニューから [Export certificate] (証明書のエクスポート) を選択します。
ダイアログ ボックスで、証明書名、ファイルを保存する場所、証明書をセキュリティで保護するためのパスワードを入力します。
または、iOS 署名に関するページで説明されている手順に従い、macOS のキーチェーン アクセス アプリを使用して同様のプロセスを実行するか、Windows で署名証明書を生成します。
P12 ファイルを Azure Pipelines セキュア ファイル ライブラリにアップロードします。 アップロード時に証明書が暗号化され、安全に保存されます。
パイプラインで、[Variables] (変数) タブに移動し、証明書のパスワードを値として指定した P12password という名前の変数を追加します。 パスワードを保護し、ログに記録されないようにするには、必ずロック アイコンを選択してください。
プロビジョニング プロファイルを取得する
アプリで自動署名を使用していない場合は、Apple 開発者ポータルからアプリ プロビジョニング プロファイルをダウンロードできます。 詳細については、「プロビジョニングプロファイルを編集、ダウンロード、削除する」を参照してください。
Xcode を使用して、Mac にインストールされているプロビジョニング プロファイルにアクセスすることもできます。 Xcode で、[Xcode]>[Preferences] (環境設定)>[Accounts] (アカウント) に移動します。 Apple ID とチームを選択し、[Download Manual Profiles] (手動プロファイルのダウンロード) を選択します。
Azure Pipelines で、プロビジョニング プロファイルをセキュア ファイル ライブラリにアップロードします。 アップロード時にファイルが暗号化され、安全に保存されます。
署名タスクとプロビジョニング タスクをパイプラインに追加する
アプリに署名してプロビジョニングを行うには、それぞれのビルド時に証明書とプロファイルをインストールするか、macOS ビルド エージェントにファイルをプレインストールします。
各ビルド時に証明書とプロファイルをインストールする
ホストされている macOS エージェントを使用する場合など、ビルド エージェントへの永続的なアクセス権がない場合は、それぞれのビルド中に証明書とプロファイルをインストールします。 P12 証明書とプロビジョニング プロファイルは、ビルドの開始時にインストールされ、ビルドの完了時に削除されます。
InstallAppleCertificate@2 タスクを YAML パイプラインに追加します (Xcode タスクまたは Xamarin.iOS タスクの前)。 コード内で、
<secure-file.p12>
をアップロードした .p12 ファイルの名前に置き換えます。 セキュアなP12password
用に変数を使用します。- task: InstallAppleCertificate@2 inputs: certSecureFile: '<secure-file.p12>' certPwd: '$(P12password)'
Note
InstallAppleCertificate@2
タスクでは、deleteCert
パラメーターが既定でtrue
に設定されています。この設定ではビルド後に証明書が削除されます。InstallAppleProvisioningProfile@1 タスクを YAML に追加します (Xcode タスクまたは Xamarin.iOS タスクの前)。
<secure-file.mobileprovision>
をプロビジョニング プロファイルのファイル名に置き換えます。- task: InstallAppleProvisioningProfile@1 inputs: provProfileSecureFile: '<secure-file.mobileprovision>'
Note
InstallAppleProvisioningProfile@1
タスクでは、removeProfile
パラメーターが既定でtrue
に設定されています。この設定ではビルド後にプロファイルが削除されます。
これで、ビルド マシン自体で証明書またはプロファイルを管理することなく、ビルド エージェントが安全にアプリに署名できるようになりました。
macOS ビルド エージェントに証明書とプロファイルをプレインストールする
ビルド時に署名証明書とプロビジョニング プロファイルをインストールする代わりに、macOS ビルド エージェントでプレインストールできます。 これらのファイルは、その後ビルドで引き続き使用できます。 この方法は、エージェント マシン上の macOS キーチェーンにアクセスできるユーザーとプロセスを信頼する場合にのみ使用してください。
P12 証明書をプレインストールする
既定のキーチェーンに P12 証明書をインストールするには、ビルド エージェントの macOS ターミナル ウィンドウから次のコマンドを実行します。
<certificate.p12>
は、P12 ファイルのパスおよび名前に置き換えてください。<password>
を P12 ファイルの暗号化パスワードに置き換えます。sudo security import <certificate.p12> -P <password>
KEYCHAIN_PWD という名前の新しい変数をパイプラインに追加します。 値をパスワードとして既定のキーチェーンに設定します。これは通常、エージェントを起動するユーザーのパスワードです。 このパスワードを保護するために、必ずロックアイコンを選択してください。
プロビジョニング プロファイルをプレインストールする
macOS ターミナル ウィンドウを開き、「
security find-identity -v -p codesigning
」と入力して、署名 ID の完全名を特定します。 署名 ID の一覧がiPhone Developer/Distribution: Developer Name (ID)
という形式で表示されます。 ID が無効な場合は、ID の後に(CSSMERR_TP_CERT_REVOKED)
のような文字列が表示されます。エージェント マシンにプロビジョニング プロファイルをインストールするには、macOS ターミナルウィンドウから次のコマンドを実行します。
<profile>
をプロビジョニング プロファイルのファイル パスに置き換え、<UUID>
をプロビジョニング プロファイルの UUID (プロビジョニング プロファイルの、.mobileprovision
拡張子のないファイル名) に置き換えてください。sudo cp <profile> ~/Library/MobileDevice/Provisioning Profiles/<UUID>.mobileprovision
既定のキーチェーンを使用する署名タスクとプロビジョニング タスクを追加する
InstallAppleCertificate@2 タスクを YAML パイプラインに追加します (Xcode タスクまたは Xamarin.iOS タスクの前)。 コード内で、以下の値を設定します。
certSecureFile
: アップロードした .p12 ファイルの名前。certPwd
: セキュアなP12password
の変数。signingIdentity
: 署名 ID の完全名。keychain
: 既定のキーチェーンへのアクセスを許可するにはdefault
を指定します。keychainPassword
:KEYCHAIN_PWD
変数。deleteCert
: ビルド間で証明書を保持するにはfalse
を指定します。
- task: InstallAppleCertificate@2 inputs: certSecureFile: '<secure-file.p12>' certPwd: '$(P12password)' signingIdentity: <full-signing-identity> keychain: default keychainPassword: `$(KEYCHAIN_PWD) deleteCert: false
InstallAppleProvisioningProfile@1 タスクを追加します。 コードで次の手順を実行します。
provProfileSecureFile
を、プロビジョニング プロファイルのファイル名に設定します。- ビルド間でプロファイルが保持されるように、
removeProfile
をfalse
に設定します。
- task: InstallAppleProvisioningProfile@1 inputs: provProfileSecureFile: '<secure-file.mobileprovision>' removeProfile: false
これで、証明書やプロファイルの管理作業を追加することなく、macOS ビルド エージェントは、すべてのビルドに対して、アプリに安全に署名してプロビジョニングを行えるようになりました。
Xcode または Xamarin.iOS ビルド タスクでセキュア ファイルを参照する
パイプラインでセキュアな証明書とプロファイルを使用するには、Xcode または Xamarin.iOS ビルド タスクで以下の設定を構成します。
ビルド タスク内のセキュア ファイル参照では、signingIdentity
と provisioningProfileUuid
に対応する変数が使用されます。 これらの変数は、選択した証明書とプロビジョニング プロファイルの "Apple 証明書のインストール" タスクと "Apple プロビジョニング プロファイルのインストール" タスクによって自動的に設定されます。
Xcode の場合:
- task: Xcode@5
inputs:
signingOption: 'manual'
signingIdentity: '$(APPLE_CERTIFICATE_SIGNING_IDENTITY)'
provisioningProfileUuid: '$(APPLE_PROV_PROFILE_UUID)'
Xamarin.iOS の場合:
- task: XamariniOS@2
inputs:
solutionFile: '**/*.iOS.csproj'
signingIdentity: '$(APPLE_CERTIFICATE_SIGNING_IDENTITY)'
signingProvisioningProfileID: '$(APPLE_PROV_PROFILE_UUID)'
これで、ビルド マシン自体で証明書やプロファイルの管理作業を追加することなく、パイプライン ビルド エージェントがアプリに安全に署名しプロビジョニングを行えるようになりました。
関連するコンテンツ
詳細情報は、次のとおりです。
- Android アプリのパイプラインについては、「Android アプリのビルド、テスト、デプロイ」を参照してください。
- iOS アプリのパイプラインについては、「Xcode アプリのビルド、テスト、デプロイ」を参照してください。
- エージェントについては、「Azure Pipelines エージェント」を参照してください。
- エージェント プールとキューについては、「エージェント プールの作成と管理」を参照してください。
- パイプライン内の変数については、「変数の定義」を参照してください。
- パイプラインのトラブルシューティングについては、「パイプラインの実行をトラブルシューティングする」を参照してください。