我试图为CI/CD使用GitHub操作,当试图创建IPA文件时,在试图查找供应配置文件时会失败。
我把这些文件存储在Github的机密部分,它们看起来很好地加载。
env:
BUILD_CERTIFICATE_BASE64: ***
P12_PASSWORD: ***
BUILD_PROVISION_PROFILE_BASE64: ***
KEYCHAIN_PASSWORD: ***
1 identity imported.我创建了一个ExportOptions.plist文件并尝试打印出来,以确保GitHub正确地读取它。
{
"method" => "ad-hoc"
"provisioningProfiles" => {
"com.strykeout.Demo_CICD" => "PROFILE UUID"
}
"signingCertificate" => "iPhone Distribution: Nathan (XXXXXXX)"
"signingStyle" => "manual"
"teamID" => "XXXXXXXX"
}
2022-01-31 22:55:17.741 xcodebuild[1633:7990] [MT] IDEDistribution: -[IDEDistributionLogging _createLoggingBundleAtPath:]: Created bundle at path "/var/folders/24/8k48jl6d249_n_qfxwsl6xvm0000gn/T/Demo_CICD_2022-01-31_22-55-17.740.xcdistributionlogs".
error: exportArchive: "Demo_CICD.app" requires a provisioning profile.
** EXPORT FAILED **
Error Domain=IDEProvisioningErrorDomain Code=9 ""Demo_CICD.app" requires a provisioning profile." UserInfo={IDEDistributionIssueSeverity=3, NSLocalizedDescription="Demo_CICD.app" requires a provisioning profile., NSLocalizedRecoverySuggestion=Add a profile to the "provisioningProfiles" dictionary in your Export Options property list.}它似乎找不到导出选项的provisioningProfiles部分,但它显然在那里。
这是完整的工作流程:
name: Archive Workflow
on:
push:
branches: [ main ]
jobs:
build:
name: Archive File on merge to Main
runs-on: macos-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Install the Apple certificate and provisioning profile
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: Build archive
env:
scheme: ${{ 'Demo_CICD' }}
run: |
xcodebuild \
-configuration Release \
-scheme $scheme \
-archivePath ./demo/Demo_CICD.xcarchive \
archive
- name: Build IPA
run: |
plutil -p exportOptions.plist
xcodebuild \
-configuration Release \
-exportArchive \
-archivePath ./demo/Demo_CICD.xcarchive \
-exportPath /demo/demoIPA.ipa \
-exportOptionsPlist exportOptions.plist 发布于 2022-02-01 17:10:55
我发现了我的问题是:
很明显,Xcode正在将我的应用程序包ID从demo_cicd升级到demo-cicd (下划线改为连字符),因此与exportOptions Plist的工作方式不匹配。
https://stackoverflow.com/questions/70934788
复制相似问题