모바일 앱 서명

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에서 라이브러리>보안 파일이동합니다. + 보안 파일을 선택하고 키 저장소 파일을 보안 파일 라이브러리에 업로드합니다. 업로드하는 동안 키 저장소는 암호화되고 안전하게 저장됩니다.

파이프라인에 서명 작업 추가

앱을 빌드하는 단계 후 YAML 파이프라인에 AndroidSigning@3 작업을 추가합니다. 작업에서 다음을 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 Access 앱을 사용하여 개발 또는 배포 서명 인증서 를 .p12 파일로 내보냅니다.

    • Xcode를 사용하여 내보내려면 다음을 수행합니다.

      1. Xcode>기본 설정>계정으로 이동합니다.

      2. 왼쪽 열에서 Apple ID를 선택합니다.

      3. 오른쪽에서 개인 또는 팀 계정을 선택하고 인증서 관리를 선택합니다.

      4. Ctrl+내보낼 인증서를 선택하고 메뉴에서 인증서 내보내기를 선택합니다.

        Xcode를 사용하여 인증서를 내보내는 스크린샷

      5. 대화 상자에서 인증서 이름, 파일을 저장할 위치 및 인증서를 보호하는 암호를 입력합니다.

    • 또는 iOS 서명에 설명된 절차를 사용하여 macOS에서 키 집합 액세스 앱을 사용하여 유사한 프로세스를 따르거나 Windows에서 서명 인증서를 생성합니다.

  2. P12 파일을 Azure Pipelines 보안 파일 라이브러리에 업로드합니다. 업로드하는 동안 인증서는 암호화되고 안전하게 저장됩니다.

  3. 파이프라인에서 변수 탭으로 이동하여 인증서 암호를 값으로 사용하여 P12password라는 변수를 추가합니다. 잠금 아이콘을 선택하여 암호를 보호하고 로그에 가려야 합니다.

프로비저닝 프로필 가져오기

앱에서 자동 서명을 사용하지 않는 경우 Apple 개발자 포털에서 앱 프로비저닝 프로필을 다운로드할 수 있습니다. 자세한 내용은 프로비저닝 프로필 편집, 다운로드 또는 삭제를 참조 하세요.

Xcode를 사용하여 Mac에 설치된 프로비저닝 프로필에 액세스할 수도 있습니다. Xcode에서 Xcode>기본 설정>계정으로 이동합니다. Apple ID 및 팀을 선택한 다음 수동 프로필 다운로드를 선택합니다.

Azure Pipelines에서 프로비전 프로필을 보안 파일 라이브러리에 업로드합니다. 업로드하는 동안 파일은 암호화되고 안전하게 저장됩니다.

파이프라인에 서명 및 프로비전 작업 추가

앱을 서명하고 프로비전하려면 각 빌드 중에 인증서와 프로필을 설치하거나 macOS 빌드 에이전트에 파일을 미리 설치할 수 있습니다.

각 빌드 중에 인증서 및 프로필 설치

호스트된 macOS 에이전트를 사용하는 경우와 같이 빌드 에이전트에 대한 지속적인 액세스 권한이 없는 경우 각 빌드 중에 인증서 및 프로필을 설치합니다. P12 인증서 및 프로비저닝 프로필은 빌드 시작 부분에 설치되고 빌드가 완료되면 제거됩니다.

  • Xcode 또는 Xamarin.iOS 작업 전에 YAML 파이프라인에 InstallAppleCertificate@2 작업을 추가합니다. 코드에서 업로드된 .p12 파일의 이름으로 바꿉 <secure-file.p12> 습니다. 보안 P12password에 변수를 사용합니다.

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

    참고 항목

    InstallAppleCertificate@2 작업에서 매개 변수는 deleteCert 기본적으로 true빌드 후 인증서를 제거하는 것으로 설정됩니다.

  • Xcode 또는 Xamarin.iOS 작업 전에 YAML에 InstallAppleProvisioningProfile@1 작업을 추가합니다. 프로비저닝 프로필 파일의 이름으로 바꿉 <secure-file.mobileprovision> 습니다.

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

    참고 항목

    InstallAppleProvisioningProfile@1 작업에서 매개 변수는 removeProfile 기본적으로 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 터미널 창을 열고 입력하여 서명 ID의 전체 이름을 찾습니다 security find-identity -v -p codesigning. 양식 iPhone Developer/Distribution: Developer Name (ID)에 서명 ID 목록이 표시됩니다. ID가 유효하지 않으면 ID 뒤와 같은 (CSSMERR_TP_CERT_REVOKED) 항목이 표시됩니다.

  2. 에이전트 컴퓨터에 프로비저닝 프로필을 설치하려면 macOS 터미널 창에서 다음 명령을 실행합니다. 프로비저닝 프로필 파일의 경로로 바꾸고 확장명 없이 프로비전 프로필 파일 이름인 프로비저닝 프로필 UUID로 .mobileprovision<UUID><profile> 니다.

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

기본 키 집합을 사용하는 서명 및 프로비저닝 작업 추가

  • Xcode 또는 Xamarin.iOS 작업 전에 YAML 파이프라인에 InstallAppleCertificate@2 작업을 추가합니다. 코드에서 다음 값을 설정합니다.

    • 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 .
    • false 빌드 간에 프로필이 유지되도록 설정합니다removeProfile.
    - 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 에이전트를 참조 하세요.
  • 에이전트 풀 및 큐는 에이전트 풀 만들기 및 관리를 참조 하세요.
  • 파이프라인의 변수는 변수 정의를 참조 하세요.
  • 파이프라인 문제 해결은 파이프라인 실행 문제 해결을 참조 하세요.