问题是 iOS 项目持续集成中出现的。在执行 bundle update 时,插件要 ruby 版本2.4.0以上才能安装,所以把 ruby 升级到了2.6.5版本。 ruby 升级后,再执 行bundle update 时,继续报错,报错内容:

+ bundle update
Could not load OpenSSL.
You must recompile Ruby with OpenSSL support or change the sources in your
Gemfile from 'https' to 'http'. Instructions for compiling with OpenSSL using
RVM are available at rvm.io/packages/openssl.
Build step 'Execute shell' marked build as failure
Archiving artifacts
Finished: FAILURE  
复制代码

查错

刚开始认为问题是因为 ruby 新版本和 openssl 出了问题,然后 google 和 stackoverflow 也有相关的问题反馈,试验了大部分解决方法,问题依然没解决!

上图解决方法链接

上图解决方法链接

在很多次失败后,我在终端的项目文件夹执行了 bundle update 命令,竟然没问题!如下图:
然后推测大概是 jenkins 上的 shell 命令执行时出了问题。经过排查,配置 jenkins 集成时,要指定 ruby 的环境变量,如下图:

指定了新版 ruby 的环境变量后,jenkins 持续集成问题解决!

  • 有问题时,不能一根筋,很容易陷入自己的思维逻辑陷阱。最开始时,我一直认为是新版 ruby 没有指定 openssl 引起的问题。搜索网上各种解决方案,卸载重装了无数次 ruby 和 rvm,浪费了很多时间。
  • 好记性不如烂笔头。几年前记录的 基于 Xcode 9+,利用fastlane+jenkins持续集成iOS项目 文章,重新看时,快速定位到问题,大概5分钟就解决了此问题。如下图:
    分类:
    iOS
  •