4

我在使用 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://stackoverflow.com/q/35390072/774.
(Check in Keychain Access for an expired WWDR certificate: https://stackoverflow.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'.

快车道 2.141.0 版

追踪步骤:

  1. 我运行这个命令security find-identity -v -p codesigning ,结果如下:2 valid identities found
  2. 我检查了 Apple Worldwide Developer 证书及其有效和可信
  3. 我检查了 Keychain 和 Apple Developer 帐户中的分发证书,两者都在那里

这是詹金斯执行外壳:

#!/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                                |
+-------------------------------------+--------------------------------------+
4

2 回答 2

1

解决方案

  1. 正如@Scriptable 在他的评论中所说:

因为 Jenkins 服务像守护进程一样运行,所以它无法访问登录钥匙串,它使用系统钥匙串。请确保您的签名证书在系统钥匙串中,看看这是否对您的问题有帮助。

  1. 证书永远不会设置为Always Trust,它必须是Use System Default

在此处输入图像描述

于 2020-02-07T09:56:50.853 回答
-1

解决上述问题后,我遇到了这个问题:

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'" .....

有什么建议么 ?

于 2020-02-07T10:00:11.433 回答