Skip to content

패키지 저장소 배포 (PyPI / Homebrew / winget) #88

Description

@minigu5

배경

OMM의 패키지 저장소 배포를 하나의 서명된 릴리스를 기준으로 추적한다. PyPI와 Homebrew는 공개됐고, winget은 Microsoft 검토·병합과 공식 source 사용자 경로가 남아 있다.

확정 범위 및 이름

  • PyPI 배포 이름: omm-model
    • 설치: pipx install omm-model 또는 pip install omm-model
    • Python import 이름과 CLI 명령은 계속 omm을 유지한다.
  • Homebrew Tap: omm-hippo/homebrew-omm
    • 설치: brew install omm-hippo/omm/omm
  • winget ID: OmmHippo.OMM
    • 설치: winget install --id OmmHippo.OMM -e

진행 순서

0. 공통 릴리스 기반

  • Git 태그와 pyproject.toml 버전 일치 검사
  • wheel/sdist 빌드 및 메타데이터 검사
  • 빌드된 wheel을 깨끗한 환경에 설치해 omm --version / omm --help 실행
  • SHA-256 체크섬과 GitHub Release 아티팩트 생성
  • 승인된 태그에서만 배포되는 GitHub Actions 워크플로 구성

1. PyPI

  • pyproject.toml 배포 이름과 프로젝트 메타데이터 정리
  • TestPyPI 시험 배포 및 실제 TestPyPI 설치 검증
  • PyPI Trusted Publishing(OIDC) 구성
  • 실제 PyPI 배포
  • macOS/Linux/Windows의 깨끗한 환경에서 설치·실행·업그레이드·제거 검증
    • GitHub-hosted 세 운영체제에서 공개 PyPI 설치·실행·제거는 통과했다.
    • 실제 Apple Silicon Mac에서 공개 0.2.129 → 0.2.147 업그레이드·실행·제거를 확인했다.
    • 실제 Windows/Linux 장치의 공개 버전 간 업그레이드는 미검증이다.

2. Homebrew Tap

  • omm-hippo/homebrew-omm 저장소 생성
  • Formula/omm.rb 작성
  • PyPI의 고정 버전 소스와 모든 Python 의존성/체크섬 고정
  • brew audit, brew install --build-from-source, brew test 통과
  • Apple Silicon/Intel Mac에서 설치·실행·업그레이드·제거 검증
    • 실제 Apple Silicon Mac에서 공개 Tap 0.2.129 → 0.2.147 설치·새 셸 실행·업그레이드·제거를 확인했다.
    • GitHub-hosted Intel macOS에서 source install·test·version/help는 통과했다.
    • 사용자 소유 실제 Intel Mac 경로는 미검증이다.

3. Windows 설치 아티팩트

  • 기존 install.ps1과 별개인 고정 버전 portable ZIP 방식 결정
  • PATH 등록, silent install/uninstall, upgrade를 지원하는 winget manifest 구성
  • 제거 시 ~/.omm 사용자 데이터가 기본적으로 보존되는지 자동 검증
  • Windows Sandbox/VM 및 실제 Windows 장치에서 설치·실행·업그레이드·제거 검증
    • GitHub-hosted Windows에서 local manifest 설치·실행·제거는 통과했다.
    • 공식 source 업그레이드와 사용자 소유 실제 Windows 장치는 미검증이다.

4. winget

  • OmmHippo.OMM manifest 작성
  • Installer URL/SHA-256/아키텍처/silent switch 검증
  • winget validate 및 GitHub-hosted Windows의 local manifest 설치·제거 검증
  • microsoft/winget-pkgs PR #421239 제출
  • 병합 후 공식 winget source에서 검색·설치·업그레이드·제거 검증
    • 01~10 검증과 CLA는 성공했으며 현재 Microsoft write-access reviewer 승인을 기다리고 있다.

5. 문서 및 업데이트 정책

  • README에 PyPI/Homebrew/winget 설치·업그레이드·제거 명령 추가
  • 패키지 관리자로 설치된 경우 omm update가 파일을 직접 덮어쓰지 않고 해당 패키지 관리자의 업그레이드 명령을 안내하도록 정책 확정
  • 지원 플랫폼과 검증 수준을 실제 결과대로 표시
    • Homebrew 공개 업그레이드 결과와 winget 최종 공개 결과를 반영한 마지막 문서 갱신이 남아 있다.

