最近工作不太忙,领导让我把持续集成实现以下。公司的代码是放倒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会自动执行
网友评论