Class: Pindo::CertProcess::MatchGitCertOperator
- Inherits:
-
BaseCertOperator
- Object
- BaseCertOperator
- Pindo::CertProcess::MatchGitCertOperator
- Defined in:
- lib/pindo/module/cert/mode/match_git_cert_operator.rb
Overview
✅ 场景 1、2:Match + Git 证书操作
使用 fastlane match 管理证书,存储在 Git 仓库
创建模式:
-
调用 Apple Developer API 创建证书
-
AES 加密证书文件
-
推送到 Match Git 仓库
-
安装到本地 Keychain
获取模式:
-
从 Match Git 仓库拉取加密证书
-
AES 解密
-
安装到本地 Keychain
Instance Method Summary collapse
-
#create_and_install_certs(apple_id:, bundle_id_array:, cert_type:, platform_type:, project_dir: nil) ⇒ Array<Hash>
✅ 场景 1:创建 + Match + Git.
-
#fetch_and_install_certs(apple_id:, bundle_id_array:, cert_type:, platform_type:, project_dir: nil) ⇒ Array<Hash>
✅ 场景 2:获取 + Match + Git.
Instance Method Details
#create_and_install_certs(apple_id:, bundle_id_array:, cert_type:, platform_type:, project_dir: nil) ⇒ Array<Hash>
✅ 场景 1:创建 + Match + Git
使用 fastlane match 创建证书并推送到 Git 仓库
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/pindo/module/cert/mode/match_git_cert_operator.rb', line 36 def create_and_install_certs(apple_id:, bundle_id_array:, cert_type:, platform_type:, project_dir: nil) Funlog.instance.("使用 fastlane match 创建并安装证书...") # 获取 match 配置参数(内部方法) values = build_match_config_values( apple_id: apple_id, bundle_id_array: bundle_id_array, cert_type: cert_type, platform_type: platform_type, renew_flag: true # 创建模式:force=true, readonly=false ) config = FastlaneCore::Configuration.create(Match::Options., values) # 注意:fastlane match 可能会产生 '--template_name' 弃用警告 # 这是 fastlane 内部使用的参数,在 App Store Connect API v3.8.0 中已弃用 # 该警告不影响功能,fastlane 会自动处理兼容性 # 参考:https://docs.fastlane.tools/actions/match/#managed-capabilities Match::Runner.new.run(config) # 从环境变量中读取 match 创建的证书信息(内部方法) provisioning_info_array = extract_provisioning_info_from_match_env( cert_type: cert_type, platform_type: platform_type ) # 保存证书信息到全局配置 pindo_single_config = Pindoconfig.instance pindo_single_config.set_cert_info(dict: provisioning_info_array) # 验证证书信息 if provisioning_info_array.nil? || provisioning_info_array.empty? raise Informative, "未找到证书信息" end Funlog.instance.("fastlane match 创建证书完成!") provisioning_info_array end |
#fetch_and_install_certs(apple_id:, bundle_id_array:, cert_type:, platform_type:, project_dir: nil) ⇒ Array<Hash>
✅ 场景 2:获取 + Match + Git
使用 fastlane match 从 Git 仓库获取证书(只读模式)
85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 |
# File 'lib/pindo/module/cert/mode/match_git_cert_operator.rb', line 85 def fetch_and_install_certs(apple_id:, bundle_id_array:, cert_type:, platform_type:, project_dir: nil) Funlog.instance.("使用 fastlane match 获取并安装证书...") # 获取 match 配置参数(内部方法) values = build_match_config_values( apple_id: apple_id, bundle_id_array: bundle_id_array, cert_type: cert_type, platform_type: platform_type, renew_flag: false # 只读模式:force=false, readonly=true ) config = FastlaneCore::Configuration.create(Match::Options., values) # 从 Git 获取证书(只读模式) Match::Runner.new.run(config) # 从环境变量中读取 match 获取的证书信息(内部方法) provisioning_info_array = extract_provisioning_info_from_match_env( cert_type: cert_type, platform_type: platform_type ) # 保存证书信息到全局配置 pindo_single_config = Pindoconfig.instance pindo_single_config.set_cert_info(dict: provisioning_info_array) # 验证证书信息 if provisioning_info_array.nil? || provisioning_info_array.empty? raise Informative, "未找到证书信息" end Funlog.instance.("fastlane match 获取证书完成!") provisioning_info_array end |