OpenClaw Mac Release
안정적인 macOS 자산, 비공개 Mac 사전 비행, 공증, 앱캐스트 프로모션 또는 Mac 릴리스 복구와 관련된 작업에 $openclaw-release-maintainer, $openclaw-release-ci, $one-password와 함께 사용하세요.
자격 증명
- Canonical ASC 항목: 볼트
Molty, 제목API Key - App Store Connect - Personal - Release. - 필드:
private_key_p8,key_id,issuer_id. - 현재 알려진 유효 키 ID:
AKVLXW849T. - 레거시 미러: 볼트
Private, 제목API Key - App Store Connect - Personal; 이전 참조를 위해 동기화 상태 유지. - 만료/취소된 키 증상:
xcrun notarytool submit이HTTP status code: 401. Unauthenticated오류와 함께 실패. - GitHub Secrets를 설정하기 전에
xcrun notarytool history로 후보 ASC 자격 증명을 검증하세요.
1Password
$one-password사용: 모든op작업은 하나의 지속적인 tmux 세션 내에서 수행되며, 비밀 출력 없음.- Molty 읽기를 위해
~/.profile의OP_SERVICE_ACCOUNT_TOKEN을 선호하세요. MOLTY_OP_SERVICE_ACCOUNT_TOKEN이 살아있다고 가정하지 마세요; 이전에 삭제된 서비스 계정을 가리킨 적이 있습니다.- 서비스 토큰이 실패하면 상태 전용 검사만 수행: 토큰 존재/길이 및
op whoami; 토큰 값을 절대 출력하지 마세요. - 데스크톱 앱 인증이 필요하지만 Touch ID를 사용할 수 없는 경우, 수동
op account add --signin경로를 위해OP_BIOMETRIC_UNLOCK_ENABLED=false를 설정하세요.
GitHub Secrets
대상 비공개 리포지토리 환경: openclaw/releases-private, 환경 mac-release.
로컬 공증 인증 검증 후에만 설정:
APP_STORE_CONNECT_API_KEY_P8APP_STORE_CONNECT_KEY_IDAPP_STORE_CONNECT_ISSUER_ID
혼합 소스에서 업데이트하지 마세요. 세 ASC 필드는 모두 동일한 1Password 항목에서 가져와야 합니다.
워크플로우 구조
- 공개 릴리스 브랜치는 안정적인 태그/npm이 이미 배포된 후 Mac 전용 패키징 수정을 포함할 수 있습니다.
- 해당 브랜치 변형을 빌드할 때 비공개 Mac 사전 비행/검증을 위해
source_ref=release/YYYY.M.D를 사용하세요. tag=vYYYY.M.D를 원래 안정적인 릴리스 커밋을 가리키도록 유지하세요.- 실제 Mac 게시는 다음을 재사용해야 합니다:
- 동일한 태그/소스 SHA에 대한 성공적인 비공개 Mac 사전 비행 실행
- 동일한 태그/소스 SHA에 대한 성공적인 비공개 Mac 검증 실행
- 사전 비행 소스 SHA가 태그 SHA와 다른 경우, 검증도 동일한
source_ref를 사용해야 합니다; 프로모션은 일치하지 않는 증명을 거부합니다.
공증
- OpenClaw는
scripts/notarize-mac-artifact.sh를 사용합니다. xcrun notarytool submit은--no-s3-acceleration을 사용해야 합니다; 가속 업로드는notarytool history가 성공해도 잘못된 401 오류를 표시할 수 있습니다.- 서명은 성공했지만 공증이 401로 즉시 실패하면 먼저 ASC 키의 신선도를 확인하세요.
- 키 파일 작성 후 공증이 몇 분 동안 진행 중이면 이는 정상적인 Apple 대기 시간입니다; 맹목적으로 편집하지 마세요.
디스패치
비공개 사전 비행:
gh workflow run openclaw-macos-publish.yml --repo openclaw/releases-private --ref main \
-f tag=vYYYY.M.D \
-f source_ref=release/YYYY.M.D \
-f preflight_only=true \
-f smoke_test_only=false \
-f allow_late_calver_recovery=false \
-f public_release_branch=release/YYYY.M.D
브랜치 변형 사전 비행에 대한 비공개 검증:
gh workflow run openclaw-macos-validate.yml --repo openclaw/releases-private --ref main \
-f tag=vYYYY.M.D \
-f source_ref=release/YYYY.M.D
실제 게시:
gh workflow run openclaw-macos-publish.yml --repo openclaw/releases-private --ref main \
-f tag=vYYYY.M.D \
-f preflight_only=false \
-f smoke_test_only=false \
-f preflight_run_id=<성공적인-사전-비행-실행> \
-f validate_run_id=<성공적인-검증-실행> \
-f allow_late_calver_recovery=false \
-f public_release_branch=release/YYYY.M.D
확인
gh release view vYYYY.M.D --repo openclaw/openclaw는 zip, dmg, dSYM zip을 표시하고, 초안이나 프리릴리스가 아니어야 합니다.- 공개
mainappcast.xml이OpenClaw-YYYY.M.D.zip을 가리켜야 합니다. - Appcast 항목에는
sparkle:version,sparkle:shortVersionString, 길이 및sparkle:edSignature가 있어야 합니다.