美文网首页
GitHub Action 实现iOS持续集成

GitHub Action 实现iOS持续集成

作者: printHello | 来源:发表于2021-09-09 17:37 被阅读0次

    最近工作不太忙,领导让我把持续集成实现以下。公司的代码是放倒GitHub上管理的,所以就用了GitHub的action来实现了一个自动打包到蒲公英的

    本文只是本人的工作笔记,如有问题还请大佬们指正。

    1.创建action,GitHub上打开代码仓库直接点击actions栏,如果没有创建的话下面就有创建的选项

    111.jpg

    创建workflow之后会有编辑界面,这里先保存。

    2.然后到仓库code,仓库下会生成一个.github/workflows的文件

    222.png

    里面有个.yml后缀的文件,这是执行文件。我随便起了个名字Deploying,内容如下

    name: Deploying
    on:
      push:
          
    jobs:
      deploy:
        name: Make a IPA file
        runs-on: macOS-latest
        steps:
          - name: Checkout repository
            uses: actions/checkout@v1
    
        # 进入FastlaneDemo
          - name: enter into FastlaneDemo
            run: |
              mv FastlaneDemo FastlaneDemo_build
              mv FastlaneDemo_build/* ./
              ls -l
          - name: Setup provisioning profile
            run: ./.github/workflows/secrets/decrypt_secrets.sh
          - name: Archiving project
            run: |
                ls -l  ~/Library/MobileDevice/Provisioning\ Profiles
                ls -l  ~/Library/Keychains
                mkdir  $PWD/build
                xcodebuild -project FastlaneDemo.xcodeproj -scheme FastlaneDemo -sdk iphoneos -configuration Release -archivePath $PWD/build/FastlaneDemo.xcarchive -allowProvisioningUpdates clean archive | xcpretty
          - name: Exporting .ipa
            run: |
                ls -l
                xcodebuild -archivePath $PWD/build/FastlaneDemo.xcarchive -exportOptionsPlist ./.github/workflows/secrets/ExportOptions.plist -exportPath $PWD/build -allowProvisioningUpdates -exportArchive | xcpretty
                pwd $PWD/build/
               # 向蒲公英上传文件
          - name: Upload To Pgyer
            uses: JantHsueh/upload-file-action@master
            with:
              url: https://www.pgyer.com/apiv2/app/upload
              method: POST
              forms: '{"_api_key":"${{ secrets.PGYER_KEY }}","buildInstallType":1}'
              fileForms: '{"file":"/Users/runner/work/FastlaneTest/FastlaneTest/build/FastlaneDemo.ipa"}'
    

    上面的代码中${{ secrets.PGYER_KEY }}是蒲公英上生成的key,是经过处理的。key可以直接填。
    ExportOptions.plist 这个plist文件,可以用xcode archive下代码,导出ipa包的时候文件夹里会包含这个文件直接取出来使用

    其中Setup provisioning profile中的decrypt_secrets.sh是这样的

    #!/bin/sh
    set -eo pipefail
    
    # gpg --quiet --batch --yes --decrypt --passphrase="$IOS_KEYS" --output ./.github/secrets/match_AppStore_comtiagosantocalculatorIOS.mobileprovision.mobileprovision ./.github/secrets/match_AppStore_comtiagosantocalculatorIOS.mobileprovision.gpg
    # gpg --quiet --batch --yes --decrypt --passphrase="$IOS_KEYS" --output ./.github/secrets/Certificates.p12 ./.github/secrets/Certificates.p12.gpg
    
    mkdir -p ~/Library/MobileDevice/Provisioning\ Profiles
    
    cp ./.github/workflows/secrets/FastlaneTestDemo_dis.mobileprovision ~/Library/MobileDevice/Provisioning\ Profiles/FastlaneTestDemo_dis.mobileprovision
    
    
    security create-keychain -p "" build.keychain
    security import ./.github/workflows/secrets/ios_appls.p12 -t agg -k ~/Library/Keychains/build.keychain -P "xxxxx" -A
    
    security list-keychains -s ~/Library/Keychains/build.keychain
    security default-keychain -s ~/Library/Keychains/build.keychain
    security unlock-keychain -p "" ~/Library/Keychains/build.keychain
    
    security set-key-partition-list -S apple-tool:,apple: -s -k "" ~/Library/Keychains/build.keychain
    

    里面的-p "xxxx"是对应ios_appls.p12秘钥的密码

    3.注意的地方

    GitHub处理的时候需要用到证书,我是把发布证书、对应的描述文件、p12文件、ExportOptions.plist文件放到与decrypt_secrets.sh同个目录。这个看个人喜好,但是要保证yml文件中的相关路径不能错,否则会报错找不到对应的文件。


    以上文件准备好的话,有代码push的时候,GitHub上的actions会自动执行

    相关文章

      网友评论

          本文标题:GitHub Action 实现iOS持续集成

          本文链接:https://www.haomeiwen.com/subject/dfrnwltx.html