Skip to content

♻️ Refactor: MyPageView 이식 기본 섹션: ProfileCardSection, AuthSection, SettingSection #961

♻️ Refactor: MyPageView 이식 기본 섹션: ProfileCardSection, AuthSection, SettingSection

♻️ Refactor: MyPageView 이식 기본 섹션: ProfileCardSection, AuthSection, SettingSection #961

Workflow file for this run

name: iOS CI
on:
push:
branches: [ "develop" ]
pull_request:
branches: [ "develop" ]
jobs:
build:
name: Build using iOS Simulator
runs-on: macos-26
defaults:
run:
working-directory: AppProduct
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Select Xcode 26.4+
run: |
XCODE_PATH=$(ls -d /Applications/Xcode_26.4*.app 2>/dev/null | sort -V | tail -n 1)
if [ -z "$XCODE_PATH" ]; then
echo "❌ Xcode 26.4+ not found on runner. Available:"
ls -d /Applications/Xcode_*.app 2>/dev/null || true
exit 1
fi
echo "Selecting $XCODE_PATH"
sudo xcode-select -s "$XCODE_PATH/Contents/Developer"
xcodebuild -version
- name: Create Secrets.xcconfig placeholder
run: |
cp AppProduct/Core/Secret/Secrets.xcconfig.template AppProduct/Core/Secret/Secrets.xcconfig
- name: Create GoogleService-Info.plist placeholder
run: |
cat > GoogleService-Info.plist << 'PLIST'
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>API_KEY</key>
<string>placeholder</string>
<key>GCM_SENDER_ID</key>
<string>000000000000</string>
<key>PLIST_VERSION</key>
<string>1</string>
<key>BUNDLE_ID</key>
<string>com.umc.product</string>
<key>PROJECT_ID</key>
<string>placeholder</string>
<key>STORAGE_BUCKET</key>
<string>placeholder.appspot.com</string>
<key>IS_ADS_ENABLED</key>
<false/>
<key>IS_ANALYTICS_ENABLED</key>
<false/>
<key>IS_APPINVITE_ENABLED</key>
<true/>
<key>IS_GCM_ENABLED</key>
<true/>
<key>IS_SIGNIN_ENABLED</key>
<true/>
<key>GOOGLE_APP_ID</key>
<string>1:000000000000:ios:0000000000000000</string>
</dict>
</plist>
PLIST
- name: Set Default Scheme
run: |
scheme_list=$(xcodebuild -list -json | tr -d "\n")
default=$(echo $scheme_list | ruby -e "require 'json'; puts JSON.parse(STDIN.gets)['project']['targets'][0]")
echo $default | cat >default
echo Using default scheme: $default
- name: Build
env:
scheme: ${{ 'default' }}
platform: ${{ 'iOS Simulator' }}
run: |
device="iPhone 17 Pro"
if [ $scheme = default ]; then scheme=$(cat default); fi
if [ "`ls -A | grep -i \\.xcworkspace`" ]; then filetype_parameter="workspace" && file_to_build="`ls -A | grep -i \\.xcworkspace`"; else filetype_parameter="project" && file_to_build="`ls -A | grep -i \\.xcodeproj`"; fi
file_to_build=`echo $file_to_build | awk '{$1=$1;print}'`
xcodebuild build -scheme "$scheme" -"$filetype_parameter" "$file_to_build" -destination "platform=$platform,name=$device"
notify:
name: Notify Discord
needs: build
if: ${{ always() }}
runs-on: ubuntu-latest
env:
DISCORD_WEBHOOK_URL: ${{ secrets.DISCORD_WEBHOOK_URL }}
DISCORD_MENTION_ROLE_ID: ${{ secrets.DISCORD_MENTION_ROLE_ID }}
BUILD_RESULT: ${{ needs.build.result }}
REPOSITORY: ${{ github.repository }}
REF_NAME: ${{ github.ref_name }}
ACTOR: ${{ github.actor }}
COMMIT_SHA: ${{ github.sha }}
WORKFLOW_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
PR_URL: ${{ github.event.pull_request.html_url }}
steps:
- name: Send build result to Discord
run: |
if [ -z "${DISCORD_WEBHOOK_URL:-}" ]; then
echo "DISCORD_WEBHOOK_URL is not configured. Skipping Discord notification."
exit 0
fi
python3 - << 'PY' > payload.json
import json
import os
build_result = os.environ["BUILD_RESULT"]
short_sha = os.environ["COMMIT_SHA"][:7]
pr_url = os.environ.get("PR_URL") or "N/A"
mention_role_id = os.environ.get("DISCORD_MENTION_ROLE_ID", "").strip()
if build_result == "success":
status_text = "SUCCESS ✅"
color = 5763719 # green
mention = ""
else:
status_text = "FAILED ❌"
color = 15548997 # red
mention = f"<@&{mention_role_id}>" if mention_role_id else "@here"
payload = {
"content": mention,
"embeds": [
{
"title": "iOS CI Build Result",
"url": os.environ["WORKFLOW_URL"],
"color": color,
"fields": [
{"name": "Build Status", "value": status_text, "inline": True},
{"name": "Branch", "value": os.environ["REF_NAME"], "inline": True},
{"name": "Commit", "value": f"`{short_sha}` by {os.environ['ACTOR']}", "inline": True},
{"name": "PR", "value": pr_url, "inline": False},
],
"footer": {"text": os.environ["REPOSITORY"]},
}
],
}
print(json.dumps(payload))
PY
curl -sS -X POST "$DISCORD_WEBHOOK_URL" \
-H "Content-Type: application/json" \
--data @payload.json