Skip to content

Commit f657cd3

Browse files
authored
Release/3.2.1 (#459)
* fix: release&tag workflow shell script syntax error * version code 52 * feat: switch release notes source to YAML * chore: remove .DS_Store files and ensure they are ignored
1 parent 0a18637 commit f657cd3

9 files changed

Lines changed: 44 additions & 38 deletions

File tree

.DS_Store

-10 KB
Binary file not shown.

.github/workflows/release_tag.yml

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -144,18 +144,28 @@ jobs:
144144
- name: Check Play Store release notes file
145145
id: check_release_notes
146146
run: |
147-
if [ -f "RELEASE_NOTES.txt" ]; then
148-
echo "✅ RELEASE_NOTES.txt 파일 발견"
147+
RELEASE_NOTE_FILE="release-notes/v${{ steps.extract_info.outputs.version }}.yml"
148+
149+
if [ -f "$RELEASE_NOTE_FILE" ]; then
150+
echo "✅ $RELEASE_NOTE_FILE 파일 발견"
149151
echo "exists=true" >> $GITHUB_OUTPUT
150-
# 릴리즈 노트 내용을 output에 저장
151-
RELEASE_NOTES_CONTENT=$(cat RELEASE_NOTES.txt)
152-
echo "release_notes<<EOF" >> $GITHUB_OUTPUT
153-
echo "$RELEASE_NOTES_CONTENT" >> $GITHUB_OUTPUT
154-
echo "EOF" >> $GITHUB_OUTPUT
155-
echo "📄 릴리즈 노트 내용:"
156-
head -10 RELEASE_NOTES.txt
152+
153+
# Ruby를 사용하여 YAML 파싱 (안전함)
154+
# YAML 파일에서 'ko' 키의 값을 추출
155+
RELEASE_NOTES_CONTENT=$(ruby -e "require 'yaml'; begin; puts YAML.load_file('$RELEASE_NOTE_FILE')['ko']; rescue; end")
156+
157+
if [ -z "$RELEASE_NOTES_CONTENT" ]; then
158+
echo "⚠️ YAML 파일에서 'ko' 항목을 찾을 수 없거나 비어있습니다."
159+
echo "release_notes=" >> $GITHUB_OUTPUT
160+
else
161+
echo "release_notes<<EOF" >> $GITHUB_OUTPUT
162+
echo "$RELEASE_NOTES_CONTENT" >> $GITHUB_OUTPUT
163+
echo "EOF" >> $GITHUB_OUTPUT
164+
echo "📄 릴리즈 노트 내용:"
165+
echo "$RELEASE_NOTES_CONTENT"
166+
fi
157167
else
158-
echo "⚠️ RELEASE_NOTES.txt 파일을 찾을 수 없습니다."
168+
echo "⚠️ $RELEASE_NOTE_FILE 파일을 찾을 수 없습니다."
159169
echo "⚠️ Play Store 릴리즈 노트 없이 배포됩니다."
160170
echo "exists=false" >> $GITHUB_OUTPUT
161171
echo "release_notes=" >> $GITHUB_OUTPUT
@@ -259,7 +269,7 @@ jobs:
259269
GITHUB_NOTES="- [Fix] 릴리즈 노트를 가져올 수 없습니다."
260270
else
261271
GITHUB_NOTES=$(echo "$RELEASE_RESPONSE" | jq -r '.body // ""' | \
262-
grep -A 100 "## What'"'"'s Changed" | \
272+
grep -A 100 "## What's Changed" | \
263273
grep -v "^---" | \
264274
grep -v "^### 빌드 정보" | \
265275
head -30 | \

app/.DS_Store

-10 KB
Binary file not shown.

app/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ android {
2929
applicationId = "com.eatssu.android"
3030
minSdk = 28
3131
targetSdk = 35
32-
versionCode = 51
32+
versionCode = 52
3333
versionName = "3.2.1"
3434

3535
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"

app/src/.DS_Store

-6 KB
Binary file not shown.

app/src/main/.DS_Store

-6 KB
Binary file not shown.

app/src/main/res/.DS_Store

-6 KB
Binary file not shown.
-6 KB
Binary file not shown.

fastlane/Fastfile

Lines changed: 22 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ GRADLEW = File.join(PROJECT_ROOT, 'gradlew')
1010
LOCAL_PROPS = File.join(PROJECT_ROOT, 'local.properties')
1111
AAB_PATH = File.join(APP_DIR, 'build', 'outputs', 'bundle', 'release', 'app-release.aab')
1212
APK_PATH = File.join(APP_DIR, 'build', 'outputs', 'apk', 'debug', 'app-debug.apk')
13-
RELEASE_NOTES_FILE = File.join(PROJECT_ROOT, 'RELEASE_NOTES.txt')
13+
1414

1515
platform :android do
1616
desc "빌드 환경 설정 (local.properties 생성)"
@@ -337,26 +337,24 @@ platform :android do
337337
File.write(service_account_path, ENV["GOOGLE_PLAY_SERVICE_ACCOUNT_JSON"])
338338
File.chmod(0600, service_account_path)
339339

340-
# 릴리즈 노트 파일 찾기 (프로젝트 루트의 RELEASE_NOTES.txt)
341-
release_notes_path = RELEASE_NOTES_FILE
340+
# 릴리즈 노트 로드 (헬퍼 사용)
341+
release_notes = load_release_notes(version)
342342

343-
unless File.exist?(release_notes_path)
344-
UI.important("⚠️ RELEASE_NOTES.txt 파일을 찾을 수 없습니다.")
345-
UI.important("⚠️ Play Store 릴리즈 노트 없이 배포됩니다.")
346-
release_notes_path = nil
347-
else
348-
release_notes_content = File.read(release_notes_path).strip
349-
if release_notes_content.empty?
350-
UI.error("❌ RELEASE_NOTES.txt 파일이 비어있습니다. Play Store 정책에 따라 배포가 거절될 수 있습니다.")
351-
release_notes_path = nil
352-
elsif release_notes_content.length < 10
353-
UI.error("❌ RELEASE_NOTES.txt 내용이 너무 짧습니다. 최소 10자 이상 필요합니다.")
354-
release_notes_path = nil
355-
else
356-
UI.message("📝 Play Store 릴리즈 노트 파일 발견: #{release_notes_path}")
357-
UI.message("📄 릴리즈 노트 내용:")
358-
UI.message(release_notes_content)
343+
# 메타데이터 임시 디렉토리 생성
344+
require 'tmpdir'
345+
require 'fileutils'
346+
metadata_dir = Dir.mktmpdir("fastlane_metadata")
347+
348+
if release_notes
349+
release_notes.each do |locale, text|
350+
# 디렉토리 생성: metadata/locale/changelogs
351+
changelog_dir = File.join(metadata_dir, locale, "changelogs")
352+
FileUtils.mkdir_p(changelog_dir)
353+
354+
# default.txt 작성
355+
File.write(File.join(changelog_dir, "default.txt"), text)
359356
end
357+
UI.message("📝 메타데이터(릴리즈 노트) 생성 완료: #{metadata_dir}")
360358
end
361359

362360
begin
@@ -366,27 +364,25 @@ platform :android do
366364
json_key: service_account_path,
367365
skip_upload_apk: true,
368366
skip_upload_metadata: true,
367+
# 메타데이터 경로 지정 (릴리즈 노트 포함)
368+
metadata_path: metadata_dir,
369369
skip_upload_images: true,
370370
skip_upload_screenshots: true
371371
}
372372

373-
# 릴리즈 노트 파일이 있으면 추가
374-
if release_notes_path && File.exist?(release_notes_path)
375-
upload_params[:release_notes_file] = release_notes_path
376-
end
377-
378373
upload_to_play_store(upload_params)
379374

380375
UI.success("✅ Play Store #{track} 트랙에 배포 완료")
381-
if release_notes_path
376+
if release_notes
382377
UI.success("✅ Play Store 릴리즈 노트 업데이트 완료")
383378
end
384379
rescue => ex
385380
UI.important("⚠️ Play Store 배포 중 오류 발생: #{ex.message}")
386381
raise
387382
ensure
388-
# 임시 파일 삭제
383+
# 임시 파일 및 디렉토리 삭제
389384
File.delete(service_account_path) if File.exist?(service_account_path)
385+
FileUtils.remove_entry(metadata_dir) if File.exist?(metadata_dir)
390386
end
391387
elsif deploy_to_play_store
392388
UI.important("⚠️ GOOGLE_PLAY_SERVICE_ACCOUNT_JSON이 설정되지 않아 Play Store 배포를 건너뜁니다.")

0 commit comments

Comments
 (0)