[Day:27] GitHub Actions 懒人部署-ios CI 基础打包

https://ithelp.ithome.com.tw/upload/images/20201010/20104220jkV6CLRxqe.png

在 Apple Actions 找到我们所需的 Actions

apple-actions/import-codesign-certs@v1
Apple-Actions/download-provisioning-profiles@v1
Apple-Actions/upload-testflight-build@master

但是上架才没有这麽简单啦 分两天都有点赶

建立所需 Secrets

APPSTORE_ISSUER_ID

APPSTORE_KEY_ID

APPSTORE_PRIVATE_KEY

在此设定:https://appstoreconnect.apple.com/access/api

CERTIFICATES_P12

由钥匙圈汇出.P12
cat XXXXX.p12 | base64 | pbcopy
贴上 Secrets 即可

CERTIFICATES_P12_PASSWORD

由钥匙圈汇出.P12 时所设定之密码

name: Github Actions

# on: [push, pull_request]
on:
  push:
    branches: [  Release-Store  ]
    tags:
      - 'Store*'
  pull_request:
    branches: [  Release-Store  ]
jobs:
  build:
    runs-on: macOS-latest
#    container: reactnativecommunity/react-native-android
    steps:
        
    - uses: actions/checkout@v2
    - name: Envinfo
      run: npx envinfo
   
    - name: Run a signing Certificate p12 script
      uses: apple-actions/import-codesign-certs@v1
      with: 
        p12-file-base64: ${{ secrets.CERTIFICATES_P12 }}
        p12-password: ${{ secrets.CERTIFICATES_P12_PASSWORD }}
    - uses: Apple-Actions/download-provisioning-profiles@v1
      with:
        bundle-id: XX.XX.rn3d
        issuer-id: ${{ secrets.APPSTORE_ISSUER_ID }}
        api-key-id: ${{ secrets.APPSTORE_KEY_ID }}
        api-private-key: ${{ secrets.APPSTORE_PRIVATE_KEY }}

    - name: 'Another example step'
      run: echo ${{ steps.provisioning.outputs.profiles }}
   
    - name: "#️⃣ Generate Build Number"
      id: IOSbuild
      uses: einaregilsson/build-number@v2
      with:
        token: ${{ secrets.ACTION_TEST }}
        prefix: IOSbuild

    - name: "#️⃣ Generate Build Number store"
      id: IOSVERSION
      uses: einaregilsson/build-number@v2
      with:
        token: ${{ secrets.ACTION_TEST }}
        prefix: IOSVERSION
    - name: Print new build number
      run: |
        echo "Build number is $BUILD_NUMBER"
        echo "Build number is $buildnumber" ${{ steps.buildnumber.outputs.build_number }}
        echo "IOSVERSION is $buildnumber_store" ${{ steps.IOSVERSION.outputs.build_number }}
        echo "IOSbuild is $buildnumber" ${{ steps.IOSbuild.outputs.build_number }}
    - name: Install dependencies
      run: |    
        npm install -g react-native-cli
        yarn
    - name: Install IOS dependencies
      run: |    
        cd ios
        pod install
   
    - name: Build app (fix)
      run: |
        xcodebuild clean archive -workspace  ./ios/rn3d.xcworkspace -scheme rn3d -configuration Release   -archivePath ./ios/build/export.xcarchive  -showBuildTimingSummary MARKETING_VERSION=0.0.${{ steps.IOSVERSION.outputs.build_number }}  CURRENT_PROJECT_VERSION=`${{ steps.IOSbuild.outputs.build_number }}`   archive



    - name: Build IPA (APPLE)
      run: |
        xcodebuild -exportArchive -archivePath ./ios/build/export.xcarchive -exportPath ./build -exportOptionsPlist ./ios/ExportOptions.plist -allowProvisioningUpdates
 

    - uses: Apple-Actions/upload-testflight-build@master
      with:
        app-path: ./build/rn3d.ipa
        issuer-id: ${{ secrets.APPSTORE_ISSUER_ID }}
        api-key-id: ${{ secrets.APPSTORE_KEY_ID }}
        api-private-key: ${{ secrets.APPSTORE_PRIVATE_KEY }}

    - name: show job status 3 
      if: always()
      id: job_status
      run: echo $status
      env:
         status: ${{job.status}}

https://ithelp.ithome.com.tw/upload/images/20201011/201042204okumBqA0b.png

发布到Apple App Store 注意事项。

配置发布方案
构建要在App Store中分发的应用程序需要使用ReleaseXcode中的方案。专为构建Release的应用程序将自动禁用应用程序内开发人员菜单,这将防止您的用户无意间访问生产环境中的菜单。它还将在本地捆绑JavaScript,因此您可以将应用程序放在设备上并在未连接到计算机的情况下进行测试。

要将您的应用配置为使用Release方案构建,请转到产品→方案→编辑方案。选择边栏中的“运行”选项卡,然後将“构建配置”下拉列表设置为Release。

构建要发布的应用程序
现在,您可以通过点击⌘B或从菜单栏中选择产品→构建来构建要发布的应用程序。构建发行版後,您就可以将应用分发给Beta测试人员,并将其提交到App Store。

您还可以使用React Native CLI来通过--configuration带有值Release(例如npx react-native run-ios --configuration Release)的选项执行此操作。


<<:  Day 26 Docker-Compose nginx + flask container with filebeat-another structure

>>:  Day 26 广播自己的BGP

Day 11 -资料查询语言 WHERE !

我们前几篇介绍了资料操纵 DML 的语法,之後几篇呢我会精选几个比较常用的资料查询 DQL 语法来跟...

[Day24] 网格交易机器人-结尾

今天的目标是帮GridBot增加下单的函数(实际上这实作有些限制,所以我先把下实单的部分注解掉了),...

[3D地图-CesiumJS系列] 一、快速上手

今天要来介绍3D地图的一个API,CesiumJS。 CesiumJS为一个开源JavaScript...

Day 3 安装 RSpec 以及环境设定

该文章同步发布於:我的部落格 检查电脑是否有 Ruby 铁人赛文章主要以 Mac 作业系统为主,避...

【Day 29】Deno + Oak 建立 Restful API (2)

接续昨天继续实作 还记得我们昨天在 Controller 里新增的 todo.ts ? expor...