You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

EAS Build本地正常运行但Jenkins CI执行失败求助

Jenkins代理执行EAS iOS构建证书导入失败排查方案
  • 确认Jenkins代理的运行用户
    本地执行命令用的是当前登录用户(比如user),但Jenkins代理可能以jenkins系统用户运行,二者钥匙串完全独立。在Jenkins流水线中添加echo $USER命令,打印当前运行用户。如果和本地用户不一致,需要将证书导入到Jenkins用户的钥匙串,而非你自己的用户钥匙串。

  • 解锁Jenkins用户的钥匙串
    Jenkins代理后台运行时默认不会解锁用户的login钥匙串,导致EAS无法访问证书。在流水线中添加解锁命令:

    security unlock-keychain -p "${KEYCHAIN_PASSWORD}" /Users/[Jenkins用户名]/Library/Keychains/login.keychain-db
    

    注意:不要硬编码密码,用Jenkins凭据管理存储密码,通过环境变量KEYCHAIN_PASSWORD调用。

  • 重新导入证书到正确路径
    若Jenkins使用独立用户,需在流水线中执行以下命令,将证书导入到Jenkins用户的钥匙串:

    # 导入WWDR根证书
    security add-trusted-cert -r unspecified -k /Users/[Jenkins用户名]/Library/Keychains/login.keychain-db /path/to/AppleWWDRCAG3.cer
    # 导入iOS分发证书(.p12格式),并授权codesign访问
    security import /path/to/your-dist-cert.p12 -k /Users/[Jenkins用户名]/Library/Keychains/login.keychain-db -P "${CERT_PASSWORD}" -T /usr/bin/codesign
    

    必须同时导入分发证书和WWDR根证书,且给codesign工具授权访问权限(-T参数)。

  • 验证证书在钥匙串中的可用性
    在Jenkins流水线中执行以下命令,确认证书存在且可访问:

    security find-identity -v -p codesigning /Users/[Jenkins用户名]/Library/Keychains/login.keychain-db
    

    若输出中能看到目标分发证书的指纹,说明导入成功;否则需检查导入命令和路径是否正确。

  • 同步EAS凭证上下文
    本地执行时EAS读取的是当前用户的Expo配置,Jenkins环境下可能需要重新配置。可以在build命令前添加:

    # 确保Expo CLI已登录(若需要)
    eas login --username "${EXPO_USER}" --password "${EXPO_PASS}"
    # 确认凭证配置
    eas credentials manager --platform ios --profile internal-review
    

    账号密码同样通过Jenkins凭据管理存储,避免硬编码。

内容的提问来源于stack exchange,提问作者Frendom

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 16:35:06