Mobile Build #45
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: Mobile Build | |
| on: | |
| workflow_dispatch: | |
| inputs: | |
| android_version_code: | |
| description: "Android versionCode" | |
| required: false | |
| type: string | |
| ios_build_number: | |
| description: "iOS build number" | |
| required: false | |
| type: string | |
| version_label: | |
| description: "Shared version label" | |
| required: false | |
| type: string | |
| concurrency: mobile-build | |
| jobs: | |
| build-ios: | |
| name: Build iOS | |
| runs-on: self-hosted | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Use Homebrew Ruby | |
| run: echo "/opt/homebrew/opt/ruby/bin" >> $GITHUB_PATH | |
| - name: Install Node dependencies | |
| run: npm install | |
| - name: Install Ruby dependencies | |
| run: | | |
| gem install bundler | |
| bundle install | |
| - name: Install CocoaPods | |
| run: | | |
| cd ios | |
| pod install --repo-update | |
| - name: Allow codesign to access keychain | |
| run: | | |
| security unlock-keychain -p "$KEYCHAIN_PASSWORD" ~/Library/Keychains/login.keychain-db | |
| security set-key-partition-list -S apple-tool:,apple: -s -k "$KEYCHAIN_PASSWORD" ~/Library/Keychains/login.keychain-db | |
| env: | |
| KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }} | |
| - name: Run Fastlane iOS build | |
| env: | |
| IOS_BUILD_NUMBER: ${{ github.event.inputs.ios_build_number }} | |
| VERSION_LABEL: ${{ github.event.inputs.version_label }} | |
| APPSTORE_KEY_ID: ${{ secrets.APPSTORE_KEY_ID }} | |
| APPSTORE_ISSUER_ID: ${{ secrets.APPSTORE_ISSUER_ID }} | |
| APPSTORE_API_KEY_BASE64: ${{ secrets.APPSTORE_API_KEY_BASE64 }} | |
| run: bundle exec fastlane ios ci_ios | |
| - name: Upload IPA artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: yuzic-ios | |
| path: build/ios/*.ipa | |
| build-android: | |
| name: Build Android | |
| runs-on: self-hosted | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Use Homebrew Ruby | |
| run: echo "/opt/homebrew/opt/ruby/bin" >> $GITHUB_PATH | |
| - name: Install Node dependencies | |
| run: npm install | |
| - name: Install Ruby dependencies | |
| run: | | |
| gem install bundler | |
| bundle install | |
| - name: Decode Android keystore | |
| run: | | |
| mkdir -p android/app | |
| echo "${{ secrets.ANDROID_KEYSTORE_BASE64 }}" | base64 --decode > android/app/release.jks | |
| - name: Run Fastlane Android build | |
| env: | |
| ANDROID_VERSION_CODE: ${{ github.event.inputs.android_version_code || github.run_number }} | |
| VERSION_LABEL: ${{ github.event.inputs.version_label }} | |
| ANDROID_KEYSTORE_PATH: release.jks | |
| ANDROID_KEYSTORE_PASSWORD: ${{ secrets.ANDROID_KEYSTORE_PASSWORD }} | |
| ANDROID_KEY_ALIAS: ${{ secrets.ANDROID_KEY_ALIAS }} | |
| ANDROID_KEY_PASSWORD: ${{ secrets.ANDROID_KEY_PASSWORD }} | |
| GOOGLE_PLAY_JSON_KEY: ${{ secrets.GOOGLE_PLAY_JSON_KEY }} | |
| run: bundle exec fastlane android ci_android | |
| - name: Upload Android artifacts | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: yuzic-android | |
| path: | | |
| android/app/build/outputs/**/*.apk | |
| android/app/build/outputs/**/*.aab |