美文网首页
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