현재 차단 요소

  • Blocked / 차단됨: winget PR #421239의 Microsoft reviewer 승인·병합
  • Not verified / 미검증: 병합 후 공식 winget source 검색·설치·실행·업그레이드·제거
  • Not verified / 미검증: 사용자 소유 실제 Intel Mac과 실제 Windows 장치 경로

검증/완료 원칙

  • Implemented: 패키지 설정·워크플로·Formula·Manifest가 존재함
  • Unit-verified: 빌드 검사와 관련 자동 테스트가 통과함
  • Simulator-verified: 깨끗한 VM/Sandbox에서 사용자 설치 경로를 실행함
  • Physical-device-verified: 실제 Mac/Windows/Linux 장치에서 사용자 설치 경로를 실행함
  • 실제 저장소에서 검색 → 설치 → 새 터미널 실행 → 업그레이드 → 제거까지 확인하기 전에는 해당 배포 경로를 완료로 표시하지 않는다.

Out of scope

  • apt 정식 등록 및 자체 PPA
  • Homebrew Core 편입
  • Microsoft Store 앱 등록
  • npm 경로는 별도 이슈 #146에서 추적

Activity

  1. fakeminjun7321 commented on Aug 19, 2026

    @fakeminjun7321
    Member

    Phase 2 진행 상황 — PyPI 배포 준비

    Draft PR: #126

    Implemented

    • 최종 배포명 omm-model, Python import/CLI는 omm 유지
    • 통합 workflow .github/workflows/release.yml
    • PyPI Environment pypi, TestPyPI Environment testpypi
    • 기존 OMM pipx 환경만 식별해 안전하게 omm-model로 마이그레이션하고, unrelated PyPI omm 환경은 보존
    • pip/pipx 설치는 omm update로 Git 설치로 바뀌지 않도록 package-manager-aware 정책 적용
    • TestPyPI → PyPI OIDC 게시, 파일/해시/attestation/공개 pipx 설치 검증 단계 구현
    • 현재 버전 0.2.124

    Unit-verified

    • signed HEAD 1e94dc8 격리 전체 테스트: 1635 passed, 4 skipped
    • GitHub Windows 전체 테스트(push/PR 각각): 1621 passed, 18 skipped, 0 failed
    • Windows/macOS/Ubuntu, Python 3.10/3.14 wheel 설치 smoke 성공
    • omm_model-0.2.124 wheel/sdist 빌드 및 twine check, metadata/checksum 검증 성공
    • PR 체크: 31 passed, 6 intentionally skipped (tag publication jobs), 0 failed/pending

    External blockers / 실제 배포 전 차단 조건

    • PR #126은 아직 Draft이며 main에 병합되지 않음
    • GitHub pypi/testpypi Environment에 required reviewer와 tag deployment policy가 아직 없음
    • v* tag ruleset이 아직 없음
    • PyPI Pending Publisher를 omm-model / omm-hippo / omm / release.yml / pypi로 로그인 확인 필요
    • TestPyPI Pending Publisher도 별도로 등록/확인 필요(Environment testpypi)

    Not verified / 미검증

    • 실제 TestPyPI/PyPI 업로드는 하지 않음
    • 두 인덱스의 omm-model은 아직 404
    • 공개 pip install omm-model / pipx install omm-model, live attestation은 태그 배포 전까지 미검증
    • Homebrew와 winget 등록은 PyPI 공개 릴리스 뒤의 다음 단계

    보호 설정과 Pending Publisher가 확인되기 전에는 병합 후에도 v0.2.124 태그를 만들지 않습니다.

  2. fakeminjun7321 commented on Aug 20, 2026

    @fakeminjun7321
    Member

    v0.2.128 PyPI release completed

    Implemented

    • TestPyPI → PyPI Trusted Publishing with protected GitHub Environments
    • Exact file/SHA-256 and publish-attestation verification
    • Public PyPI pipx install/run/uninstall verification on Ubuntu, macOS, and Windows
    • GitHub Release with wheel, sdist, and SHA256SUMS

    Unit-verified

    • Release build, six wheel smoke jobs, and three full-suite release gates passed
    • TestPyPI and PyPI file/provenance verification passed
    • Public PyPI pipx paths passed on all three GitHub-hosted operating systems

    Actual service verification

    • omm-model==0.2.128 is live on TestPyPI and PyPI
    • Downloaded GitHub Release archives match the PyPI SHA-256 digests

    Not verified / 미검증

    • A public PyPI upgrade from an older OMM release is not yet testable because 0.2.128 is the first public PyPI release
    • Physical-device user-path verification remains separate from GitHub-hosted CI
    • Homebrew and winget are not implemented or published yet

    Follow-up

    -The first TestPyPI verification attempt hit temporary /simple/ index propagation delay. A retry passed after the index became visible. Add bounded retry/backoff around smoke-index-install before the next release.

  3. fakeminjun7321 commented on Aug 20, 2026

    @fakeminjun7321
    Member

    2026-08-20 Homebrew / 문서 / npm 후속 상태

    Implemented

    • Homebrew Tap omm-hippo/homebrew-omm과 Formula/omm.rb이 공개되어 있다.
    • 공개 설치 명령은 brew install omm-hippo/omm/omm이다.
    • README 문서 PR #145가 병합되어 Homebrew 설치·업그레이드·제거 명령, omm update 정책, 검증 수준 표가 main에 반영됐다.
    • npm 설치 경로는 별도 설계 이슈 #146으로 분리했다. npm 패키지나 게시 워크플로는 아직 만들지 않았다.

    Unit-verified

    Simulator-verified

    • 공개 Tap의 최신 brew test-bot CI가 성공했다.
    • 2026-08-20 현재 brew info omm-hippo/omm/omm에서 공개 Formula 0.2.128과 고정된 PyPI source/checksum이 조회된다.
    • Formula와 PyPI는 릴리스 주기가 다를 수 있으므로 README는 설치 버전을 고정해 쓰지 않고 brew info를 현재 Tap 버전의 기준으로 안내한다.

    Physical-device-verified

    • Apple Silicon 실제 Mac에서 공개 Tap 설치, omm --version, brew test, omm update의 Homebrew 업그레이드 안내, 제거 경로를 확인했다.

    Not verified / 미검증

    • Intel Mac의 실제 설치·실행·업그레이드·제거는 미검증이다.
    • 서로 다른 두 공개 Homebrew Formula 버전 사이의 실제 업그레이드는 미검증이다.
    • npm 공개 registry 게시·설치·실행·업그레이드·제거는 미검증이며 #146에서 설계부터 진행한다.
    • Winget 범위는 별도 작업에서 진행 중이므로 이 댓글에서는 구현·검증·완료 상태를 변경하지 않는다.
  4. fakeminjun7321 commented on Aug 21, 2026

    @fakeminjun7321
    Member

    2026-08-21 배포 현황 갱신

    PyPI

    • omm-model==0.2.147 TestPyPI→PyPI Trusted Publishing 완료
    • 파일·SHA-256·publish attestation 검증 성공
    • GitHub-hosted Ubuntu/macOS/Windows의 공개 pipx 설치·실행·제거 성공
    • Apple Silicon 실제 Mac의 공개 PyPI 설치·실행·제거 성공
    • 공개 0.2.129 → 0.2.147 업그레이드는 이번 후속 작업에서 별도 검증 예정

    Homebrew

    • 공개 Tap과 Formula 0.2.129 존재, Apple Silicon 실제 설치 경로 검증 완료
    • Formula 0.2.147 갱신과 공개 버전 간 업그레이드, 실제 Intel Mac 경로는 남음

    WinGet

    • microsoft/winget-pkgs PR #421239는 OPEN
    • 검증 10단계와 CLA 성공, Validation-Completed 상태
    • 현재 Microsoft write-access reviewer 승인이 필요하며 병합 후 공식 source 설치·업그레이드·제거는 미검증

    npm 후속

    • @omm-hippo/omm@0.2.147 최초 공개와 Apple Silicon 실제 사용자 경로는 검증됨
    • 상세 미검증 항목은 #146에서 추적

    GitHub Release: https://github.com/omm-hippo/omm/releases/tag/v0.2.147
    Winget PR: microsoft/winget-pkgs#421239

    #88은 WinGet 공식 병합·공개 경로와 남은 업그레이드 검증이 끝날 때까지 열린 상태로 유지합니다.

  5. fakeminjun7321 commented on Aug 21, 2026

    @fakeminjun7321
    Member

    배포 경로 후속 검증 기록 (2026-08-21)

    Implemented

    • Homebrew PR #3에서 Formula를 0.2.147로 갱신하고 공개 PyPI sdist URL/SHA-256을 고정했다.
    • Linux strict linkage에 필요한 libffi 직접 의존성을 선언했다.
    • Intel CI에 실제 source install, brew test, version/help 실행 단계를 추가했다.

    Unit-verified

    • 공개 PyPI sdist SHA-256과 omm-model 0.2.147 메타데이터를 확인했다.
    • Ruby syntax, brew style, actionlint, git diff --check가 통과했다.

    Simulator-verified

    • Homebrew run 32458555756의 Apple Silicon macOS와 Linux에서 source build, bottle 재설치, strict linkage, Formula test가 통과했다.
    • macOS 15.7.7 x86_64 hosted runner가 실제 source install, brew test, omm --version, omm --help를 실행했고 omm 0.2.147을 확인했다.

    Physical-device-verified

    • Apple Silicon Mac의 격리된 pipx 환경에서 공개 PyPI omm-model을 0.2.129로 설치한 뒤 pipx upgrade omm-model로 0.2.147까지 실제 업그레이드했다.
    • 업그레이드 전후 버전, package-managed omm update 안내, CLI 도움말, 제거와 명령 삭제까지 확인했다.

    실제 서비스 검증

    • PyPI omm-model==0.2.147은 공개 상태이며 yanked가 아니고 wheel·sdist가 존재한다.
    • Homebrew PR #3은 Ready, CLEAN, MERGEABLE이며 CI 3개가 모두 성공했지만 아직 미병합이다.
    • Winget PR #421239는 OPEN/Ready/REVIEW_REQUIRED이고 Azure-Pipeline-Passed, Validation-Completed, New-Package 상태다. 이 채팅에서는 Winget 파일이나 PR을 수정하지 않았다.

    Not verified / 미검증

    • Homebrew PR #3이 아직 병합되지 않아 공개 tap의 0.2.147 설치·0.2.129→0.2.147 업그레이드·제거는 미검증이다.
    • Intel 검증은 GitHub-hosted runner이며 사용자 소유 물리 Intel Mac 검증은 아니다.
    • Winget은 관리자 리뷰·병합 전이므로 공식 source의 검색·설치·업그레이드·제거는 미검증이다.

    따라서 #88은 아직 닫지 않는다. Homebrew PR #3 병합 후 공개 tap 경로와 Winget PR 병합 후 공식 source 경로를 검증한 뒤 종료 여부를 판단한다.

  6. fakeminjun7321 commented on Aug 21, 2026

    @fakeminjun7321
    Member

    Homebrew 공개 업그레이드 실검증 (2026-08-21, 정정 포함)

    Implemented

    • Homebrew PR #3이 merge commit 65b030315a55b282b76724111f5900c1f6877d78로 병합됐다.
    • 공개 Tap의 Formula가 0.2.147과 고정된 PyPI sdist/SHA-256, libffi 직접 의존성을 제공한다.

    Unit-verified

    • PR run 32458555756에서 Formula의 source build, brew test, linkage 검사가 통과했다.
    • 병합 후 main push run 32462863285의 Apple Silicon, Intel, Linux 작업도 모두 성공했다. 단, 이 push run에서는 Formula exercise 단계가 변경 파일 판정 때문에 skip됐으며, 실제 Formula build/test/linkage 근거는 PR run 32458555756이다.

    Simulator-verified

    • PR run 32458555756의 GitHub-hosted Apple Silicon macOS와 Linux에서 source build, bottle 재설치, linkage 및 brew test가 성공했다.
    • 같은 run의 GitHub-hosted Intel macOS 15.7.7 x86_64에서 brew install --build-from-source, brew test, omm --version, omm --help가 실제 실행됐고 omm 0.2.147을 확인했다.

    Physical-device-verified

    • 실제 Apple Silicon Mac에서 공개 Tap의 이전 Formula 0.2.129를 설치했다.
    • omm 0.2.129, omm --help, brew test, Homebrew 관리 설치의 omm update 안내를 확인했다.
    • brew update 후 0.2.147이 outdated upgrade 대상으로 감지되는 것을 확인했다.
    • brew upgrade omm-hippo/omm/omm으로 실제 0.2.129 → 0.2.147 업그레이드가 성공했다.
    • 업그레이드 후 omm 0.2.147, 도움말, brew test, Homebrew 업그레이드 안내가 모두 성공했다.
    • 새 로그인 셸에서 bare omm이 /opt/homebrew/bin/omm으로 확인됐고 omm 0.2.147과 도움말이 실행됐다.
    • brew uninstall omm-hippo/omm/omm 후 Formula가 제거됐고, 기존 /Users/minjun/.local/bin/omm은 SHA-256 aaf1c17ce63567be2a5f2c6718c2d4a4459b838daf3c9fc6e03e111b938ff06d이 바뀌지 않은 채 다시 선택되어 omm 0.2.129로 실행됐다.

    Not verified / 미검증

    • 사용자 소유 실제 Intel Mac에서 공개 Tap 설치·업그레이드·제거는 미검증이다. Intel 경로는 GitHub-hosted runner까지만 검증됐다.
    • Winget PR #421239는 Microsoft reviewer 승인 대기 상태이므로 공식 source의 검색·설치·업그레이드·제거는 미검증이다.

    따라서 Homebrew의 공개 Apple Silicon 설치·새 셸 실행·버전 간 업그레이드·제거 경로는 완료됐지만, #88은 Winget 공식 경로가 검증될 때까지 열린 상태로 유지한다.

  7. fakeminjun7321 commented on Aug 21, 2026

    @fakeminjun7321
    Member

    v0.2.148 공동 릴리스 결과

    Implemented

    Unit-verified

    • PR release: prepare 0.2.148 #156: 68 success, 10 expected skipped, failure/pending 0.
    • 병합 후 main: npm design 15/15, cross-platform 8/8 성공.
    • 태그에서 시작된 11개 workflow가 최종적으로 모두 성공했다.

    Simulator-verified

    • Python release는 Ubuntu/macOS/Windows의 build, wheel install, full release gate, 공개 PyPI pipx 설치·실행·제거를 통과했다.
    • npm release는 Apple Silicon/Intel macOS, Linux x64/ARM64, Windows x64 공개 설치·서명 감사·실행·업데이트 안내·제거를 통과했다.

    Physical-device-verified

    • 실제 Apple Silicon Mac에서 공개 npm 0.2.147 → 0.2.148 업그레이드, 새 로그인 셸 실행, version/help, npm 업데이트 안내, 서명 감사, 제거를 확인했다.

    실제 서비스 검증

    • TestPyPI와 PyPI에 omm-model==0.2.148 wheel/sdist가 공개됐고 SHA-256과 provenance가 검증됐다.
    • PyPI 공개 pipx 경로는 재검증 attempt 2에서 17/17 성공했다. 첫 Windows 시도는 게시 직후 simple-index 전파 지연으로 실패했으며, 파일 재업로드 없이 failed-job-only rerun으로 통과했다.
    • npm launcher와 플랫폼 패키지 5개가 모두 0.2.148로 공개됐고 SHA-512 integrity, registry 서명, publish attestation, SLSA provenance를 확인했다.
    • GitHub Release의 wheel/sdist SHA-256은 PyPI 파일과 일치한다.

    Not verified / 미검증

    • 사용자 소유 실제 Intel Mac, Windows, Linux 장치에서 공개 버전 간 업그레이드는 미검증이다.
    • Winget PR #421239는 Microsoft reviewer 승인·병합 대기 상태이므로 공식 source 검색·설치·업그레이드·제거는 미검증이다.

    npm 후속 이슈 #146은 완료 처리했다. #88은 Winget 공식 경로가 검증될 때까지 계속 열린 상태로 유지한다.

  8. Matwaetle commented on Sep 15, 2026

    @Matwaetle
    Member

    2026-09-16 실기기 검증 기록 (Windows 11, python.org 3.13, 격리 venv, 격리 HOME):

    • 공개 PyPI omm-model==0.3.33 설치 → omm --version = 0.3.33 → pip install -U omm-model==0.3.41 → omm --version = 0.3.41, omm --help, omm list, omm doctor 정상 → pip uninstall 후 omm.exe 제거 확인. 즉 "실제 Windows 장치의 공개 버전 간 업그레이드" 항목은 통과.
    • 부수 발견: stdin 은 터미널·stdout 은 파이프인 환경에서 첫 실행 온보딩 프롬프트가 죽음 → fix: 출력이 파이프일 때 첫 실행 온보딩 프롬프트가 죽던 문제 (#88 검증 중 발견) #341 로 수정.
    • 현재 GitHub Release v0.3.41 에는 자산(zip/wheel/체크섬)이 없어(releases/download/.../omm-windows-x64-0.3.41.zip 404) winget 매니페스트가 가리킬 파일이 없음. 다음 서명 태그 릴리스(docs/release-process.md 절차)가 나가면 자산 5개가 생기고, 그 버전으로 winget 매니페스트를 새로 제출하는 것이 남은 경로. New package: OmmHippo.OMM version 0.2.149 microsoft/winget-pkgs#421239 (0.2.149) 는 낡아서 새 제출로 대체 예정.
  9. added a commit that references this issue on Sep 15, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions