nra*_*ray 5 xcode github-actions
我有一个简单的 GH 操作工作流程 yaml,其中包含以下内容:
name: CI
on:
push:
jobs:
ci:
runs-on: macos-latest
defaults:
run:
shell: bash
working-directory: working_directory_here
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Install the Apple certificate and provisioning profile for Xcode
env:
BUILD_CERTIFICATE_BASE64: ${{ secrets.BUILD_CERTIFICATE_BASE64 }}
P12_PASSWORD: ${{ secrets.P12_PASSWORD }}
BUILD_PROVISION_PROFILE_BASE64: ${{ secrets.BUILD_PROVISION_PROFILE_BASE64 }}
KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }}
run: |
# create variables
CERTIFICATE_PATH=$RUNNER_TEMP/build_certificate.p12
PP_PATH=$RUNNER_TEMP/build_pp.mobileprovision
KEYCHAIN_PATH=$RUNNER_TEMP/app-signing.keychain-db
# import certificate and provisioning profile from secrets
echo -n "$BUILD_CERTIFICATE_BASE64" | base64 --decode --output $CERTIFICATE_PATH
echo -n "$BUILD_PROVISION_PROFILE_BASE64" | base64 --decode --output $PP_PATH
# create temporary keychain
security create-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH
security set-keychain-settings -lut 21600 $KEYCHAIN_PATH
security unlock-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH
# import certificate to keychain
security import $CERTIFICATE_PATH -P "$P12_PASSWORD" -A -t cert -f pkcs12 -k $KEYCHAIN_PATH
security list-keychain -d user -s $KEYCHAIN_PATH
# apply provisioning profile
mkdir -p ~/Library/MobileDevice/Provisioning\ Profiles
cp $PP_PATH ~/Library/MobileDevice/Provisioning\ Profiles
- name: Install
run: pod install
- name: Build
run: xcodebuild -workspace something.xcworkspace -sdk iphonesimulator -scheme Development build
- name: Deploy
run: |
xcodebuild clean -workspace something.xcworkspace -scheme Development
xcodebuild archive -workspace something.xcworkspace -scheme Development -archivePath something.xcarchive -destination generic/platform=iOS
Run Code Online (Sandbox Code Playgroud)
Apple 证书和配置文件取自Github 中的这篇文章。、pod install、xcodebuild build和xcodebuild clean即使没有 Apple 证书步骤, 、 和 命令也能
我的xcodebuild archive步骤因以下错误而失败:
error: No profiles for 'something.something.development' were found: Xcode couldn't find any iOS App Development provisioning profiles matching 'something.something.development'. Automatic signing is disabled and unable to generate a profile.
Run Code Online (Sandbox Code Playgroud)
这里缺少一些基本的东西吗?添加-allowProvisioningUpdates不会产生任何影响——它仍然会失败,但在 Github Actions 输出中根本不会返回任何错误,包括启用调试模式。
您可能在命令行中缺少参数,这里我要provisioningProfiles特别说一下参数。
为了确保您可以正确运行命令,您可以:
Product> 。Archive单击Distribute app新窗口中的 并完成步骤。确保在此步骤选择有效的配置文件和证书。走到最后,直接导出(不要去AppStore),Xcode会为你生成一个导出文件夹。您应该会在此文件夹中看到一个名为的文件ExportOptions.plist,类似于以下内容:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>destination</key>
<string>export</string>
<key>method</key>
<string>app-store</string>
<key>provisioningProfiles</key>
<dict>
<key>your.bundle.id</key>
<string>Provisioning Profile name</string>
</dict>
<key>signingCertificate</key>
<string>Apple Distribution</string>
<key>signingStyle</key>
<string>manual</string>
<key>teamID</key>
<string>123ABC12</string>
</dict>
</plist>
Run Code Online (Sandbox Code Playgroud)
ExportOptions.plist. 该文件基本上包含您应该传递到 CI 命令行以模拟 Xcode 在本地执行的操作的参数IOS_EXPORT_OPTIONS_PLISTxcodebuild archive -yourparams -exportOptionsPlist $EXPORT_OPTIONS_PATH注意:您可以运行xcodebuild -h来查看可添加到 ExportOptions.plist 文件中的所有可用选项。