GitHub Actions 사용하여 Microsoft Store에 앱 업데이트 게시

비고

GitHub 작업을 통한 앱 업데이트 작업은 현재 무료 제품에만 지원됩니다. 유료 제품은 향후 릴리스에서 지원될 예정입니다.

GitHub Actions 통해 Microsoft Store 앱에 대한 강력한 CI/CD 파이프라인을 구현할 수 있습니다. 코드 리포지토리에서 직접 빌드, 테스트 및 배포 단계를 자동화하면 버그 수정, 기능 업데이트 또는 메타데이터 변경 등 모든 변경 내용의 유효성을 검사하고 Microsoft Store에 안전하게 게시할 수 있습니다.

앱 업데이트 프로세스에 대한 필수 구성 요소를 설정하는 방법을 이해하려면 다음 비디오를 확인하세요.

전제 조건

  1. Partner Center Windows 앱 개발자로 등록합니다.

  2. 파트너 센터 계정과 연결된 테넌트를 확보합니다. 이를 위해 파트너 센터에서 기존 Microsoft Entra ID 연결하거나 파트너 센터에서 새 Microsoft Entra ID 만들 수 있습니다.

  3. Microsoft Entra ID 애플리케이션 등록

  4. 다음으로 파트너 센터의 계정 설정 섹션에 있는 사용자 관리 페이지의 Microsoft Entra 애플리케이션 탭에서 파트너 센터 계정에 대한 제출에 액세스하는 데 사용할 앱 또는 서비스를 나타내는 Microsoft Entra ID 애플리케이션을 추가합니다. 이 응용 프로그램에 관리자 역할을 할당해야 합니다.

  5. 업데이트하려는 앱은 이미 게시되어 Microsoft Store에 있어야 합니다.

  6. 필수 ID 및 비밀:

    • 테넌트 ID (Microsoft Entra 테넌트의 고유 식별자입니다. https://entra.microsoft.com/로 이동합니다. ID > 개요로 이동합니다. "테넌트 ID" 값을 복사합니다.)
    • 클라이언트 ID(사용자가 만든 앱 등록의 애플리케이션 ID입니다. Entra 관리 센터에서 ID > 애플리케이션 > 앱 등록으로 이동합니다. 등록된 앱을 선택합니다. "애플리케이션(클라이언트) ID"를 복사합니다.
    • 클라이언트 암호(앱 등록 시 생성되는 암호와 유사한 값으로, 보안 인증에 사용됩니다. Entra 관리 센터에서 ID > 애플리케이션 > 앱 등록으로 이동합니다. 등록된 앱을 선택한 다음 인증서 및 비밀로 이동합니다. "클라이언트 암호"에서 아직 만들지 않았다면 새 암호를 만듭니다. 다시 표시되지 않으므로 값을 즉시 복사해 두세요.)
    • 판매자 ID(Microsoft Partner Center 고유한 게시자/판매자 식별자입니다. Partner Center 로그인합니다. 계정 설정 > 개발자 설정 또는 식별자로 이동합니다. "게시자 ID" 또는 "판매자 ID"를 찾습니다.)

    GitHub 리포지토리에서 비밀로 사용됩니다.

Microsoft Store에서 앱을 업데이트하는 GitHub Actions 설정

프로젝트에 이미 GitHub 리포지토리가 있는 경우 Microsoft Store 앱 업데이트를 자동화하는 데 직접 사용할 수 있습니다.

GitHub 리포지토리에서 Settings>비밀 및 변수>Actions>새 리포지토리 시크릿으로 이동합니다.

리포지토리에 비밀을 추가하는 방법을 보여 주는 스크린샷

다음 비밀을 추가합니다.

  • AZURE_AD_APPLICATION_CLIENT_ID (Azure AD 애플리케이션 클라이언트 ID)
  • AZURE_AD_APPLICATION_SECRET
  • AZURE_AD_TENANT_ID
  • SELLER_ID

MSIX 및 MSI/EXE 두 가지 유형의 앱에 GitHub Actions 사용하여 앱 업데이트를 자동화할 수 있습니다. 아래에서 업데이트하려는 앱 유형을 선택합니다.

GitHub 작업 워크플로를 추가하여 저장할 패키지 및 앱 메타데이터 업데이트를 게시하기 위한 Microsoft GitHub 작업(microsoft-store-apppublisher)을 호출합니다.

GitHub Actions 사용하여 패키지 및 메타데이터 업데이트를 자동화하는 방법을 이해하려면 다음 비디오를 확인하세요.

패키지 업데이트의 경우

.github/workflows/에서 제공된 워크플로 조각을 사용하여 AppPackageAutoUpdate.yml 만듭니다.

name: AppPackageAutoUpdate 
 
on: 
  push: 
    paths: 
      - 'release/package.msix' 
 
jobs: 
  build: 
    runs-on: windows-latest 
 
    steps: 
      - name: Checkout repository 
        uses: actions/checkout@v4 
 
      - name: Configure Microsoft Store CLI 
        uses: microsoft/microsoft-store-apppublisher@v1.1 
 
      - name: Reconfigure store credentials 
        run: msstore reconfigure ` 
              --tenantId ${{ secrets.AZURE_AD_TENANT_ID }} ` 
              --sellerId ${{ secrets.SELLER_ID }} ` 
              --clientId ${{ secrets.AZURE_AD_APPLICATION_CLIENT_ID }} ` 
              --clientSecret ${{ secrets.AZURE_AD_APPLICATION_SECRET }} 
 
      - name: Publish App package 
        run: msstore publish '${{ github.workspace }}/release/package.msix' -id <Store product Id>

package.msix가 릴리스 폴더에서 CI/CD 흐름의 일부로 업데이트되면 AppPackageAutoUpdate.yml 워크플로가 자동으로 트리거됩니다.

메타데이터 업데이트의 경우

처음으로 메타데이터 업데이트를 게시하기 전에 앱 제출을 위해 파트너 센터에서 기본 메타데이터 JSON을 가져옵니다. 이렇게 하면 앱에 대한 올바른 구조로 시작할 수 있습니다. 따라서 제공된 코드 조각을 사용하여 .github/workflows/GetBaseMetadata.yml 아래에 GitHub Actions 워크플로를 만듭니다.

name: GetBaseMetadata 
 
on: 
  workflow_dispatch: 
 
jobs: 
  build: 
    runs-on: windows-latest 
 
    steps: 
    - uses: actions/checkout@v4 
 
    - uses: microsoft/microsoft-store-apppublisher@v1.1 
 
    - name: Configure MSStore CLI 
      run: | 
        msstore reconfigure ` 
          --tenantId ${{ secrets.AZURE_AD_TENANT_ID }} ` 
          --sellerId ${{ secrets.SELLER_ID }} ` 
          --clientId ${{ secrets.AZURE_AD_APPLICATION_CLIENT_ID }} ` 
          --clientSecret ${{ secrets.AZURE_AD_APPLICATION_SECRET }} 
 
    - name: Get base metadata  
      shell: pwsh 
      run: | 
        msstore submission get <Store product Id>

GitHub 리포지토리의 작업 탭에서 이 워크플로를 실행합니다. 관련 워크플로를 선택하고 워크플로 실행을 클릭합니다.

MSIX 앱에 대한 기본 메타데이터를 가져오기 위한 워크플로 실행 프로세스를 보여 주는 스크린샷

완료되면 워크플로는 빌드 로그에서 앱에 대한 메타데이터를 가져옵니다. 이를 복사하고 메타데이터 폴더에 metadata.json 파일을 만듭니다.

이제 .github/workflows/에서 제공된 워크플로 조각을 사용하여 AppMetadataAutoUpdate.yml 만듭니다.

name: AppMetadataAutoUpdate 
 
on: 
  push: 
    paths: 
      - 'metadata/metadata.json' 
 
jobs: 
  build: 
    runs-on: windows-latest 
 
    steps: 
      - name: Checkout repository 
        uses: actions/checkout@v4 
 
      - name: Configure Microsoft Store CLI 
        uses: microsoft/microsoft-store-apppublisher@v1.1 
 
      - name: Reconfigure store credentials 
        run: msstore reconfigure ` 
              --tenantId ${{ secrets.AZURE_AD_TENANT_ID }} ` 
              --sellerId ${{ secrets.SELLER_ID }} ` 
              --clientId ${{ secrets.AZURE_AD_APPLICATION_CLIENT_ID }} ` 
              --clientSecret ${{ secrets.AZURE_AD_APPLICATION_SECRET }} 
 
      - name: Update metadata 
        run: | 
          $metadata = Get-Content -Raw "${{ github.workspace }}/metadata/metadata.json" 
          msstore submission updateMetadata <Store product Id> $metadata
      - name: Publish to Store 
        run: msstore submission publish <Store product Id>

metadata.json 메타데이터 폴더에서 CI/CD 흐름의 일부로 업데이트되면 AppMetadataAutoUpdate.yml 워크플로가 자동으로 트리거됩니다.

위의 워크플로는 백그라운드에서 다음을 수행합니다.

  • GitHub 동작 호출(microsoft-store-apppublisher)
  • 구성한 비밀(테넌트 ID, 클라이언트 ID, 클라이언트 암호, 판매자 ID)을 사용하여 Microsoft Store 파트너 센터 계정을 인증합니다.
  • Microsoft Store 개발자 CLI(msstore)를 사용하여 기본 메타데이터를 가져오고 업데이트된 패키지 또는 메타데이터를 Microsoft Store에 게시합니다.

명령에 대한 자세한 내용은 MSIX(Microsoft Store 개발자 CLI)를 참조하세요.

GitHub Actions 워크플로가 성공적으로 완료되면 Microsoft Store를 확인하여 변경 내용이 라이브 상태임을 확인합니다. 파트너 센터의 인증 프로세스가 완료되면 업데이트가 표시됩니다.

이 문서는 Microsoft Store 업데이트 프로세스의 효율성과 안정성을 크게 향상시키는 데 도움이 될 것이라고 신뢰합니다. 이러한 모범 사례를 따르면 앱 게시를 간소화하고 일관되고 고품질의 릴리스 환경을 보장할 수 있습니다.