GitHub CI工作流能否自动获取CocoaPods推送所需会话?
解决方案
首先明确:不需要每次推送都手动点击验证邮件,也不需要在CI工作流中重复执行pod trunk register命令。
核心原理
pod trunk register是仅需执行一次的操作:你在本地设备执行该命令并点击验证邮件完成授权后,本地会生成~/.netrc文件,其中存储了CocoaPods Trunk的长期有效会话凭证,只要你没有主动执行pod trunk logout操作,该凭证就可以一直用于推送操作。
具体操作步骤
- 先在本地开发设备执行一次
pod trunk register 你的注册邮箱 你的用户名,手动点击收到的验证邮件链接完成首次授权 - 打开本地
~/.netrc文件,复制trunk.cocoapods.org对应的完整配置段,内容格式如下:machine trunk.cocoapods.org login 你的CocoaPods注册邮箱 password 你的会话秘钥 - 将上述完整配置内容存入GitHub仓库的Secrets中,命名为
COCOPODS_NETRC - 修改你的工作流脚本,删除原有的
Get Sesssion步骤,替换为写入凭证的步骤即可
修改后的工作流示例
name: validate on: [push] jobs: unit-tests: runs-on: macos-latest strategy: matrix: destination: [ 'platform=iOS Simulator,name=iPhone 12 Pro', ] steps: - name: Checkout Repo uses: actions/checkout@v2 - name: Run Tests run: |- cd Example xcodebuild test -scheme SwiftAudio-Example -destination "${destination}" -enableCodeCoverage YES env: destination: ${{ matrix.destination }} - name: 写入CocoaPods会话凭证 run: echo "${{ secrets.COCOPODS_NETRC }}" > ~/.netrc - name: Push Repo to Cocoapods run: pod trunk push SwiftAudioEx.podspec --allow-warnings
注意事项
- 凭证内容绝对不要硬编码到工作流代码中,必须存储在GitHub Secrets中避免泄露
- 如果后续推送提示凭证失效,只需要在本地重新执行一次
pod trunk register完成验证,更新Secrets里的COCOPODS_NETRC内容即可
内容的提问来源于stack exchange,提问作者Dolphin
相关产品推荐
相关产品推荐

