Skip to content

Setting/#485 Github Action와 Fastlane을 통한 자동 배포 - #486

Merged
y-eonee merged 4 commits into
developfrom
setting/#485-자동배포
Aug 9, 2026

Hidden character warning

The head ref may contain hidden characters: "setting/#485-\uc790\ub3d9\ubc30\ud3ec"
Merged

Setting/#485 Github Action와 Fastlane을 통한 자동 배포 #486
y-eonee merged 4 commits into
developfrom
setting/#485-자동배포

Conversation

@y-eonee

@y-eonee y-eonee commented Aug 9, 2026

Copy link
Copy Markdown
Member

🔗 연결된 이슈

📄 작업 내용

  • Github Action와 Fastlane을 통한 자동 배포를 설정했습니다.
  • Github Action에 관련 시크릿 key를 추가하였습니다.
  • develop PR이 머지되면 TestFlight로, main PR이 머지되면 앱스토어 배포로 되도록 하였습니다.
  • 배포가 끝나면 디스코드 웹훅으로 알림이 오도록 설정했습니다.

📚 참고자료

참고 링크

Summary by CodeRabbit

  • 새 기능

    • TestFlight 배포를 위한 자동화된 빌드 및 업로드 과정이 추가되었습니다.
    • App Store 제출 및 자동 출시를 지원합니다.
    • 배포 성공·실패 상태를 Discord 알림으로 확인할 수 있습니다.
  • 개선 사항

    • 브랜치별로 테스트 배포와 정식 출시 절차가 자동 실행됩니다.
    • 빌드 번호가 TestFlight 업로드 과정에서 자동으로 관리됩니다.

@y-eonee y-eonee self-assigned this Aug 9, 2026
@y-eonee y-eonee added the setting 프로젝트 관련 설정 변경 label Aug 9, 2026
@y-eonee y-eonee linked an issue Aug 9, 2026 that may be closed by this pull request
1 task
@coderabbitai

coderabbitai Bot commented Aug 9, 2026

Copy link
Copy Markdown

Review Change Stack

Walkthrough

GitHub Actions가 maindevelop 병합 시 macOS에서 Fastlane을 실행하도록 추가되었습니다. upload_testflight를 변경하고 release_app_store를 추가했습니다. Fastfile에는 서명 준비, 빌드 번호 계산, Discord 알림 헬퍼가 추가되었습니다.

Changes

Fastlane 자동 배포

Layer / File(s) Summary
Fastlane 헬퍼와 배포 준비
ByeBoo-iOS/fastlane/Fastfile
Xcode 프로젝트와 스킴 상수를 추가했습니다. CI 및 서명 준비, TestFlight 최신 빌드 번호 계산, Discord 성공·실패 알림 헬퍼를 추가했습니다.
TestFlight 및 App Store 배포 레인
ByeBoo-iOS/fastlane/Fastfile
upload_testflight가 빌드 번호를 계산하고 앱을 업로드하도록 변경되었습니다. release_app_store가 앱 빌드, 심사 제출, 자동 출시를 수행하도록 추가되었습니다. upload_testflight에는 정의되지 않은 iprepare_ci_and_signing 호출과 성공 알림 인자 수 불일치가 있습니다.
브랜치별 GitHub Actions 연결
.github/workflows/fastlane_ci.yml
Ruby와 Bundler를 설정한 뒤 develop 병합에는 upload_testflight, main 병합에는 release_app_store를 필요한 시크릿과 함께 실행합니다.

Estimated code review effort: 4 (Complex) | ~45 minutes

Sequence Diagram(s)

sequenceDiagram
  participant GitHub as GitHub Actions
  participant Fastlane
  participant TestFlight
  participant AppStore as App Store Connect
  participant Discord

  GitHub->>Fastlane: develop 병합 시 upload_testflight 실행
  Fastlane->>TestFlight: 빌드 번호 조회 및 앱 업로드
  Fastlane->>Discord: 결과 알림 전송

  GitHub->>Fastlane: main 병합 시 release_app_store 실행
  Fastlane->>AppStore: 앱 제출 및 자동 출시
  Fastlane->>Discord: 결과 알림 전송
Loading

Possibly related issues

  • 36-APPJAM-HEARTZ/BYEBOO-iOS#485: GitHub Actions와 Fastlane을 사용한 자동 배포를 구현하는 변경으로, 해당 이슈의 목적과 일치합니다.

Suggested reviewers: juri123123, dev-domo

Poem

