我正在使用 Fastlane 脚本来设置使用 CI/CD 的自动化 ios 构建。在构建期间,Fastlane 无法检测到开发配置文件。我收到如下错误
错误:未找到“my-app-identifier”的配置文件:Xcode 找不到任何与“my-app-identifie”匹配的 iOS 应用程序开发配置文件。自动签名已禁用,无法生成配置文件。要启用自动签名,请将 -allowProvisioningUpdates 传递给 xcodebuild。 (在项目“App-scheme”的目标“My-target”中)
默认情况下,Xcode 中自动设置代码签名已启用,并尝试禁用它。并选择了证书后,我就可以使用 Fastlane 构建 ios 应用程序了。
我已经提供了 build_app 函数的配置文件详细信息。是否有任何选项可以使用 Fastlane 选择配置文件?
快速文件
default_platform(:ios)
platform :ios do
before_all do |lane, options|
APP_ID=ENV['APP_ID']
APP_SCHEME=ENV['APP_SCHEME']
setup_ci
end
desc "Fetches the provisioning profiles so you can build locally and deploy to your device"
lane :certs do
match(app_identifier: [APP_ID], type: "appstore", readonly: true, git_branch: "new-2")
match(app_identifier: [APP_ID], type: "development", readonly: true, git_branch: "new-2")
match(app_identifier: [APP_ID], type: "adhoc", readonly: true, git_branch: "new-2")
end
desc "Description of what the lane does"
lane :beta do
# add actions here: https://docs.fastlane.tools/actions
# increment_build_number
connect_appstore_api
build_app(
scheme: APP_SCHEME,
export_method: "app-store",
output_directory: "./build/appstore/",
clean: true,
archive_path: "./build/build",
export_options: {
provisioningProfiles: {
APP_ID => "match AppStore #{APP_ID}",
}
}
)
# pilot
end
desc "Generate certificates"
lane :generate_certs do
connect_appstore_api
match(
app_identifier: [APP_ID],
type: "development",
readonly: false,
git_branch: "new-2"
)
match(
app_identifier: [APP_ID],
type: "adhoc",
readonly: false,
git_branch: "new-2"
)
match(
app_identifier: [APP_ID],
type: "appstore",
readonly: false,
git_branch: "new-2"
)
end
private_lane :connect_appstore_api do
app_store_connect_api_key(
duration: 1200, # optional (maximum 1200)
in_house: false,
is_key_content_base64: true
)
end
lane :check_ci do
if is_ci
puts "I'm a computer"
else
puts "Hi Human!"
end
end
end
我一直在与同样的问题作斗争一段时间。我在 gitactions 上使用 fastlane 和 nativescript 。我终于成功地让构建的存档阶段开始工作。
确保您跑步的车道上有
setup_ci
(docs)。我不知何故错过了文档的这一部分。这将整理您的钥匙串等。上面的 Fastfile 确实有 setup_ci
。
确保您使用
app_store_connect_api_key
(docs) 进行匹配来进行身份验证,因为 2FA 在 ci/cd 中不起作用。虽然我已经设置了这个,但我实际上并没有运行该命令,并且匹配使用我的应用程序密码,然后要求输入安全代码。上面的 Fastfile 使用 connect_appstore_api
,我在文档中找不到。
使用
update_code_signing_settings
(docs) 禁用自动代码签名。在构建之前运行此命令,例如之前build_app
。尽管上面有错误提示,但我真的很难让任何东西在启用代码签名的情况下工作。调用此函数时,您还应该包含您的 profile_name,因为它会告诉 xcode 要使用什么配置文件。下面是一个例子,
update_code_signing_settings(
use_automatic_signing: false,
path: "./platforms/ios/nativescript.xcodeproj",
team_id: "YOUR-TEAM-ID",
profile_name: "match AppStore YOUR.BUNDLE.ID",
)
记下配置文件名称。如果您运行
fastlane match appstore
,您将看到用于应用商店分发的配置文件。我认为它看起来像我在示例中的内容,但只是为了确保该命令会告诉您 profile_name 参数应该是什么。
在本地测试您的构建。如果没有
setup_ci
但使用应用商店 API、匹配、禁用代码签名和指定配置文件,一切都应该在本地构建。如果没有,请检查错误并进行所需的更改。例如,我必须更改我的 build.xcconfig
以包含 CODE_SIGN_IDENTITY
来明确告诉 excode 使用什么身份,
CODE_SIGN_IDENTITY = Apple Distribution: APP STORE ACCOUNT (TEAMID)
您可以使用
fastlane match appstore
来获取此身份。它将被称为“证书名称”
我现在可以很好地构建应用程序。我的新问题是它看起来不像是自动递增版本号,因此应用程序商店拒绝该应用程序。这可能与关闭代码签名有关... brb...