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
相关产品推荐
相关产品推荐

