共用方式為


簽署行動應用程式

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

若要簽署和布建 Android 或 Apple 作業系統的行動應用程式,您需要管理簽署憑證和 Apple 布建配置檔。 本文說明如何安全地管理憑證和配置檔,以在 Azure Pipelines 中簽署和布建您的應用程式。

注意

您至少需要一個代理程式來執行組建或發行。 您可以使用Microsoft裝載的Linux、macOS或 Windows 組建代理程式,或設定您自己的代理程式。 如需詳細資訊,請參閱 建置和發行代理程式

簽署 Android 應用程式

請遵循下列步驟來簽署 Android 應用程式,同時保護您的簽署憑證安全。

上傳金鑰存放區檔案

  1. 取得包含簽署憑證的金鑰存放區檔案。 Android 檔案說明產生金鑰存放區檔案及其對應金鑰的程式。

  2. 在 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 簽署憑證

  1. 使用 macOS 上的 Xcode 或 Keychain 存取應用程式,將您的開發或散發簽署憑證導出至 .p12 檔案。

    • 若要使用 Xcode 匯出:

      1. 移至 [Xcode>喜好設定>帳戶]。

      2. 在左欄中,選取您的Apple ID。

      3. 在右側,選取您的個人或小組帳戶,然後選取 [ 管理憑證]。

      4. Ctrl+選取您要導出的憑證,然後從功能表中選取 [ 匯出憑證 ]。

        使用 Xcode 導出憑證的螢幕快照。

      5. 在對話框中,輸入憑證名稱、儲存盤案的位置,以及用來保護憑證的密碼。

    • 或者,使用 iOS 簽署中所述的程式,使用 macOS 上的 Keychain Access 應用程式遵循類似的程式,或在 Windows 上產生簽署憑證。

  2. 將您的 P12 檔案上傳至 Azure Pipelines 安全檔案庫。 上傳期間,您的憑證會加密並安全地儲存。

  3. 在您的管線中,移至 [ 變數 ] 索引標籤,並使用您的憑證密碼作為值來新增名為 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@2deleteCert 參數預設為 true,這會在建置後移除憑證。

  • Xcode 或 Xamarin.iOS 工作之前, 將InstallAppleProvisioningProfile@1工作新增至 YAML。 將取代 <secure-file.mobileprovision> 為您佈建配置檔案的名稱。

    - task: InstallAppleProvisioningProfile@1
        inputs:
          provProfileSecureFile: '<secure-file.mobileprovision>'
    

    注意

    在工作中 InstallAppleProvisioningProfile@1removeProfile 參數預設為 true,這會在建置後移除配置檔。

任何組建代理程式現在可以安全地簽署您的應用程式,而不需要在組建機器本身上進行任何憑證或配置檔管理。

在macOS組建代理程式上預安裝憑證和配置檔

您可以在 macOS 組建代理程式上預安裝簽署憑證和布建配置檔,而不是在建置期間安裝簽署憑證和布建配置檔。 然後,這些檔案可供組建繼續使用。 只有在您信任可存取代理程序計算機上的macOS金鑰鏈的人員與進程時,才使用這個方法。

預安裝 P12 憑證

  1. 若要在預設金鑰鏈中安裝 P12 憑證,請在組建代理程式上從 macOS 終端機視窗執行下列命令。 以 P12 檔案的路徑與名稱取代 <certificate.p12> 。 以 P12 檔案的加密密碼取代 <password>

    sudo security import <certificate.p12> -P <password>
    
  2. 將新的變數新增至名為 KEYCHAIN_PWD 的管線。 將值設定為預設密鑰鏈,這通常是啟動代理程式之用戶的密碼。 請務必選取 鎖定 圖示來保護此密碼。

預安裝布建配置檔

  1. 開啟 macOS 終端機視窗並輸入 security find-identity -v -p codesigning,以尋找簽署身分識別的完整名稱。 您會看到表單 iPhone Developer/Distribution: Developer Name (ID)中的簽署身分識別清單。 如果身分識別無效,您會在身分識別之後看到類似 (CSSMERR_TP_CERT_REVOKED) 的內容。

  2. 若要在代理程式電腦上安裝布建配置檔,請從 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:簽署身分識別的完整名稱。
    • keychaindefault,允許存取預設密鑰鏈。
    • keychainPassword:變數 KEYCHAIN_PWD
    • deleteCertfalse,以在組建之間保留憑證。
    - 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)'

管線組建代理程式現在可安全地簽署並布建您的應用程式,而不需要在組建機器本身進行進一步的憑證或配置檔管理。

如需下列項目的詳細資訊: