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 - 没有找到本地代码签名身份的主要内容,如果未能解决你的问题,请参考以下文章

Jenkins+Fastlane+蒲公英+钉钉

Jenkins+Fastlane+蒲公英+钉钉

Jenkins+Fastlane+蒲公英+钉钉

Mac Jenkins+fastlane 简单几步实现iOS自动化打包发布

Fastlane支持苹果双重认证终极解决方案

iOS 项目持续集成:Jenkins + Fastlane