Skip to content

Commit ee13031

Browse files
authored
[Merge] CD workflow 수정
2 parents 39f3e2b + f59d53b commit ee13031

File tree

2 files changed

+26
-9
lines changed

2 files changed

+26
-9
lines changed

.github/workflows/release.yml

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -72,32 +72,32 @@ jobs:
7272
ASC_KEY_CONTENT: ${{ secrets.ASC_KEY_CONTENT }}
7373
MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }}
7474

75-
# 9. 배포 완료 후 서버로 최신 버전 정보 POST 요청
75+
# 9. 배포 완료 후 서버로 최신 버전 정보 POST 요청 및 환경 변수 저장
7676
- name: Send Version Update to Server
77-
if: success() # 배포가 성공적으로 끝났을 때만 실행
77+
if: success()
7878
run: |
79-
# Xcode 빌드 세팅에서 MARKETING_VERSION(앱 버전) 자동 추출
8079
APP_VERSION=$(xcodebuild -showBuildSettings -project ./Neki-iOS.xcodeproj -scheme Neki-iOS | grep " MARKETING_VERSION " | sed 's/[ ]*MARKETING_VERSION = //')
81-
8280
echo "추출된 최신 버전: $APP_VERSION"
81+
82+
echo "APP_VERSION=$APP_VERSION" >> $GITHUB_ENV
8383
84-
# 추출된 버전을 JSON 바디에 담아서 서버로 POST 요청 (minVersion은 필요시 추후 수정)
8584
curl -X PATCH "${{ secrets.APP_VERSION_API_ADDRESS }}" \
8685
-H "Content-Type: application/json" \
8786
-d "{
8887
\"minVersion\": \"1.0.0\",
8988
\"currentVersion\": \"$APP_VERSION\"
9089
}"
9190
92-
# 10. Discord 결과 알림 (성공/실패 여부 전송)
91+
# 10. Discord 결과 알림 (성공 시 버전 정보 포함)
9392
- name: Send Discord notification
94-
if: always() # 빌드 성공/실패 여부와 상관없이 무조건 실행
93+
if: always()
9594
run: |
9695
if [ "${{ job.status }}" == "success" ]; then
97-
STATUS="✅ [Neki-iOS] release 브랜치 App Store Connect 배포 성공 🚀"
96+
STATUS="✅ [Neki-iOS] release 브랜치 App Store Connect 배포 성공! (Version: ${{ env.APP_VERSION }}) 🚀"
9897
else
9998
STATUS="❌ [Neki-iOS] release 브랜치 App Store Connect 배포 실패 😭"
10099
fi
100+
101101
PAYLOAD=$(jq -n --arg content "$STATUS (${{ github.repository }})" '{content: $content}')
102102
curl -H "Content-Type: application/json" \
103103
-X POST \

fastlane/Fastfile

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,30 +4,47 @@ platform :ios do
44
desc "Release build and upload to App Store Connect"
55
lane :release do
66

7+
# 1. CI 환경 설정
78
setup_ci
89

10+
# 2. App Store Connect API 연결
911
app_store_connect_api_key(
1012
key_id: ENV["ASC_KEY_ID"],
1113
issuer_id: ENV["ASC_ISSUER_ID"],
1214
key_content: ENV["ASC_KEY_CONTENT"],
1315
is_key_content_base64: true
1416
)
1517

18+
# 3. 배포용 인증서 및 프로파일 동기화
1619
match(
1720
type: "appstore",
1821
readonly: true
1922
)
2023

24+
# 4. 버전별 빌드 번호 자동 관리 로직
25+
# 현재 Xcode 프로젝트에 설정된 버전(예: 1.2.0)을 가져옵니다.
26+
current_version = get_version_number(target: "Neki-iOS")
27+
28+
# 해당 버전에서 TestFlight에 올라간 가장 높은 빌드 번호를 확인합니다.
29+
# 만약 새 버전이라 데이터가 없다면 0을 반환합니다.
30+
latest_build = latest_testflight_build_number(
31+
version: current_version,
32+
initial_build_number: 0
33+
)
34+
35+
# 확인된 번호에 +1을 해서 로컬 프로젝트에 적용합니다.
2136
increment_build_number(
22-
build_number: latest_testflight_build_number + 1
37+
build_number: latest_build + 1
2338
)
2439

40+
# 5. 앱 빌드 및 아카이브
2541
build_app(
2642
scheme: "Neki-iOS",
2743
configuration: "Release",
2844
export_method: "app-store"
2945
)
3046

47+
# 6. TestFlight 업로드
3148
upload_to_app_store(
3249
skip_metadata: true,
3350
skip_screenshots: true,

0 commit comments

Comments
 (0)