Skip to content

chore: github actions workflow 개편 #248

chore: github actions workflow 개편

chore: github actions workflow 개편 #248

Workflow file for this run

name: Fastlane CI
on:
pull_request:
jobs:
build:
runs-on: macos-15
env:
MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }}
KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }}
DEV_TEAM_ID: ${{ secrets.DEV_TEAM_ID }}
DEV_CODE_SIGN_IDENTITY: ${{ secrets.DEV_TEAM_SIGN_IDENTITY }}
APP_IDENTIFIER: ${{ secrets.APP_IDENTIFIER }}
APPLE_ID: ${{ secrets.APPLE_ID }}
DISCORD_WEBHOOK_URL: ${{ secrets.DISCORD_WEBHOOK_URL }}
MATCH_KEYCHAIN_NAME: "ci.keychain-db"
MATCH_REPO_URL: ${{ secrets.MATCH_REPO_URL }}
APP_STORE_CONNECT_API_KEY: ${{ secrets.APP_STORE_CONNECT_API_KEY }}
APP_STORE_CONNECT_API_KEY_ID: ${{ secrets.APP_STORE_CONNECT_API_KEY_ID }}
APP_STORE_CONNECT_ISSUER_ID: ${{ secrets.APP_STORE_CONNECT_ISSUER_ID }}
APP_STORE_CONNECT_API_KEY_PATH: ${{ secrets.APP_STORE_CONNECT_API_KEY_PATH }}
steps:
- name: 🔄 Checkout source code
uses: actions/checkout@v4
- name: 📝 Generate .env.ci from env
working-directory: src/fastlane
run: |
{
echo "MATCH_PASSWORD=$MATCH_PASSWORD"
echo "KEYCHAIN_PASSWORD=$KEYCHAIN_PASSWORD"
echo "DEV_TEAM_ID=$DEV_TEAM_ID"
echo "DEV_CODE_SIGN_IDENTITY=$DEV_CODE_SIGN_IDENTITY"
echo "APP_IDENTIFIER=$APP_IDENTIFIER"
echo "APPLE_ID=$APPLE_ID"
echo "DISCORD_WEBHOOK_URL=$DISCORD_WEBHOOK_URL"
echo "MATCH_KEYCHAIN_NAME=$MATCH_KEYCHAIN_NAME"
echo "MATCH_REPO_URL=$MATCH_REPO_URL"
echo "APP_STORE_CONNECT_API_KEY_ID=$APP_STORE_CONNECT_API_KEY_ID"
echo "APP_STORE_CONNECT_ISSUER_ID=$APP_STORE_CONNECT_ISSUER_ID"
echo "APP_STORE_CONNECT_API_KEY_PATH=$APP_STORE_CONNECT_API_KEY_PATH"
} > .env.ci
- name: 📱 Select Xcode
run: sudo xcode-select -s /Applications/Xcode_16.4.app
- name: 💫 Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: '3.3.0'
bundler-cache: false
- name: 📦 Install dependencies
working-directory: src
run: bundle install
- name: 🛠 Install Tuist (manual binary)
run: |
TUIST_VERSION=4.31.0
mkdir -p ~/.tuist-bin
curl -L "https://github.com/tuist/tuist/releases/download/${TUIST_VERSION}/tuist.zip" -o tuist.zip
unzip -o tuist.zip -d ~/.tuist-bin
chmod +x ~/.tuist-bin/tuist
echo "$HOME/.tuist-bin" >> $GITHUB_PATH
- name: 🛠 Install external dependencies
working-directory: src
run: tuist install
- name: 🔐 Create temporary keychain
run: |
security create-keychain -p "$KEYCHAIN_PASSWORD" $MATCH_KEYCHAIN_NAME
security default-keychain -s $MATCH_KEYCHAIN_NAME
security unlock-keychain -p "$KEYCHAIN_PASSWORD" $MATCH_KEYCHAIN_NAME
security set-keychain-settings -t 3600 -u $MATCH_KEYCHAIN_NAME
- name: 🔐 Decode API Key
working-directory: src/fastlane
run: |
echo "$APP_STORE_CONNECT_API_KEY" | base64 -d > AuthKey.p8
shell: bash
- name: 🧱 Initialize Tuist module structure
working-directory: src/SupportingFiles/Scripts
run: |
chmod +x tuist_module_init.sh
./tuist_module_init.sh
- name: Write GoogleService-Info.plist (repo root)
working-directory: src/SupportingFiles/Booket
run: |
echo "$GOOGLESERVICE_INFO_PLIST_B64" | base64 -D > GoogleService-Info.plist
env:
GOOGLESERVICE_INFO_PLIST_B64: ${{ secrets.GOOGLESERVICE_INFO_PLIST_B64 }}
- name: 🧪 Run PR Checks (build + test)
working-directory: src/fastlane
run: bundle exec fastlane ci_pr --env ci
- name: 🧹 Teardown()
if: always()
run: |
security delete-keychain $MATCH_KEYCHAIN_NAME || true
rm -f src/fastlane/AuthKey
rm -f src/SupportingFiles/Booket/GoogleService-Info.plist || true