[Setting] #264 - main 브랜치 push 시 App Store 심사 자동 제출 CI 구축 - #265
Merged
Merged
Conversation
테스트 커버리지 리포트
Generated by CI on 2026-09-15 15:13 KST |
- .github/workflows/release.yml 신설: main push 트리거, CUTOVER_READY + app-store-release Environment 승인 게이트를 거쳐 fastlane release lane 실행 - fastlane/Fastfile: release lane에 CUTOVER_READY 가드 추가(로컬 실행도 방어), deliver force: true - fastlane/metadata/ko/release_notes.txt 신설: 심사 제출 릴리즈 노트 출처(git 버전관리) - .github/workflows/test.yml: PR 대상에 main 추가(develop→main 릴리스 PR도 테스트/아키텍처 검사) - docs/WORKFLOW.md, docs/TODO.md: 새 배포 파이프라인 반영 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Xw3U9yFqRTVT96h2CQMHXQ
- .claude/scripts/make-release-pr.sh 신설: preflight(develop↔main 비교, 버전 참고값, 대량 커밋일 때 PR 병합 단위 압축 롤업) + pr-create(base=main PR 생성) - .claude/skills/make-release-PR/SKILL.md 신설: 버전·릴리즈노트 질문 → new-issue 재사용해 브랜치 생성 → Project.swift/release_notes.txt 반영 커밋 → base=main PR 생성까지 절차화 - 이슈·브랜치 생성은 재발명하지 않고 기존 new-issue 스킬을 그대로 재사용 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Xw3U9yFqRTVT96h2CQMHXQ
…불일치 수정 - release.yml: fastlane/Appfile이 로드 시점에 APP_IDENTIFIER_DEBUG도 ENV.fetch로 요구해 release lane 실행 전 KeyError로 죽던 문제 수정(secret 전달 추가) - release.yml: CONFIG_BASE_URL/CONFIG_BUCKET_URL 시크릿을 평범한 https:// 형태로 등록해도 되도록 xcconfig // 주석 파싱 회피 이스케이프를 워크플로우가 자동 적용 - release.yml: permissions: contents: read 명시(최소권한, test.yml과 일관) - docs/TODO.md: main 브랜치 보호·Environment는 이미 완료된 상태로 정정(WORKFLOW.md와 불일치 해소), 시크릿 목록에 APP_IDENTIFIER_DEBUG 추가, deliver 메타데이터 확인 필요성 명시 - make-release-PR/SKILL.md: Project.swift 변경 후 Scripts/patch-spm-deployment-target.sh 실행 단계 추가(루트 CLAUDE.md 비협상 누락) wss-pr-reviewer 리뷰 반영 (Blocker 1, Warning 3) Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Xw3U9yFqRTVT96h2CQMHXQ
Guryss
force-pushed
the
Setting/#264
branch
from
September 14, 2026 16:00
db0dba9 to
2370549
Compare
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LW4vhUfFMPH9PXLV6vdsUg
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LW4vhUfFMPH9PXLV6vdsUg
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LW4vhUfFMPH9PXLV6vdsUg
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
💡 Issue
💭 Summary
main에 push되면 App Store 심사 제출까지 자동으로 이어지는 CI를 만들었어요.그 파이프라인을 실제로 쓰기 위한 develop→main 릴리스 PR 자동화 스킬(
make-release-PR)도 같이 추가했어요.CI 배선에 이어서, 그 CI가 실제로 열리는 조건인 컷오버 체크리스트(
docs/TODO.md4번)도 이 PR에서 같이 진행했어요 — 코드로 할 수 있는 항목(aps-environment 분리)은 구현했고, 나머지는 콘솔·실기기로 직접 확인해 진행 상황을 문서에 기록했어요.🔑 Key Changes
CI 배선
release.yml신설 —mainpush 트리거,CUTOVER_READY+app-store-releaseEnvironment 승인 게이트를 거쳐 fastlanereleaselane(빌드 + App Store 심사 제출) 실행fastlane/Fastfile—releaselane에CUTOVER_READY가드 추가(로컬 실행도 방어),deliver force: truefastlane/metadata/ko/release_notes.txt신설 — 심사 제출 릴리즈노트를 git으로 버전관리test.yml— PR 대상에main추가(develop→main 릴리스 PR도 테스트/아키텍처 검사)릴리스 PR 자동화
make-release-PR스킬 + 스크립트 신설 — 버전·릴리즈노트를 물어보고,new-issue재사용해 브랜치 생성 후base=mainPR 생성까지 자동화컷오버 체크리스트 진행 (
docs/TODO.md4번)aps-environment를 Debug/Release로 분리(7번 완료) —Project.swift의CODE_SIGN_ENTITLEMENTS빌드 설정으로 Debug는 기존Support/WSS-iOS.entitlements(development), Release는 새로 추가한Support/WSS-iOS-Release.entitlements(production)를 가리키게 했어요. 배포판만 production이어야 푸시가 배달돼요.release_betalane)가 유일한 경로라는 걸 확인했고, main 머지/릴리즈 작업 시점에 이어서 진행하기로 했어요.문서
docs/WORKFLOW.md,docs/TODO.md— 새 배포 파이프라인 + 컷오버 체크리스트 진행 상황 반영Projects/App/CLAUDE.md— aps-environment 분리 구조·주의사항 갱신GitHub 저장소 설정(코드 아님, 이미 반영됨)
main브랜치 보호를develop수준으로 강화(required status check, force-push·삭제 금지)app-store-releaseEnvironment 생성(승인자 Guryss·Naknakk, 배포 브랜치main제한)CUTOVER_READYrepo variablefalse로 등록📱 Simulation
해당 없음 — UI 변경 없이 CI/tooling·설정 파일만 추가했어요(entitlements 분리는 Debug 시뮬레이터 빌드로 검증).
🧑🧒🧒 To Reviewer
CUTOVER_READY가false인 동안은main에 뭐가 push돼도 job 자체가 승인 요청 없이 skip돼요 — 컷오버 체크리스트(docs/TODO.md4번) 끝나기 전엔 안전해요.ASC_KEY_ID등)는 아직 하나도 등록 안 했어요 — 이것도CUTOVER_READY켜기 전에 채워야 해요.CUTOVER_READY전환)은 main 머지/릴리즈 작업 시점에 이어가기로 보류했어요.APP_IDENTIFIER_DEBUG누락 등 발견해 수정).※ Reference
🤖 Generated with Claude Code