Signera en mobilapp

Azure DevOps Services | Azure DevOps Server 2022 – Azure DevOps Server 2019

Om du vill signera och etablera en mobilapp för Android- eller Apple-operativsystem måste du hantera signeringscertifikat och Apple-etableringsprofiler. Den här artikeln beskriver hur du på ett säkert sätt hanterar certifikat och profiler för signering och etablering av din app i Azure Pipelines.

Kommentar

Du behöver minst en agent för att köra en version eller version. Du kan använda en Microsoft-värdbaserad Linux-, macOS- eller Windows-byggagent eller konfigurera din egen agent. Mer information finns i Skapa och släppa agenter.

Signera din Android-app

Följ de här stegen för att signera din Android-app samtidigt som du håller signeringscertifikatet säkert.

Ladda upp keystore-filen

  1. Hämta en nyckellagringsfil som innehåller ditt signeringscertifikat. Android-dokumentationen beskriver processen för att generera en nyckelarkivfil och dess motsvarande nyckel.

  2. I Azure Pipelines går du till Bibliotek>Säkra filer. Välj + Säker fil och ladda upp nyckelarkivfilen till biblioteket för säkra filer. Under uppladdningen krypteras och lagras nyckelarkivet på ett säkert sätt.

Lägg till signeringsuppgiften i pipelinen

Lägg till den AndroidSigning@3 uppgiften i YAML-pipelinen efter steget som skapar din app. I uppgiften AndroidSigning@3 :

  • <apkFiles> krävs och är sökvägen och namnen på de APK-filer som ska signeras. Standardvärdet är **/*.apk.
  • <apksign> måste vara true, vilket är standardvärdet.
  • <keystore-file> är namnet på den uppladdade nyckellagringsfilen i biblioteket för säkra filer.
  • <apksignerKeystorePassword> är lösenordet till den okrypterade nyckellagringsfilen.
  • <apksignerKeystoreAlias> är nyckelaliaset för signeringscertifikatet.
  • <apksignerKeyPassword> är lösenordet för nyckeln som är associerad med det angivna aliaset.

Du kan ange och använda variabler i YAML, eller så kan du ange variablerna med hjälp av fliken Variabler i Azure Pipelines-användargränssnittet och referera till dem i 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)

Alla byggagenter kan nu signera din app på ett säkert sätt utan någon certifikathantering på själva byggdatorn.

Signera din Apple iOS-, macOS-, tvOS- eller watchOS-app

För att signera och etablera din app behöver Xcode- eller Xamarin.iOS-versionen åtkomst till ditt P12-signeringscertifikat och en eller flera etableringsprofiler. Följande steg beskriver hur du hämtar dessa filer.

Hämta ditt P12-signeringscertifikat

  1. Exportera utvecklings- eller distributionssigneringscertifikatet till en .p12-fil med hjälp av Xcode eller nyckelringsåtkomstappen på macOS.

    • Så här exporterar du med Xcode:

      1. Gå till Xcode-inställningskonton>>.

      2. I den vänstra kolumnen väljer du ditt Apple-ID.

      3. Till höger väljer du ditt personliga konto eller teamkonto och väljer Hantera certifikat.

      4. Ctrl+Välj det certifikat som du vill exportera och välj Exportera certifikat på menyn.

        Skärmbild av export av ett certifikat med Xcode.

      5. I dialogrutan anger du certifikatnamnet, platsen där filen ska sparas och ett lösenord för att skydda certifikatet.

    • Du kan också använda proceduren som beskrivs i iOS-signering för att följa en liknande process med hjälp av nyckelringsåtkomstappen i macOS eller generera ett signeringscertifikat i Windows.

  2. Ladda upp P12-filen till azure pipelines-biblioteket för säkra filer. Under uppladdningen krypteras och lagras certifikatet på ett säkert sätt.

  3. I pipelinen går du till fliken Variabler och lägger till en variabel med namnet P12password med certifikatlösenordet som värde. Se till att välja låsikonen för att skydda lösenordet och dölja det i loggar.

Hämta din etableringsprofil

Om din app inte använder automatisk signering kan du ladda ned din appetableringsprofil från Apple Developer-portalen. Mer information finns i Redigera, ladda ned eller ta bort etableringsprofiler.

Du kan också använda Xcode för att komma åt etableringsprofiler som är installerade på din Mac. I Xcode går du till Xcode-inställningskonton>>. Välj ditt Apple-ID och ditt team och välj sedan Ladda ned manuella profiler.

I Azure Pipelines laddar du upp etableringsprofilen till biblioteket för säkra filer. Under uppladdningen krypteras och lagras filen på ett säkert sätt.

Lägg till signerings- och etableringsuppgifterna i pipelinen

Om du vill signera och etablera din app kan du antingen installera certifikatet och profilen under varje version eller förinstallera filerna på en macOS-byggagent.

Installera certifikatet och profilen under varje version

Installera certifikatet och profilen under varje version när du inte har varaktig åtkomst till byggagenten, till exempel när du använder värdbaserade macOS-agenter. P12-certifikatet och etableringsprofilen installeras i början av bygget och tas bort när bygget är klart.

  • Lägg till den InstallAppleCertificate@2 aktiviteten i YAML-pipelinen före Xcode- eller Xamarin.iOS-aktiviteten. I koden ersätter du <secure-file.p12> med namnet på den uppladdade .p12-filen . Använd variabeln för den säkra P12password.

    - task: InstallAppleCertificate@2
        inputs:
          certSecureFile: '<secure-file.p12>'
          certPwd: '$(P12password)'
    

    Kommentar

    I aktiviteten InstallAppleCertificate@2 är parametern deleteCert standardvärdet true, vilket tar bort certifikatet efter bygget.

  • Lägg till den InstallAppleProvisioningProfile@1 uppgiften i YAML före Xcode- eller Xamarin.iOS-aktiviteten. Ersätt <secure-file.mobileprovision> med namnet på din etableringsprofilfil.

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

    Kommentar

    I aktiviteten InstallAppleProvisioningProfile@1 är parametern removeProfile standardvärdet true, vilket tar bort profilen efter bygget.

Alla byggagenter kan nu signera din app på ett säkert sätt utan certifikat- eller profilhantering på själva byggdatorn.

Förinstallera certifikatet och profilen på en macOS-byggagent

I stället för att installera signeringscertifikatet och etableringsprofilerna under bygget kan du förinstallera dem på en macOS-byggagent. Filerna är sedan tillgängliga för fortsatt användning av versioner. Använd endast den här metoden när du litar på de personer och processer som har åtkomst till macOS-nyckelringen på agentdatorn.

Förinstallera P12-certifikatet

  1. Om du vill installera P12-certifikatet i standardnyckelringen kör du följande kommando från ett macOS-terminalfönster på byggagenten. Ersätt <certificate.p12> med sökvägen och namnet på P12-filen. Ersätt <password> med krypteringslösenordet för P12-filen.

    sudo security import <certificate.p12> -P <password>
    
  2. Lägg till en ny variabel i pipelinen med namnet KEYCHAIN_PWD. Ange värdet som lösenord till standardnyckelringen, vilket normalt är lösenordet för den användare som startar agenten. Se till att du väljer låsikonen för att skydda lösenordet.

Förinstallera etableringsprofilen

  1. Hitta det fullständiga namnet på din signeringsidentitet genom att öppna ett macOS-terminalfönster och ange security find-identity -v -p codesigning. Du ser en lista över signeringsidentiteter i formuläret iPhone Developer/Distribution: Developer Name (ID). Om en identitet är ogiltig ser du något som liknar (CSSMERR_TP_CERT_REVOKED) efter identiteten.

  2. Om du vill installera etableringsprofilen på agentdatorn kör du följande kommando från ett macOS-terminalfönster. Ersätt <profile> med sökvägen till etableringsprofilfilen och ersätt <UUID> med etableringsprofilen UUID, som är filnamnet för etableringsprofilen .mobileprovision utan tillägget.

    sudo cp <profile> ~/Library/MobileDevice/Provisioning Profiles/<UUID>.mobileprovision
    

Lägg till signerings- och etableringsuppgifter som använder standardnyckelringen

  • Lägg till den InstallAppleCertificate@2 aktiviteten i YAML-pipelinen före Xcode- eller Xamarin.iOS-aktiviteten. I koden anger du följande värden:

    • certSecureFile: Namnet på den uppladdade .p12-filen .
    • certPwd: Variabeln för den säkra P12password.
    • signingIdentity: Det fullständiga namnet på din signeringsidentitet.
    • keychain: default, för att tillåta åtkomst till standardnyckelringen.
    • keychainPassword: Variabeln KEYCHAIN_PWD .
    • deleteCert: false, för att behålla certifikatet mellan versioner.
    - task: InstallAppleCertificate@2
      inputs:
        certSecureFile: '<secure-file.p12>'
        certPwd: '$(P12password)'
        signingIdentity: <full-signing-identity>
        keychain: default
        keychainPassword: `$(KEYCHAIN_PWD)
        deleteCert: false
    
  • Lägg till InstallAppleProvisioningProfile@1 uppgift. I koden:

    • Ange provProfileSecureFile namnet på etableringsprofilfilen.
    • Ange removeProfile till så att false profilen behålls mellan versioner.
    - task: InstallAppleProvisioningProfile@1
        inputs:
          provProfileSecureFile: '<secure-file.mobileprovision>'
          removeProfile: false
    

MacOS-byggagenten kan nu signera och etablera appen på ett säkert sätt för alla versioner utan ytterligare certifikat- eller profilhantering.

Referera till de säkra filerna i Xcode- eller Xamarin.iOS-bygguppgiften

Om du vill använda det säkra certifikatet och profilen i dina pipelines konfigurerar du följande inställningar i dina Xcode- eller Xamarin.iOS-bygguppgifter.

Referenserna för säkra filer i bygguppgifterna använder variabler för signingIdentity och provisioningProfileUuid. Dessa variabler anges automatiskt av uppgifterna Installera Apple-certifikat och Installera Apple-etableringsprofil för certifikatet och etableringsprofilen som du har valt.

För Xcode:

- task: Xcode@5
  inputs:
    signingOption: 'manual'
    signingIdentity: '$(APPLE_CERTIFICATE_SIGNING_IDENTITY)'
    provisioningProfileUuid: '$(APPLE_PROV_PROFILE_UUID)'

För Xamarin.iOS:

- task: XamariniOS@2
    inputs:
      solutionFile: '**/*.iOS.csproj'
      signingIdentity: '$(APPLE_CERTIFICATE_SIGNING_IDENTITY)'
      signingProvisioningProfileID: '$(APPLE_PROV_PROFILE_UUID)'

Pipeline build-agenten signerar och etablerar appen på ett säkert sätt utan ytterligare certifikat- eller profilhantering på själva byggdatorn.

Mer information om: