Jenkins/fastlane - 没有找到本地代码签名身份
Posted
技术标签:
【中文标题】Jenkins/fastlane - 没有找到本地代码签名身份【英文标题】:Jenkins/fastlane - There are no local code signing identities found 【发布时间】:2020-02-04 13:29:09 【问题描述】:我在使用 Jenkins 时遇到了 fastlane 的问题。
在终端中运行此命令
fastlane provide_crashlytics_build testing:false check_xcode:false --env xxx
,但从 Jenkins 无法运行
错误信息:
There are no local code signing identities found.
You can run `security find-identity -v -p codesigning` to get this output.
This Stack Overflow thread has more information: https://***.com/q/35390072/774.
(Check in Keychain Access for an expired WWDR certificate: https://***.com/a/35409835/774 has more info.)
[14:03:30]: No certificates for filter: Certificate ID: '7D72F7MC75'
[14:03:30]: something bad happened: Could not find a matching code signing identity for type 'AdHoc'.
fastlane 版本 2.141.0
追踪步骤:
-
我运行这个命令
security find-identity -v -p codesigning
结果如下:2 valid identities found
我检查了 Apple Worldwide Developer 证书及其有效和受信任
我检查了 Keychain 和 Apple Developer 帐户中的分发证书,两者都在那里
这是 Jenkins 执行 Shell:
#!/bin/zsh
export TERM=xterm-256color
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
export GIT_TRACE_PACKET=1
export GIT_CURL_VERBOSE=1
source /Users/Shared/Jenkins/.rvm/scripts/rvm
rvm use 2.6.3
fastlane provide_crashlytics_build testing:false check_xcode:false --env xxx
这里是法斯兰车道:
########## Upload testbuild to crashlytics ##########
desc "Upload testbuild to crashlytics"
lane :provide_crashlytics_build do |options|
if options[:check_xcode]
verify_xcode
end
if options[:add_badge]
if ENV['DARK_BADGE']
badge(dark: true)
else
badge
end
end
build_preparations
if options[:testing]
start_tests
end
pem
match(
type: "adhoc",
app_identifier: [ENV['APP_IDENTIFIER'], ENV['APP_NOTIFICATION_EXTENSION_IDENTIFIER']],
force_for_new_devices: true
)
gym(
xcargs: "ARCHIVE=NO",
output_name: "#ENV['OUTPUT_NAME_TESTING']"
)
verify_build(
provisioning_type: 'distribution',
bundle_identifier: ENV['APP_IDENTIFIER']
)
version = get_ipa_info_plist_value(ipa: "#ENV['OUTPUT_NAME_TESTING'].ipa", key: "CFBundleShortVersionString")
crashlytics(
api_token: ENV['CRASHLYTICS_API_TOKEN'],
build_secret: ENV['CRASHLYTICS_BUILD_SECRET'],
emails: ENV['CRASHLYTICS_EMAILS'],
notifications: false,
notes: "#change_log_last_five_commits"
)
if ENV['SLACK_URL']
sh ("say 'Yippee! What a awsome day. Thanks to #lastCommitAuthor something great happend. A new build is born.'")
slack(
message: "New crashlytics build of #ENV['SCHEME'] v.#version(#build)",
channel: "#ENV['SLACK_CHANNEL']",
success: true,
use_webhook_configured_username_and_icon: true,
default_payloads: [],
payload:
'Release Notes' => change_log_last_five_commits
)
end
clean_build_artifacts
end
这里是快车道日志:
Summary for match 2.141.0 |
+----------------------------+---------------------------------------------------------------------------------------+
| type | adhoc |
| app_identifier | ["xxxxxxxxxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxxxxxxxxx.NotificationServiceExtension"] |
| force_for_new_devices | true |
| readonly | false |
| generate_apple_certs | false |
| skip_provisioning_profiles | false |
| username | xxxxxxxxxxxxxxx |
| team_id | R2Q6VXW97P |
| team_name | xxxxxxxxxxxxxxxxxxxxxxxxx |
| storage_mode | git |
| git_url | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
| git_branch | master |
| shallow_clone | false |
| clone_branch_directly | false |
| keychain_name | login.keychain |
| force | false |
| skip_confirmation | false |
| skip_docs | false |
| platform | ios |
| verbose | false |
+----------------------------+---------------------------------------------------------------------------------------+
+-------------------+-------------------------------------------------------------+
| Installed Certificate |
+-------------------+-------------------------------------------------------------+
| User ID | R2Q6VXW97P |
| Common Name | iPhone Distribution: xxxxxxxxxxxxxxxxxxxxxxxxx (R2Q6VXW97P) |
| Organisation Unit | R2Q6VXW97P |
| Organisation | xxxxxxxxxxxxxxxxxxxxxxxxx |
| Country | US |
| Start Datetime | 2020-02-04 11:56:01 UTC |
| End Datetime | 2021-02-03 11:56:01 UTC |
+-------------------+-------------------------------------------------------------+
+-------------------------------------+--------------------------------------+
| Summary for sigh 2.141.0 |
+-------------------------------------+--------------------------------------+
| app_identifier | xxxxxxxxxxxxxxxxxxxxxxxxx |
| username | xxxxxxxxxxxxxxxxxxxxxxxxx |
| force | false |
| cert_id | 7D72F7MC75 |
| provisioning_name | match AdHoc xxxxxxxxxxxxxxxxxxxxxxxx |
| ignore_profiles_with_different_name | true |
| team_id | R2Q6VXW97P |
| team_name | xxxxxxxxxxxxxxxxxxxxxxxxx |
| platform | ios |
| adhoc | true |
| developer_id | false |
| development | false |
| skip_install | false |
| skip_fetch_profiles | false |
| skip_certificate_verification | false |
| readonly | false |
+-------------------------------------+--------------------------------------+
【问题讨论】:
由于Jenkins服务像守护进程一样运行,它无法访问登录钥匙串,它使用系统钥匙串。请确保您的签名证书在系统钥匙串中,看看这是否对您的问题有帮助。 【参考方案1】:解决方案
-
正如@Scriptable 在他的评论中所说:
由于 Jenkins 服务像守护进程一样运行,它无法访问登录钥匙串,它使用系统钥匙串。请确保您的签名证书在系统钥匙串中,看看这是否对您的问题有帮助。
-
证书永远不会设置为始终信任,它必须是使用系统默认值
【讨论】:
【参考方案2】:解决上述问题后,我遇到了这个问题:
caution: excluded filename not matched: __MACOSX/*
caution: excluded filename not matched: *.DS_Store
security: cert import failed: Write permissions error.
security: problem decoding
[10:24:35]: something bad happened: Unable to extract profile
[10:24:35]: stacktrace: ["/Users/Shared/Jenkins/.rvm/gems/ruby-2.6.3/gems/fastlane-2.141.0/fastlane_core/lib/fastlane_core/ui/interface.rb:141:in `user_error!'", "/Users/Shared/Jenkins/.rvm/gems/ruby-2.6.3/gems/fastlane-2.141.0/fastlane_core/lib/fastlane_core/ui/ui.rb:17:in `method_missing'" .....
有什么建议吗?
【讨论】:
以上是关于Jenkins/fastlane - 没有找到本地代码签名身份的主要内容,如果未能解决你的问题,请参考以下文章