당근을 문 토끼가 배포를 달려요
develop은 TestFlight로 폴짝
main은 App Store로 깡충
Fastlane이 빌드 번호를 세고
Discord에 소식을 전해요
삐약, 자동 출시 완료!

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed GitHub Actions와 Fastlane을 통한 iOS 자동 배포라는 변경 내용을 명확하게 요약합니다.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch setting/#485-자동배포

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@y-eonee
y-eonee merged commit f5d8be9 into develop Aug 9, 2026
1 of 2 checks passed
@y-eonee
y-eonee deleted the setting/#485-자동배포 branch August 9, 2026 15:03

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 8

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.github/workflows/fastlane_ci.yml:
- Around line 10-14: Serialize the fastlane deployment job by adding a shared
GitHub Actions concurrency group for the TestFlight and App Store lanes, and
explicitly configure the pending-run cancellation policy so queued deployments
are not unintentionally discarded. Anchor the group to the deployment workflow
or shared environment rather than the individual PR, ensuring merged PR
deployments receive unique build numbers.
- Around line 30-34: Update the “Install dependencies” and “Output Fastlane
environment” steps in the workflow to set working-directory to ByeBoo-iOS, so
both bundle commands execute from the directory containing the Gemfile and
Fastfile.
- Line 18: Update the checkout action version in the workflow from
actions/checkout@v3 to actions/checkout@v4 or a newer supported release, leaving
the surrounding workflow configuration unchanged.

In `@ByeBoo-iOS/fastlane/Fastfile`:
- Around line 114-117: Update the release_app_store flow to call
notify_discord_success immediately after upload_to_app_store completes
successfully, using a message that clearly indicates App Store review submission
succeeded rather than release completion. Preserve the existing
notify_discord_failure handling for errors.
- Line 80: Update the notify_discord_success call in the TestFlight upload
success path to pass only the single argument accepted by
notify_discord_success, while preserving the existing success message behavior
and avoiding the rescue failure-notification path.
- Line 63: Update the deployment lane call from the undefined
`iprepare_ci_and_signing` helper to the correctly defined CI and signing
preparation helper, preserving the existing TestFlight deployment flow.
- Around line 103-114: upload_to_app_store 호출의 인자 목록과 submission_information 블록을
닫는 괄호를 추가한 뒤 rescue 절이 메서드 호출 바깥에서 파싱되도록 정렬을 수정하십시오. upload_to_app_store의 기존 옵션과
rescue 처리 흐름은 그대로 유지하십시오.
- Around line 34-39: Update notify_discord_failure so the Discord payload is
built with a JSON serializer rather than interpolated JSON, preserving the lane
name and sanitized error message content. Invoke curl through Fastlane sh with
separate arguments instead of constructing one shell command string, ensuring
shell metacharacters and quotes in both payload data and the Discord URL are not
interpreted by the shell.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: b0ef0ba8-ee3c-47ac-9f3a-c1d5dbc7bd5a

📥 Commits

Reviewing files that changed from the base of the PR and between 301ea78 and 8e1c26c.

📒 Files selected for processing (2)
  • .github/workflows/fastlane_ci.yml
  • ByeBoo-iOS/fastlane/Fastfile

Comment on lines +10 to +14
jobs:
fastlane:
name: Run Fastlane
runs-on: macos-latest
if: github.event.pull_request.merged == true

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🩺 Stability & Availability | 🟠 Major | 🏗️ Heavy lift

배포 작업을 직렬화하거나 빌드 번호를 원자적으로 할당하십시오.

동시에 두 PR이 병합되면 두 작업이 latest_testflight_build_number를 같은 값으로 읽을 수 있습니다. 두 작업은 같은 다음 빌드 번호를 업로드하려고 시도합니다. 한 작업은 중복 빌드 번호 때문에 실패합니다.

TestFlight와 App Store 레인 전체에 공유되는 배포 조정 방식을 추가하십시오. GitHub Actions concurrency를 사용할 경우, 대기 중인 배포가 취소될 수 있는 정책도 명시적으로 처리하십시오.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/fastlane_ci.yml around lines 10 - 14, Serialize the
fastlane deployment job by adding a shared GitHub Actions concurrency group for
the TestFlight and App Store lanes, and explicitly configure the pending-run
cancellation policy so queued deployments are not unintentionally discarded.
Anchor the group to the deployment workflow or shared environment rather than
the individual PR, ensuring merged PR deployments receive unique build numbers.


steps:
- name: Checkout repository
uses: actions/checkout@v3

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🩺 Stability & Availability | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

# v3 액션 런타임을 확인합니다.
curl -fsSL https://raw.githubusercontent.com/actions/checkout/v3/action.yml |
  rg -n 'using:|node'

Repository: 36-APPJAM-HEARTZ/BYEBOO-iOS

Length of output: 185


🌐 Web query:

GitHub Actions Node 16 runner deprecation actions/checkout v3 node16

💡 Result:

GitHub Actions support for Node 16 reached its end-of-life (EOL) and has been fully removed from the Actions runner environment [1]. The deprecation timeline and key points are as follows: 1. End of Life Date: Node 16 was officially removed from the GitHub Actions runner environment on November 12, 2024 [1]. 2. Context for actions/checkout: While actions/checkout@v3 was originally built to run on Node 16, it is now obsolete [2][3]. Because Node 16 is no longer supported, workflows continuing to use actions/checkout@v3 or any other action requiring Node 16 will fail on GitHub-hosted runners [1]. 3. Recommended Action: You should update all workflows to use the latest versions of actions (e.g., actions/checkout@v4), which are designed to run on Node 20 or newer [1][4]. If you are currently experiencing issues with workflows running on older versions, it is because the necessary runtime (Node 16) is no longer available in the environment [1][5]. Setting environment variables like ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true, which were used during the transition period to temporarily extend Node 16 usage, are no longer effective because the Node 16 binaries have been removed from the runners entirely [1][6][7].

Citations:


actions/checkout@v4 이상으로 업데이트하십시오.

actions/checkout@v3node16 런타임에 의존하므로 현재 GitHub Actions runner에서 실행에 실패합니다. 안정성 이슈를 방지하려면 actions/checkout@v4 이상을 사용하십시오.

🧰 Tools
🪛 actionlint (1.7.12)

[error] 18-18: the runner of "actions/checkout@v3" action is too old to run on GitHub Actions. update the action's version to fix this issue

(action)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/fastlane_ci.yml at line 18, Update the checkout action
version in the workflow from actions/checkout@v3 to actions/checkout@v4 or a
newer supported release, leaving the surrounding workflow configuration
unchanged.

Source: Linters/SAST tools

Comment on lines +30 to +34
- name: Install dependencies
run: bundle install

- name: Output Fastlane environment
run: bundle exec fastlane env

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🩺 Stability & Availability | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

# Fastlane과 Bundler 설정 파일의 실제 위치를 확인합니다.
fd -H -t f '^(Gemfile|Fastfile)$' .

Repository: 36-APPJAM-HEARTZ/BYEBOO-iOS

Length of output: 217


🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf 'Workflow file:\n'
sed -n '1,140p' .github/workflows/fastlane_ci.yml

printf '\nRoot listing relevant entries:\n'
git ls-files | sed -n '1,200p' | grep -E '(^|/)(Gemfile|Fastfile|\.fastlane|bundle|fastlane|README|\.github/workflows/fastlane_ci.yml)$' || true

Repository: 36-APPJAM-HEARTZ/BYEBOO-iOS

Length of output: 2556


.github/workflows/fastlane_ci.yml의 Fastlane 명령에 working-directory: ByeBoo-iOS를 추가하세요.

저장소 루트에는 Gemfile이나 Fastfile이 없습니다. 현재 bundle installbundle exec fastlane ... 명령이 루트에서 실행되므로 실행 단계에서 실패합니다.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/fastlane_ci.yml around lines 30 - 34, Update the “Install
dependencies” and “Output Fastlane environment” steps in the workflow to set
working-directory to ByeBoo-iOS, so both bundle commands execute from the
directory containing the Gemfile and Fastfile.

Comment on lines +34 to +39
def notify_discord_failure(lane_name, error_message)
sh(
"curl -H 'Content-Type: application/json' " +
"-d '{\"content\": \"🤔🌀 **#{lane_name}** 실패\\n```#{error_message.to_s.gsub('"', "'").gsub("\n", " ")}```\"}' " +
"#{ENV['DISCORD_URL']}"
)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🔒 Security & Privacy | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== file excerpt =="
sed -n '1,120p' ByeBoo-iOS/fastlane/Fastfile

echo
echo "== relevant notify_discord_* usages =="
rg -n "notify_discord|DISCORD_URL|upload_testflight|release_app_store" ByeBoo-iOS/fastlane/Fastfile

