簽署行動應用程式
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
若要簽署和布建 Android 或 Apple 作業系統的行動應用程式,您需要管理簽署憑證和 Apple 布建配置檔。 本文說明如何安全地管理憑證和配置檔,以在 Azure Pipelines 中簽署和布建您的應用程式。
注意
您至少需要一個代理程式來執行組建或發行。 您可以使用Microsoft裝載的Linux、macOS或 Windows 組建代理程式,或設定您自己的代理程式。 如需詳細資訊,請參閱 建置和發行代理程式。
簽署 Android 應用程式
請遵循下列步驟來簽署 Android 應用程式,同時保護您的簽署憑證安全。
上傳金鑰存放區檔案
取得包含簽署憑證的金鑰存放區檔案。 Android 檔案說明產生金鑰存放區檔案及其對應金鑰的程式。
在 Azure Pipelines 中,移至 [連結庫>安全檔案]。 選取 [+ 保護檔案 ],並將金鑰存放區檔案上傳至 安全檔案庫。 上傳期間,您的金鑰存放區會加密並安全地儲存。
將簽署工作新增至管線
在 建置應用程式的步驟之後,將AndroidSigning@3 工作新增至 YAML 管線。 在工作中 AndroidSigning@3
:
<apkFiles>
是必要的,而且是要簽署之 APK 檔案的路徑和名稱。 預設值為**/*.apk
。<apksign>
必須是true
,這是預設值。<keystore-file>
是安全檔案庫中已上傳金鑰存放區檔案的名稱。<apksignerKeystorePassword>
是未加密金鑰存放區檔案的密碼。<apksignerKeystoreAlias>
是簽署憑證的金鑰別名。<apksignerKeyPassword>
是與指定別名相關聯之密鑰的密碼。
您可以在 YAML 中設定及使用變數,也可以使用 Azure Pipelines UI 中的 [變數] 索引標籤來設定變數,並在 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 簽署憑證和一或多個佈建配置檔。 下列步驟說明如何取得這些檔案。
取得 P12 簽署憑證
使用 macOS 上的 Xcode 或 Keychain 存取應用程式,將您的開發或散發簽署憑證導出至 .p12 檔案。
若要使用 Xcode 匯出:
移至 [Xcode>喜好設定>帳戶]。
在左欄中,選取您的Apple ID。
在右側,選取您的個人或小組帳戶,然後選取 [ 管理憑證]。
Ctrl+選取您要導出的憑證,然後從功能表中選取 [ 匯出憑證 ]。
在對話框中,輸入憑證名稱、儲存盤案的位置,以及用來保護憑證的密碼。
或者,使用 iOS 簽署中所述的程式,使用 macOS 上的 Keychain Access 應用程式遵循類似的程式,或在 Windows 上產生簽署憑證。
將您的 P12 檔案上傳至 Azure Pipelines 安全檔案庫。 上傳期間,您的憑證會加密並安全地儲存。
在您的管線中,移至 [ 變數 ] 索引標籤,並使用您的憑證密碼作為值來新增名為 P12password 的變數。 請務必選取 鎖定 圖示來保護密碼,並在記錄中遮蔽密碼。
取得布建配置檔
如果您的應用程式未使用自動簽署,您可以從 Apple Developer 入口網站下載應用程式佈建設定檔。 如需詳細資訊,請參閱 編輯、下載或刪除布建配置檔。
您也可以使用 Xcode 來存取安裝在 Mac 上的佈建設定檔。 在 Xcode 中,移至 [Xcode>喜好設定>帳戶]。 選取您的 Apple ID 和小組,然後選取 [ 下載手動配置檔]。
在 Azure Pipelines 中,將您的布建配置檔上傳至 安全檔案庫。 上傳期間,您的檔案會加密並安全地儲存。
將簽署和布建工作新增至管線
若要簽署並布建應用程式,您可以在每個組建期間安裝憑證和配置檔,或 預安裝 macOS 組建代理程式上的檔案。
在每個組建期間安裝憑證和配置檔
當您沒有持續存取組建代理程式時,請在每個組建期間安裝憑證和配置檔,例如當您使用 託管的 macOS 代理程式時。 P12 憑證和布建配置檔會安裝在組建的開頭,並在組建完成時移除。
在 Xcode 或 Xamarin.iOS 工作之前,將 InstallAppleCertificate@2 工作新增至 YAML 管線。 在程式代碼中,將 取代
<secure-file.p12>
為您上傳的 .p12 檔案名稱。 使用安全P12password
的變數。- task: InstallAppleCertificate@2 inputs: certSecureFile: '<secure-file.p12>' certPwd: '$(P12password)'
注意
在工作中
InstallAppleCertificate@2
,deleteCert
參數預設為true
,這會在建置後移除憑證。在 Xcode 或 Xamarin.iOS 工作之前, 將InstallAppleProvisioningProfile@1工作新增至 YAML。 將取代
<secure-file.mobileprovision>
為您佈建配置檔案的名稱。- task: InstallAppleProvisioningProfile@1 inputs: provProfileSecureFile: '<secure-file.mobileprovision>'
注意
在工作中
InstallAppleProvisioningProfile@1
,removeProfile
參數預設為true
,這會在建置後移除配置檔。
任何組建代理程式現在可以安全地簽署您的應用程式,而不需要在組建機器本身上進行任何憑證或配置檔管理。
在macOS組建代理程式上預安裝憑證和配置檔
您可以在 macOS 組建代理程式上預安裝簽署憑證和布建配置檔,而不是在建置期間安裝簽署憑證和布建配置檔。 然後,這些檔案可供組建繼續使用。 只有在您信任可存取代理程序計算機上的macOS金鑰鏈的人員與進程時,才使用這個方法。
預安裝 P12 憑證
若要在預設金鑰鏈中安裝 P12 憑證,請在組建代理程式上從 macOS 終端機視窗執行下列命令。 以 P12 檔案的路徑與名稱取代
<certificate.p12>
。 以 P12 檔案的加密密碼取代<password>
。sudo security import <certificate.p12> -P <password>
將新的變數新增至名為 KEYCHAIN_PWD 的管線。 將值設定為預設密鑰鏈,這通常是啟動代理程式之用戶的密碼。 請務必選取 鎖定 圖示來保護此密碼。
預安裝布建配置檔
開啟 macOS 終端機視窗並輸入
security find-identity -v -p codesigning
,以尋找簽署身分識別的完整名稱。 您會看到表單iPhone Developer/Distribution: Developer Name (ID)
中的簽署身分識別清單。 如果身分識別無效,您會在身分識別之後看到類似(CSSMERR_TP_CERT_REVOKED)
的內容。若要在代理程式電腦上安裝布建配置檔,請從 macOS 終端機視窗執行下列命令。 將 取代
<profile>
為布建配置檔案的路徑,並將 取代<UUID>
為布建配置檔 UUID,這是不含.mobileprovision
擴展名的布建配置檔檔名。sudo cp <profile> ~/Library/MobileDevice/Provisioning Profiles/<UUID>.mobileprovision
新增使用預設金鑰鏈的簽署和布建工作
在 Xcode 或 Xamarin.iOS 工作之前,將 InstallAppleCertificate@2 工作新增至 YAML 管線。 在程式代碼中,設定下列值:
certSecureFile
:已上傳 . p12 檔案的名稱。certPwd
:安全P12password
的變數。signingIdentity
:簽署身分識別的完整名稱。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 建置工作中設定下列設定。
建置工作中的安全檔案參考會使用 和的provisioningProfileUuid
變數signingIdentity
。 這些變數會自動由 [安裝 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 代理程式。
- 代理程式集區和佇列,請參閱 建立和管理代理程式集區。
- 管線中的變數,請參閱 定義變數。
- 管線疑難解答,請參閱 針對管線執行進行疑難解答。