assemble_ios_release.yml 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. # 工作流名称
  2. name: Assemble Ios Release
  3. # 触发工作流程的事件
  4. on:
  5. push:
  6. branches: [ master ]
  7. tags: [ v* ]
  8. pull_request:
  9. branches: [ master ]
  10. workflow_dispatch:
  11. # 工作流环境变量
  12. env:
  13. # 应用的application_id
  14. APP_ID: com.taro.demo
  15. APP_NAME: Taro Demo
  16. VERSION_NUMBER: 1.0.0
  17. BUILD_NUMBER: 1.0.0.0
  18. BUILD_TYPE: release
  19. TEAM_ID: XXXXXXXXXX
  20. PROVISIONING_PROFILE_SPECIFIER: Product_profile
  21. CODE_SIGN_IDENTITY: iPhone Distribution
  22. SIGNING_CERTIFICATE_P12_DATA: ${{secrets.RELEASE_SIGNING_CERTIFICATE_P12_DATA}}
  23. SIGNING_CERTIFICATE_PASSWORD: ${{secrets.RELEASE_SIGNING_CERTIFICATE_PASSWORD}}
  24. PROVISIONING_PROFILE_DATA: ${{secrets.RELEASE_PROVISIONING_PROFILE_DATA}}
  25. APP_STORE_CONNECT_USERNAME: ${{secrets.APP_STORE_CONNECT_USERNAME}}
  26. APP_STORE_CONNECT_PASSWORD: ${{secrets.APP_STORE_CONNECT_PASSWORD}}
  27. jobs:
  28. assemble:
  29. runs-on: macos-12
  30. steps:
  31. - name: Get current date
  32. id: date
  33. run: echo "::set-output name=timestamp::$(date +'%s')"
  34. - name: Checkout Project
  35. uses: actions/checkout@v2
  36. - name: Cache node_modules Folder
  37. uses: actions/cache@v2
  38. with:
  39. path: ${{ github.workspace }}/node_modules
  40. key: ${{ runner.os }}-node_modules
  41. restore-keys: ${{ runner.os }}-node_modules
  42. - name: Get Yarn Cache Directory Path
  43. id: yarn-cache-dir-path
  44. run: echo "::set-output name=dir::$(yarn cache dir)"
  45. - name: Cache Yarn
  46. uses: actions/cache@v2
  47. env:
  48. cache-name: yarn-cache
  49. with:
  50. path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
  51. key: ${{ runner.os }}-yarn-${{ hashFiles('**/package.json') }}
  52. restore-keys: |
  53. ${{ runner.os }}-yarn-
  54. - name: Cache Pods
  55. uses: actions/cache@v2
  56. with:
  57. path: ios/Pods
  58. key: ${{ runner.os }}-pods-${{ hashFiles('**/Podfile.lock') }}
  59. restore-keys: |
  60. ${{ runner.os }}-pods-
  61. - name: Install Dependencies
  62. run: |
  63. yarn
  64. - name: Install pods
  65. run: cd ios && pod update --no-repo-update
  66. - name: Import signing certificate
  67. env:
  68. SIGNING_CERTIFICATE_P12_DATA: ${{ env.SIGNING_CERTIFICATE_P12_DATA }}
  69. SIGNING_CERTIFICATE_PASSWORD: ${{ env.SIGNING_CERTIFICATE_PASSWORD }}
  70. run: |
  71. exec .github/scripts/import-certificate.sh
  72. - name: Import provisioning profile
  73. env:
  74. PROVISIONING_PROFILE_DATA: ${{ env.PROVISIONING_PROFILE_DATA }}
  75. run: |
  76. exec .github/scripts/import-profile.sh
  77. - name: Build app
  78. env:
  79. FL_APP_IDENTIFIER: ${{ env.APP_ID }}
  80. FL_UPDATE_PLIST_DISPLAY_NAME: ${{ env.APP_NAME }}
  81. FL_UPDATE_PLIST_PATH: hola/Info.plist
  82. FL_VERSION_NUMBER_VERSION_NUMBER: ${{ env.VERSION_NUMBER }}
  83. FL_BUILD_NUMBER_BUILD_NUMBER: ${{ env.BUILD_NUMBER }}.${{steps.date.outputs.timestamp}}
  84. FL_CODE_SIGN_IDENTITY: ${{ env.CODE_SIGN_IDENTITY }}
  85. FL_PROVISIONING_PROFILE_SPECIFIER: ${{ env.PROVISIONING_PROFILE_SPECIFIER }}
  86. FASTLANE_TEAM_ID: ${{ env.TEAM_ID }}
  87. run: |
  88. cd ios
  89. bundle update
  90. bundle exec fastlane build_release
  91. - name: Upload Ios Products
  92. uses: actions/upload-artifact@v2
  93. with:
  94. name: app-${{ env.BUILD_TYPE }}
  95. path: |
  96. ${{ github.workspace }}/ios/hola.ipa
  97. ${{ github.workspace }}/ios/hola.app.dSYM.zip
  98. - name: Upload app to App Store Connect
  99. env:
  100. APP_STORE_CONNECT_USERNAME: ${{ env.APP_STORE_CONNECT_USERNAME }}
  101. APP_STORE_CONNECT_PASSWORD: ${{ env.APP_STORE_CONNECT_PASSWORD }}
  102. run: |
  103. cd ios
  104. xcrun altool --upload-app -t ios -f "hola.ipa" -u "$APP_STORE_CONNECT_USERNAME" -p "$APP_STORE_CONNECT_PASSWORD"
  105. - name: Rename release assets
  106. run: |
  107. mv ios/hola.ipa ios/app-${{ env.BUILD_TYPE }}.ipa
  108. mv ios/hola.app.dSYM.zip ios/app-${{ env.BUILD_TYPE }}.app.dSYM.zip
  109. - name: Upload release assets
  110. uses: softprops/action-gh-release@v1
  111. if: startsWith(github.ref, 'refs/tags/')
  112. with:
  113. prerelease: ${{ contains(github.ref, 'beta') }}
  114. files: |
  115. ios/app-${{ env.BUILD_TYPE }}.ipa
  116. ios/app-${{ env.BUILD_TYPE }}.app.dSYM.zip
  117. env:
  118. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}