echo
echo "== fastlane/Gemfile versions =="
for f in ByeBoo-iOS/Gemfile ByeBoo-iOS/fastlane/Gemfile Gemfile ByeBoo-iOS/fastlane/Gemfile; do
  if [ -f "$f" ]; then
    echo "--- $f"
    rg -n "fastlane|ruby" "$f" || true
  fi
done

echo
echo "== local shell command construction behavior probe =="
python3 - <<'PY'
import shlex
msg = "abc' && curl -e \"injected\" # comment"
cmd = "curl -H 'Content-Type: application/json' -d '{\"content\": \"🤔🌀 **lane_name** 실패\\n```" + msg + "```\"}' DISCORD_URL"
print("constructed:")
print(cmd)
print("parsed by shlex:")
try:
    for i, token in enumerate(shlex.split(cmd, posix=True), 1):
        print(f"{i}: {token!r}")
except Exception as e:
    print(f"shlex error: {type(e).__name__}: {e}")
PY

Repository: 36-APPJAM-HEARTZ/BYEBOO-iOS

Length of output: 3967


🌐 Web query:

Ruby Fastlane sh command string interpolation shell injection safe passing arguments

💡 Result:

To securely pass arguments to the Fastlane sh action and avoid command injection vulnerabilities, you should always pass arguments as separate array elements rather than constructing a single shell-interpolated string [1][2][3]. When you provide multiple arguments (e.g., sh('git', 'log', '-2', "--grep='DEV'")), Fastlane passes these arguments directly to Ruby's Open3.popen2e (or similar system call methods like Kernel#spawn), bypassing the shell interpreter entirely [2][4][5]. This ensures that special characters in your arguments are treated as literal data rather than shell metacharacters [2]. ### Recommended Approach Avoid shell interpolation entirely: # Insecure (vulnerable to injection) sh("git --grep='#{user_input}'") # Secure (arguments passed as separate elements) sh('git', 'log', '-2', "--grep=#{user_input}") By using the second approach, sh does not invoke a shell interpreter to parse the string, effectively preventing malicious users from injecting arbitrary shell commands [2][5]. ### Key Takeaways 1. Separate Arguments: Always pass arguments as a list to sh (e.g., sh('command', 'arg1', 'arg2')) instead of a single string [3][4]. 2. Avoid Shell Interpolation: If you must use a single string, you are responsible for manually escaping input using Ruby's Shellwords.shellescape method, but this is significantly more error-prone than simply using the variadic argument list [3]. 3. Logging: Be aware that sh will log the command it executes. If you are passing sensitive information (like passwords) as arguments, consider using environment variables to avoid leaking sensitive data in your logs [6]. 4. Internal Implementation: Internally, Fastlane uses the passed arguments to execute the process directly. While Fastlane's shell_command_from_args helper attempts to reconstruct a command string for logging purposes, the actual execution path (via Open3.popen2e) is what provides the security against injection [4][5].

Citations:


oler_?

?

오류 메시지를 쉘 명령어에서 안전한 인수로 전달하십시오.

notify_discord_failureerror_message를 쉘 문자열에 보간합니다. '가 포함된 메시지는 명령어를 깨뜨리고, 쉘 특수 문자가 들어갈 수 있으니 제어가 필요합니다. JSON을 안전하게 직렬화하고, Fastlane sh('curl', ...)처럼 인자 배열으로 전달해 쉘 해석을 피하십시오.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@ByeBoo-iOS/fastlane/Fastfile` around lines 34 - 39, Update
notify_discord_failure so the Discord payload is built with a JSON serializer
rather than interpolated JSON, preserving the lane name and sanitized error
message content. Invoke curl through Fastlane sh with separate arguments instead
of constructing one shell command string, ensuring shell metacharacters and
quotes in both payload data and the Discord URL are not interpreted by the
shell.

)
upload_to_testflight
begin
iprepare_ci_and_signing

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🔴 Critical | ⚡ Quick win

정의된 헬퍼 이름을 호출하십시오.

iprepare_ci_and_signing은 정의되지 않았습니다. 이 호출은 NoMethodError를 발생시키고 TestFlight 배포를 시작하지 못하게 합니다.

