Podpisywanie aplikacji mobilnej
Azure DevOps Services | Azure DevOps Server 2022 — Azure DevOps Server 2019
Aby podpisać i aprowizować aplikację mobilną dla systemów operacyjnych Android lub Apple, musisz zarządzać certyfikatami podpisywania i profilami aprowizacji firmy Apple. W tym artykule opisano sposób bezpiecznego zarządzania certyfikatami i profilami na potrzeby podpisywania i aprowizacji aplikacji w usłudze Azure Pipelines.
Uwaga
Do uruchomienia kompilacji lub wydania potrzebny jest co najmniej jeden agent. Możesz użyć hostowanego przez firmę Microsoft agenta kompilacji systemu Linux, macOS lub Windows albo skonfigurować własnego agenta. Aby uzyskać więcej informacji, zobacz Kompilowanie i wydawanie agentów.
Podpisywanie aplikacji systemu Android
Wykonaj następujące kroki, aby podpisać aplikację systemu Android przy zachowaniu bezpieczeństwa certyfikatu podpisywania.
Przekazywanie pliku magazynu kluczy
Uzyskaj plik magazynu kluczy zawierający certyfikat podpisywania. W dokumentacji systemu Android opisano proces generowania pliku magazynu kluczy i jego odpowiedniego klucza.
W usłudze Azure Pipelines przejdź do pozycji Biblioteki>Bezpieczne pliki. Wybierz pozycję + Bezpieczny plik i przekaż plik magazynu kluczy do bezpiecznej biblioteki plików. Podczas przekazywania magazyn kluczy jest szyfrowany i bezpiecznie przechowywany.
Dodawanie zadania podpisywania do potoku
Dodaj zadanie AndroidSigning@3 do potoku YAML po kroku, który kompiluje aplikację. W zadaniu AndroidSigning@3
:
<apkFiles>
jest wymagany i jest ścieżką i nazwami plików APK do podpisania. Wartość domyślna to**/*.apk
.<apksign>
musi miećtrue
wartość , która jest wartością domyślną.<keystore-file>
to nazwa przekazanego pliku magazynu kluczy w bibliotece bezpiecznych plików.<apksignerKeystorePassword>
to hasło do niezaszyfrowanego pliku magazynu kluczy.<apksignerKeystoreAlias>
to alias klucza certyfikatu podpisywania.<apksignerKeyPassword>
to hasło klucza skojarzonego z określonym aliasem.
Zmienne można ustawiać i używać w języku YAML lub ustawić zmienne przy użyciu karty Zmienne w interfejsie użytkownika usługi Azure Pipelines i odwoływać się do nich w języku 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)
Każdy agent kompilacji może teraz bezpiecznie podpisać aplikację bez zarządzania certyfikatami na samej maszynie kompilacji.
Podpisywanie aplikacji apple iOS, macOS, tvOS lub watchOS
Aby podpisać i aprowizować aplikację, kompilacja Xcode lub Xamarin.iOS wymaga dostępu do certyfikatu podpisywania P12 i co najmniej jednego profilu aprowizacji. W poniższych krokach wyjaśniono, jak uzyskać te pliki.
Uzyskiwanie certyfikatu podpisywania P12
Wyeksportuj certyfikat podpisywania programowania lub dystrybucji do pliku p12 przy użyciu programu Xcode lub aplikacji Keychain Access w systemie macOS.
Aby wyeksportować przy użyciu programu Xcode:
Przejdź do pozycji Konta preferencji>Xcode>.
W lewej kolumnie wybierz swój identyfikator Apple ID.
Po prawej stronie wybierz swoje osobiste lub zespołowe konto i wybierz pozycję Zarządzaj certyfikatami.
Ctrl+Wybierz certyfikat, który chcesz wyeksportować, i wybierz pozycję Eksportuj certyfikat z menu.
W oknie dialogowym wprowadź nazwę certyfikatu, lokalizację do zapisania pliku i hasło w celu zabezpieczenia certyfikatu.
Możesz też użyć procedury opisanej w artykule Podpisywanie systemu iOS, aby wykonać podobny proces przy użyciu aplikacji Keychain Access w systemie macOS lub wygenerować certyfikat podpisywania w systemie Windows.
Przekaż plik P12 do biblioteki bezpiecznych plików usługi Azure Pipelines. Podczas przekazywania certyfikat jest szyfrowany i bezpiecznie przechowywany.
W potoku przejdź do karty Zmienne i dodaj zmienną o nazwie P12password z hasłem certyfikatu jako wartością. Pamiętaj, aby wybrać ikonę blokady, aby zabezpieczyć hasło i zasłonić je w dziennikach.
Uzyskiwanie profilu aprowizacji
Jeśli aplikacja nie korzysta z automatycznego podpisywania, możesz pobrać profil aprowizacji aplikacji z portalu dla deweloperów firmy Apple. Aby uzyskać więcej informacji, zobacz Edytowanie, pobieranie lub usuwanie profilów aprowizacji.
Możesz również użyć programu Xcode, aby uzyskać dostęp do profilów aprowizacji zainstalowanych na komputerze Mac. W programie Xcode przejdź do pozycji Konta preferencji>Xcode>. Wybierz swój identyfikator Apple ID i twój zespół, a następnie wybierz pozycję Pobierz profile ręczne.
W usłudze Azure Pipelines przekaż profil aprowizacji do biblioteki bezpiecznych plików. Podczas przekazywania plik jest szyfrowany i bezpiecznie przechowywany.
Dodawanie zadań podpisywania i aprowizacji do potoku
Aby podpisać i aprowizować aplikację, możesz zainstalować certyfikat i profil podczas każdej kompilacji lub wstępnie zainstalować pliki w agencie kompilacji systemu macOS.
Instalowanie certyfikatu i profilu podczas każdej kompilacji
Zainstaluj certyfikat i profil podczas każdej kompilacji, gdy nie masz trwałego dostępu do agenta kompilacji, na przykład w przypadku korzystania z hostowanych agentów systemu macOS. Certyfikat P12 i profil aprowizacji są instalowane na początku kompilacji i usuwane po zakończeniu kompilacji.
Dodaj zadanie InstallAppleCertificate@2 do potoku YAML przed zadaniem Xcode lub Xamarin.iOS. W kodzie zastąp
<secure-file.p12>
ciąg nazwą przekazanego pliku p12 . Użyj zmiennej dla bezpiecznegoP12password
elementu .- task: InstallAppleCertificate@2 inputs: certSecureFile: '<secure-file.p12>' certPwd: '$(P12password)'
Uwaga
InstallAppleCertificate@2
W zadaniudeleteCert
parametr jest domyślnie ustawiony natrue
, który usuwa certyfikat po kompilacji.Dodaj zadanie InstallAppleProvisioningProfile@1 do kodu YAML przed zadaniem Xcode lub Xamarin.iOS. Zastąp
<secure-file.mobileprovision>
ciąg nazwą pliku profilu aprowizacji.- task: InstallAppleProvisioningProfile@1 inputs: provProfileSecureFile: '<secure-file.mobileprovision>'
Uwaga
InstallAppleProvisioningProfile@1
W zadaniuremoveProfile
parametr jest domyślnie ustawiony natrue
, który usuwa profil po kompilacji.
Każdy agent kompilacji może teraz bezpiecznie podpisać aplikację bez konieczności zarządzania certyfikatami lub profilami na samej maszynie kompilacji.
Wstępne instalowanie certyfikatu i profilu w agencie kompilacji systemu macOS
Zamiast instalować certyfikat podpisywania i profile aprowizacji podczas kompilacji, można je wstępnie zainstalować na agencie kompilacji systemu macOS. Pliki są następnie dostępne do dalszego używania przez kompilacje. Ta metoda jest używana tylko wtedy, gdy ufasz osobom i procesom, które mają dostęp do łańcucha kluczy systemu macOS na maszynie agenta.
Preinstalacja certyfikatu P12
Aby zainstalować certyfikat P12 w domyślnym pęku kluczy, uruchom następujące polecenie w oknie terminalu systemu macOS na agencie kompilacji. Zastąp
<certificate.p12>
ciąg ścieżką i nazwą pliku P12. Zastąp<password>
ciąg hasłem szyfrowania pliku P12.sudo security import <certificate.p12> -P <password>
Dodaj nową zmienną do potoku o nazwie KEYCHAIN_PWD. Ustaw wartość jako hasło na domyślny pęk kluczy, który jest zwykle hasłem dla użytkownika, który uruchamia agenta. Pamiętaj, aby wybrać ikonę blokady, aby zabezpieczyć to hasło.
Wstępne instalowanie profilu aprowizacji
Znajdź pełną nazwę tożsamości podpisywania, otwierając okno terminalu systemu macOS i wprowadzając polecenie
security find-identity -v -p codesigning
. Zostanie wyświetlona lista tożsamości podpisywania w formularzuiPhone Developer/Distribution: Developer Name (ID)
. Jeśli tożsamość jest nieprawidłowa, zobaczysz coś takiego jak(CSSMERR_TP_CERT_REVOKED)
po tożsamości.Aby zainstalować profil aprowizacji na maszynie agenta, uruchom następujące polecenie w oknie terminalu systemu macOS. Zastąp
<profile>
ciąg ścieżką do pliku profilu aprowizacji i zastąp ciąg<UUID>
identyfikatorem UUID profilu aprowizacji, który jest nazwą pliku profilu aprowizacji bez.mobileprovision
rozszerzenia.sudo cp <profile> ~/Library/MobileDevice/Provisioning Profiles/<UUID>.mobileprovision
Dodawanie zadań podpisywania i aprowizacji, które używają domyślnego łańcucha kluczy
Dodaj zadanie InstallAppleCertificate@2 do potoku YAML przed zadaniem Xcode lub Xamarin.iOS. W kodzie ustaw następujące wartości:
certSecureFile
: nazwa przekazanego pliku p12 .certPwd
: zmienna bezpiecznegoP12password
.signingIdentity
: pełna nazwa tożsamości podpisywania.keychain
:default
, aby zezwolić na dostęp do domyślnego łańcucha kluczy.keychainPassword
: zmiennaKEYCHAIN_PWD
.deleteCert
:false
, aby zachować certyfikat między kompilacjami.
- task: InstallAppleCertificate@2 inputs: certSecureFile: '<secure-file.p12>' certPwd: '$(P12password)' signingIdentity: <full-signing-identity> keychain: default keychainPassword: `$(KEYCHAIN_PWD) deleteCert: false
Dodaj zadanie InstallAppleProvisioningProfile@1. W kodzie:
- Ustaw
provProfileSecureFile
nazwę pliku profilu aprowizacji. - Ustaw
removeProfile
wartość na , abyfalse
profil był zachowywany między kompilacjami.
- task: InstallAppleProvisioningProfile@1 inputs: provProfileSecureFile: '<secure-file.mobileprovision>' removeProfile: false
- Ustaw
Agent kompilacji systemu macOS może teraz bezpiecznie podpisać i aprowizować aplikację dla wszystkich kompilacji bez dalszego zarządzania certyfikatami lub profilami.
Odwołuj się do bezpiecznych plików w zadaniu kompilacji Xcode lub Xamarin.iOS
Aby używać bezpiecznego certyfikatu i profilu w potokach, skonfiguruj następujące ustawienia w zadaniach kompilacji Xcode lub Xamarin.iOS.
Odwołania do bezpiecznych plików w zadaniach kompilacji używają zmiennych dla obiektów signingIdentity
i provisioningProfileUuid
. Te zmienne są automatycznie ustawiane przez zadania Zainstaluj certyfikat firmy Apple i Zainstaluj profil aprowizacji firmy Apple dla wybranego certyfikatu i profilu aprowizacji.
W przypadku środowiska Xcode:
- task: Xcode@5
inputs:
signingOption: 'manual'
signingIdentity: '$(APPLE_CERTIFICATE_SIGNING_IDENTITY)'
provisioningProfileUuid: '$(APPLE_PROV_PROFILE_UUID)'
W przypadku platformy Xamarin.iOS:
- task: XamariniOS@2
inputs:
solutionFile: '**/*.iOS.csproj'
signingIdentity: '$(APPLE_CERTIFICATE_SIGNING_IDENTITY)'
signingProvisioningProfileID: '$(APPLE_PROV_PROFILE_UUID)'
Agent kompilacji potoku teraz bezpiecznie podpisuje i aprowizuje aplikację bez dalszego zarządzania certyfikatami lub profilami na samej maszynie kompilacji.
Powiązana zawartość
Aby uzyskać więcej informacji na temat:
- Potoki dla aplikacji systemu Android, zobacz Tworzenie, testowanie i wdrażanie aplikacji systemu Android.
- Potoki dla aplikacji systemu iOS, zobacz Tworzenie, testowanie i wdrażanie aplikacji Xcode.
- Agenci, zobacz Agenci usługi Azure Pipelines.
- Pule agentów i kolejki znajdują się w temacie Tworzenie pul agentów i zarządzanie nimi.
- Zmienne w potokach, zobacz Definiowanie zmiennych.
- Rozwiązywanie problemów z potokiem, zobacz Rozwiązywanie problemów z przebiegami potoków.