chore: github actions workflow 개편 #248
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 |