# 工作流名称 name: Assemble Ios Release # 触发工作流程的事件 on: push: branches: [ master ] tags: [ v* ] pull_request: branches: [ master ] workflow_dispatch: # 工作流环境变量 env: # 应用的application_id APP_ID: ${{secrets.APP_ID}} APP_NAME: Taro Demo VERSION_NUMBER: 1.0.0 BUILD_NUMBER: 1.0.0.0 BUILD_TYPE: release TEAM_ID: ${{secrets.TEAM_ID}} PROVISIONING_PROFILE_SPECIFIER: ${{secrets.RELEASE_PROVISIONING_PROFILE_SPECIFIER}} CODE_SIGN_IDENTITY: Apple Distribution SIGNING_CERTIFICATE_P12_DATA: ${{secrets.RELEASE_SIGNING_CERTIFICATE_P12_DATA}} SIGNING_CERTIFICATE_PASSWORD: ${{secrets.RELEASE_SIGNING_CERTIFICATE_PASSWORD}} PROVISIONING_PROFILE_DATA: ${{secrets.RELEASE_PROVISIONING_PROFILE_DATA}} APP_STORE_CONNECT_USERNAME: ${{secrets.APP_STORE_CONNECT_USERNAME}} APP_STORE_CONNECT_PASSWORD: ${{secrets.APP_STORE_CONNECT_PASSWORD}} jobs: assemble: runs-on: macos-13 steps: - name: Get current date id: date run: echo "::set-output name=timestamp::$(date +'%s')" - name: Checkout Project uses: actions/checkout@v2 - uses: pnpm/action-setup@v2 with: version: 8 - uses: actions/setup-node@v3 with: node-version: 20 cache: 'pnpm' - run: pnpm install - name: Install pods run: cd ios && pod update --no-repo-update - name: Import signing certificate env: SIGNING_CERTIFICATE_P12_DATA: ${{ env.SIGNING_CERTIFICATE_P12_DATA }} SIGNING_CERTIFICATE_PASSWORD: ${{ env.SIGNING_CERTIFICATE_PASSWORD }} run: | exec .github/scripts/import-certificate.sh - name: Import provisioning profile env: PROVISIONING_PROFILE_DATA: ${{ env.PROVISIONING_PROFILE_DATA }} run: | exec .github/scripts/import-profile.sh - name: Build app env: SKIP_BUNDLING: 1 FL_APP_IDENTIFIER: ${{ env.APP_ID }} FL_UPDATE_PLIST_DISPLAY_NAME: ${{ env.APP_NAME }} FL_UPDATE_PLIST_PATH: taroDemo/Info.plist FL_VERSION_NUMBER_VERSION_NUMBER: ${{ env.VERSION_NUMBER }} FL_BUILD_NUMBER_BUILD_NUMBER: ${{ env.BUILD_NUMBER }}.${{steps.date.outputs.timestamp}} FL_CODE_SIGN_IDENTITY: ${{ env.CODE_SIGN_IDENTITY }} FL_PROVISIONING_PROFILE_SPECIFIER: ${{ env.PROVISIONING_PROFILE_SPECIFIER }} FASTLANE_TEAM_ID: ${{ env.TEAM_ID }} NODE_PATH: ${{ github.workspace }}/node_modules/.pnpm/node_modules:$NODE_PATH run: | cd ios bundle update bundle exec fastlane build_release - name: Upload Ios Products uses: actions/upload-artifact@v2 with: name: app-${{ env.BUILD_TYPE }} path: | ${{ github.workspace }}/ios/taroDemo.ipa ${{ github.workspace }}/ios/taroDemo.app.dSYM.zip - name: Upload app to App Store Connect env: APP_STORE_CONNECT_USERNAME: ${{ env.APP_STORE_CONNECT_USERNAME }} APP_STORE_CONNECT_PASSWORD: ${{ env.APP_STORE_CONNECT_PASSWORD }} run: | cd ios xcrun altool --upload-app -t ios -f "taroDemo.ipa" -u "$APP_STORE_CONNECT_USERNAME" -p "$APP_STORE_CONNECT_PASSWORD" - name: Rename release assets run: | mv ios/taroDemo.ipa ios/app-${{ env.BUILD_TYPE }}.ipa mv ios/taroDemo.app.dSYM.zip ios/app-${{ env.BUILD_TYPE }}.app.dSYM.zip - name: Upload release assets uses: softprops/action-gh-release@v1 if: startsWith(github.ref, 'refs/tags/') with: prerelease: ${{ contains(github.ref, 'beta') }} files: | ios/app-${{ env.BUILD_TYPE }}.ipa ios/app-${{ env.BUILD_TYPE }}.app.dSYM.zip env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}