수정 예시
-      iprepare_ci_and_signing
+      prepare_ci_and_signing
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
iprepare_ci_and_signing
prepare_ci_and_signing
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@ByeBoo-iOS/fastlane/Fastfile` at line 63, Update the deployment lane call
from the undefined `iprepare_ci_and_signing` helper to the correctly defined CI
and signing preparation helper, preserving the existing TestFlight deployment
flow.

skip_waiting_for_build_processing: true
)

notify_discord_success("TestFlight 업로드", build_number)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

성공 알림 헬퍼의 인수 개수를 맞추십시오.

notify_discord_success는 Line 26에서 인수 하나만 받습니다. 이 호출은 업로드 성공 후 ArgumentError를 발생시키고 rescue 경로에서 실패 알림을 전송합니다.

수정 예시
-      notify_discord_success("TestFlight 업로드", build_number)
+      notify_discord_success("TestFlight 업로드")
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
notify_discord_success("TestFlight 업로드", build_number)
notify_discord_success("TestFlight 업로드")
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@ByeBoo-iOS/fastlane/Fastfile` at line 80, Update the notify_discord_success
call in the TestFlight upload success path to pass only the single argument
accepted by notify_discord_success, while preserving the existing success
message behavior and avoiding the rescue failure-notification path.

Comment on lines +103 to +114
upload_to_app_store(
skip_screenshots: true,
skip_metadata: true,
force: true,
submit_for_review: true, # 자동으로 심사 제출
automatic_release: true, # 심사 통과 후 자동 출시
precheck_include_in_app_purchases: false,
submission_information: {
add_id_info_uses_idfa: false, # admob 추가 시 true로 변경
export_compliance_uses_encryption: false
}
rescue => e

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🩺 Stability & Availability | 🔴 Critical | ⚡ Quick win

upload_to_app_store 호출을 닫으십시오.

Line 103의 upload_to_app_store(에 대응하는 )가 없습니다. Ruby 파서는 Line 114의 rescue에서 중단됩니다. 이 Fastfile은 두 배포 레인을 모두 실행할 수 없습니다.

수정 예시
         submission_information: {
           add_id_info_uses_idfa: false,
           export_compliance_uses_encryption: false
         }
+      )
     rescue => e
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
upload_to_app_store(
skip_screenshots: true,
skip_metadata: true,
force: true,
submit_for_review: true, # 자동으로 심사 제출
automatic_release: true, # 심사 통과 후 자동 출시
precheck_include_in_app_purchases: false,
submission_information: {
add_id_info_uses_idfa: false, # admob 추가 시 true로 변경
export_compliance_uses_encryption: false
}
rescue => e
upload_to_app_store(
skip_screenshots: true,
skip_metadata: true,
force: true,
submit_for_review: true, # 자동으로 심사 제출
automatic_release: true, # 심사 통과 후 자동 출시
precheck_include_in_app_purchases: false,
submission_information: {
add_id_info_uses_idfa: false, # admob 추가 시 true로 변경
export_compliance_uses_encryption: false
}
)
rescue => e
🧰 Tools
🪛 RuboCop (1.88.2)

[fatal] 114-114: unexpected token kRESCUE
(Using Ruby 2.7 parser; configure using TargetRubyVersion parameter, under AllCops)

(Lint/Syntax)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@ByeBoo-iOS/fastlane/Fastfile` around lines 103 - 114, upload_to_app_store 호출의
인자 목록과 submission_information 블록을 닫는 괄호를 추가한 뒤 rescue 절이 메서드 호출 바깥에서 파싱되도록 정렬을
수정하십시오. upload_to_app_store의 기존 옵션과 rescue 처리 흐름은 그대로 유지하십시오.

Source: Linters/SAST tools

Comment on lines +114 to +117
rescue => e
notify_discord_failure("App Store 배포", e.message)
raise e
end

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

App Store 제출 성공 알림을 추가하십시오.

release_app_store는 실패 알림만 전송합니다. upload_to_app_store가 성공한 뒤 notify_discord_success를 호출하십시오. 알림 메시지는 실제 출시 완료가 아니라 심사 제출 성공임을 표시해야 합니다.

🧰 Tools
🪛 RuboCop (1.88.2)

[fatal] 114-114: unexpected token kRESCUE
(Using Ruby 2.7 parser; configure using TargetRubyVersion parameter, under AllCops)

(Lint/Syntax)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@ByeBoo-iOS/fastlane/Fastfile` around lines 114 - 117, Update the
release_app_store flow to call notify_discord_success immediately after
upload_to_app_store completes successfully, using a message that clearly
indicates App Store review submission succeeded rather than release completion.
Preserve the existing notify_discord_failure handling for errors.

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

Labels

setting 프로젝트 관련 설정 변경 나연🐹

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Setting] Github Action 자동 배포

1 participant