Skip to content

[#225] 테스트플라이트 자동 배포가 실패하는 현상을 해결한다#234

Merged
opficdev merged 15 commits intodevelopfrom
fix/#225-fastlane
Mar 10, 2026
Merged

[#225] 테스트플라이트 자동 배포가 실패하는 현상을 해결한다#234
opficdev merged 15 commits intodevelopfrom
fix/#225-fastlane

Conversation

@opficdev
Copy link
Owner

@opficdev opficdev self-assigned this Mar 10, 2026
@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

이 Pull Request는 TestFlight 자동 배포 실패 문제를 해결하기 위해 Fastlane 설정을 개선합니다. 빌드 번호 관리 로직을 강화하고, CI 환경에서의 코드 서명 안정성을 높이며, Xcode 빌드 프로세스를 최적화하여 배포의 신뢰성을 향상시키는 데 중점을 둡니다.

Highlights

  • 테스트플라이트 빌드 번호 관리 개선: 최신 TestFlight 빌드 번호를 가져와 다음 빌드 번호를 결정하는 fetch_latest_testflight_build_number 프라이빗 레인을 추가하고, 이를 사용하여 빌드 번호 증가 로직을 업데이트했습니다.
  • CI 환경 코드 서명 안정성 강화: CI 환경에서 development 매치 타입을 추가하고, 명시적인 코드 서명 설정을 업데이트하여 프로비저닝 프로파일 문제를 해결했습니다.
  • Fastlane 환경 변수 설정 추가: FASTLANE_XCODEBUILD_SETTINGS_TIMEOUTFASTLANE_XCODEBUILD_SETTINGS_RETRIES 환경 변수를 설정하여 Xcode 빌드 안정성을 높였습니다.
  • Fastlane 레인 이름 변경 및 추가: 기존 beta 레인을 deploy_testflight로 이름을 변경하고, 빌드만 수행하는 testflight_build_only 레인을 새로 추가했습니다.
  • Xcode 빌드 옵션 추가: build_app 액션에 -skipPackagePluginValidation xcargs를 추가하여 빌드 오류 가능성을 줄였습니다.
  • .gitignore 업데이트: fastlane/README.md 파일을 .gitignore에 추가하여 불필요한 파일이 버전 관리되지 않도록 했습니다.
Changelog
  • .gitignore
    • fastlane/README.md 파일을 무시 목록에 추가했습니다.
  • fastlane/Fastfile
    • XCODE_PROJ, APP_IDENTIFIER, TARGET_NAME 상수를 정의했습니다.
    • 최신 TestFlight 빌드 번호를 가져오는 fetch_latest_testflight_build_number 프라이빗 레인을 구현했습니다.
    • build_for_store 레인에서 빌드 번호 증가 로직을 fetch_latest_testflight_build_number를 사용하도록 수정했습니다.
    • FASTLANE_XCODEBUILD_SETTINGS_TIMEOUTFASTLANE_XCODEBUILD_SETTINGS_RETRIES 환경 변수 설정을 추가했습니다.
    • development 타입의 매치 프로비저닝 프로파일을 추가했습니다.
    • CI 환경에서 명시적으로 코드 서명 설정을 업데이트하는 로직을 추가했습니다.
    • build_app 액션에 xcargs: "-skipPackagePluginValidation" 옵션을 추가했습니다.
    • beta 레인의 이름을 deploy_testflight로 변경했습니다.
    • 빌드만 수행하는 testflight_build_only 레인을 새로 추가했습니다.
Ignored Files
  • Ignored by pattern: .github/workflows/** (3)
    • .github/workflows/build.yml
    • .github/workflows/release.yml
    • .github/workflows/testflight.yml
Activity
  • 현재까지 이 Pull Request에 대한 추가적인 코멘트나 리뷰 활동은 없습니다.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

@opficdev opficdev merged commit 86906e9 into develop Mar 10, 2026
1 check failed
@opficdev opficdev deleted the fix/#225-fastlane branch March 10, 2026 01:23
Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

이 PR은 GITHUB_RUN_NUMBER를 사용하는 대신 TestFlight의 최신 빌드를 기반으로 다음 빌드 번호를 정확하게 계산하여 TestFlight 자동 배포 실패 문제를 해결합니다. 이는 CI/CD 파이프라인의 안정성을 크게 향상시키는 중요한 개선입니다. 변경 사항에는 빌드 번호를 가져오는 새로운 private lane이 도입되었고, 이를 사용하도록 메인 빌드 lane이 업데이트되었습니다. 코드는 잘 구조화되어 있습니다. Fastfile을 더 효율적이고 깔끔하게 만들기 위한 몇 가지 제안 사항이 있습니다.

Comment on lines +13 to +18
Spaceship::ConnectAPI.token = Spaceship::ConnectAPI::Token.create(
key_id: ENV["ASC_KEY_ID"],
issuer_id: ENV["ASC_ISSUER_ID"],
key: File.binread(ENV["ASC_KEY_PATH"]),
in_house: false
)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

build_for_store lane에서 이 lane을 호출하기 전에 이미 asc_api_key lane을 통해 App Store Connect API 토큰이 설정됩니다. 따라서 여기서 토큰을 다시 생성하는 것은 중복입니다. 이 코드 블록을 제거하여 중복을 피하고 asc_api_key lane을 통해 인증을 일관되게 관리하는 것이 좋습니다.


platform :ios do
private_lane :fetch_latest_testflight_build_number do |options|
require "spaceship"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

성능 향상을 위해 require "spaceship" 구문을 파일 최상단으로 옮기는 것이 좋습니다. require는 lane 내부에서 호출될 때마다 실행되지만, 파일 상단에 있으면 Fastfile 로드 시 한 번만 실행됩니다. 이 줄을 삭제하고 파일 상단(예: 4번째 줄 다음)에 추가해주세요.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant