我对部署CICD还是个新手。目前这是我的.yml
文件:
name: Release IOS
on:
push:
branches:
- github-action
jobs:
build:
name: Build IPA and upload to TestFlight
runs-on: macos-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Select Xcode Version
uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: latest-stable
- name: Setup SSH
uses: webfactory/ssh-agent@v0.5.4
with:
ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }}
- name: Setup ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: 2.7.2
bundler-cache: true
- name: Setup Node.js
uses: actions/setup-node@v1
with:
node-version: 14.17.0
- name: Install Cordova, Ionic, and cordova-res
run: npm install -g cordova@10.0.0 @ionic/cli cordova-res
- name: Install app dependencies
run: npm install
- name: npx gulp
run: npx gulp
- name: cordova resources
run: ionic cordova resources
- name: Remove Ios platform
run: ionic cordova platform remove ios
- name: Add Ios platform
run: ionic cordova platform add ios
- name: Fix translations problems in IOS
run: ionic cordova plugin add cordova-plugin-ionic-webview
- name: Install @ionic-native/ionic-webview
run: npm install @ionic-native/ionic-webview
- name: Prebuild iOS production
run: npm run prod:ios
- name: Uninstall outdated gems
run: gem cleanup
- name: Publish as internal testing
uses: yukiarrr/ios-build-action@v1.5.0
with:
project-path: ./platforms/ios/MyProject.xcodeproj
p12-base64: ${{ secrets.IOS_P12_BASE64 }}
certificate-password: ${{ secrets.IOS_P12_PASSWORD }}
mobileprovision-base64: ${{ secrets.IOS_PROVISION_FILE }}
code-signing-identity: iOS Distribution
team-id: ${{ secrets.TEAM_ID }}
workspace-path: ./platforms/ios/MyProject.xcworkspace # optional
这就是我最后得到的结果:
[17:53:21]: $ set -o pipefail && xcodebuild -workspace ./platforms/ios/MyProject.xcworkspace -scheme MyProject -configuration Release -destination 'generic/platform=iOS' -archivePath /Users/runner/Library/Developer/Xcode/Archives/2022-05-16/output\ 2022-05-16\ 17.53.21.xcarchive clean archive | tee /Users/runner/Library/Logs/gym/MyProject-MyProject.log | xcpretty
[17:53:29]: ▸ Clean Succeeded
[17:53:39]: ▸ ❌ error: No certificate for team '***' matching 'iOS Distribution' found: Select a different signing certificate for CODE_SIGN_IDENTITY, a team that matches your selected certificate, or switch to automatic provisioning. (in target 'MyProject' from project 'MyProject')
[17:53:39]: ▸ ** ARCHIVE FAILED **
▸ Clean Succeeded
❌ error: No certificate for team '***' matching 'iOS Distribution' found: Select a different signing certificate for CODE_SIGN_IDENTITY, a team that matches your selected certificate, or switch to automatic provisioning. (in target 'MyProject' from project 'MyProject')
** ARCHIVE FAILED **
[17:53:39]: Exit status: 65
[17:53:39]:
[17:53:39]: Maybe the error shown is caused by using the wrong version of Xcode
[17:53:39]: Found multiple versions of Xcode in '/Applications/'
[17:53:39]: Make sure you selected the right version for your project
[17:53:39]: This build process was executed using '/Applications/Xcode_13.2.1.app'
[17:53:39]: If you want to update your Xcode path, either
[17:53:39]:
[17:53:39]: - Specify the Xcode version in your Fastfile
[17:53:39]: ▸ xcversion(version: "8.1") # Selects Xcode 8.1.0
[17:53:39]:
[17:53:39]: - Specify an absolute path to your Xcode installation in your Fastfile
[17:53:39]: ▸ xcode_select "/Applications/Xcode8.app"
[17:53:39]:
[17:53:39]: - Manually update the path using
[17:53:39]: ▸ sudo xcode-select -s /Applications/Xcode.app
[17:53:39]:
+---------------+--------------------------------+
| Build environment |
+---------------+--------------------------------+
| xcode_path | /Applications/Xcode_13.2.1.app |
| gym_version | 2.205.2 |
| export_method | app-store |
| sdk | iPhoneOS15.2.sdk |
+---------------+--------------------------------+
我很确定我的证书、代码签名身份和预置描述文件都是正确的,但当Publish as internal testing
失败时,仍然会显示此错误。正确的调试方法是什么?
(我添加fastlane
标签,因为这个插件是基于它构建的)
1条答案
按热度按时间vzgqcmou1#
iOS有2种类型的证书,你必须使用分发来部署。我已经按照这篇文章,并成功地做到了,https://www.cobeisfresh.com/blog/how-to-implement-a-ci-cd-workflow-for-ios-using-github-actions你可以阅读更多关于文章