피드로 돌아가기
Distributing a Python desktop app on Windows and Mac — the full release pipeline
Dev.toDev.to
DevOps

OS별 파이프라인 분리를 통한 Python 데스크톱 앱 배포 자동화 및 30분 내 릴리스 달성

Distributing a Python desktop app on Windows and Mac — the full release pipeline

Susumu Takahashi2026년 6월 17일5intermediate

Context

단일 Python 코드베이스 기반의 cross-platform 개발에도 불구하고 OS별 상이한 바이너리 구조와 보안 검증 체계로 인한 배포 파이프라인의 파편화 발생. 특히 OS별 Code Signing 및 Notarization 프로세스의 차이로 인해 통합 배포 자동화에 한계 직면.

Technical Solution

  • Rosetta 2 호환성 확보를 위해 arch -x86_64 명령어를 통한 x86_64 전용 바이너리 빌드 체계 구축
  • Hardened Runtime 호환성 이슈 해결을 위해 codesign --deep 대신 Mach-O 바이너리를 개별 식별하여 Inside-out 방식으로 서명하는 정밀 서명 로직 적용
  • Apple Notarization 속도 최적화를 위해 DMG 대신 분석 경로가 단순한 ZIP 포맷으로 제출 후 Staple 하는 전략 채택
  • 기업 환경의 UAC 권한 제한 문제를 해결하기 위해 Inno Setup의 PrivilegesRequired=lowest 설정을 통한 %APPDATA% 사용자 모드 설치 구조 설계
  • 물리적 USB 토큰 의존성을 제거하고 CI/CD 파이프라인 통합을 위해 eSigner CSC 기반의 Cloud Signing 자동화 구현

1. macOS 빌드 시 Apple Silicon/Intel 아키텍처 혼선 방지를 위한 빌드 환경 고정 여부 확인

2. macOS 서명 시 하위 바이너리(Mach-O) 개별 서명 및 ZIP 기반 Notarization 적용 검토

3. Windows 설치 프로그램 설계 시 기업 환경 배포를 위한 User-mode 설치 옵션 고려

4. 코드 서명 프로세스의 자동화를 위해 Cloud Signing 서비스 도입 검토

5. 다수 파일에 분산된 버전 정보의 동기화를 위한 단일 진실 공급원(Single Source of Truth) 스크립트 구축

원문 읽기