Fastlane 在 Jenkins 上失败 google-api-client-0.38.0 需要 ruby 版本 ~> 2.4
Fastlane fails on Jenkins google-api-client-0.38.0 requires ruby version ~> 2.4
作为概念验证,我在我的 Mac 书籍(MacOS 是 Catalina)上成功构建了一个本地 Jenkins 服务器,并且该管道使用 Fastlane 脚本来克隆、构建, 分发成功
现在,我的数据中心有一个 Mac 服务器,我完成了相同的构建并安装了 Jenkins。当我 运行 相同的管道时,它失败了,所以我尝试从命令行执行但失败并出现此错误:
google-api-client-0.38.0 requires ruby version ~> 2.4
显然,我的安装使用的是 ruby 3.0,因此我按照建议安装了 rbenv 并降到了 2.4。安装程序成功,但问题仍然存在并使用 ruby 3.0。我的配置文件中定义的路径看起来正确。
我认为我的本地服务器和数据中心的服务器之间有两个关键差异可能会影响此问题:
- 我的 MacBook 已升级到 Catalina,其中 DataCenter iMac 是使用 Catalina 全新出厂的。请注意,ruby 的 Apple 版本随 Catalina 安装。
- 我没有安装 Xcode,只有 CLI
xcode-select version 2373
;我想让 IDE 远离此服务器,因此不会有在这个专用 Jenkins 服务器上修复代码的诱惑。
有任何进一步解决此安装问题的建议吗?
首先,您可能 必须安装 Xcode,才能使用它的所有工具(CLI 不会削减它)。我推荐 xcode-install 通过 CLI 管理 xcode 版本。这是您的设置中的一个关键区别。
但是,Jenkins 中的 $PATH 环境可能存在恶作剧。根据我从您的描述中了解到的情况,您可以通过终端调用它来正常 运行 fastlane,但它在 Jenkins 中不起作用,对吗?检查 Jenkins 中的 $PATH 并确保它与终端中的 $PATH 匹配。 rbenv 和其他 ruby 版本管理器要求您在能够使用它之前执行一些启动代码(例如 eval "$(rbenv init -)"
在 rbenv 的情况下),然后需要设置正确的 $PATH 才能使一切正常正如预期的那样(即让它指向 Ruby 2.4 而不是 3.0)。
作为概念验证,我在我的 Mac 书籍(MacOS 是 Catalina)上成功构建了一个本地 Jenkins 服务器,并且该管道使用 Fastlane 脚本来克隆、构建, 分发成功
现在,我的数据中心有一个 Mac 服务器,我完成了相同的构建并安装了 Jenkins。当我 运行 相同的管道时,它失败了,所以我尝试从命令行执行但失败并出现此错误:
google-api-client-0.38.0 requires ruby version ~> 2.4
显然,我的安装使用的是 ruby 3.0,因此我按照建议安装了 rbenv 并降到了 2.4。安装程序成功,但问题仍然存在并使用 ruby 3.0。我的配置文件中定义的路径看起来正确。
我认为我的本地服务器和数据中心的服务器之间有两个关键差异可能会影响此问题:
- 我的 MacBook 已升级到 Catalina,其中 DataCenter iMac 是使用 Catalina 全新出厂的。请注意,ruby 的 Apple 版本随 Catalina 安装。
- 我没有安装 Xcode,只有 CLI
xcode-select version 2373
;我想让 IDE 远离此服务器,因此不会有在这个专用 Jenkins 服务器上修复代码的诱惑。
有任何进一步解决此安装问题的建议吗?
首先,您可能 必须安装 Xcode,才能使用它的所有工具(CLI 不会削减它)。我推荐 xcode-install 通过 CLI 管理 xcode 版本。这是您的设置中的一个关键区别。
但是,Jenkins 中的 $PATH 环境可能存在恶作剧。根据我从您的描述中了解到的情况,您可以通过终端调用它来正常 运行 fastlane,但它在 Jenkins 中不起作用,对吗?检查 Jenkins 中的 $PATH 并确保它与终端中的 $PATH 匹配。 rbenv 和其他 ruby 版本管理器要求您在能够使用它之前执行一些启动代码(例如 eval "$(rbenv init -)"
在 rbenv 的情况下),然后需要设置正确的 $PATH 才能使一切正常正如预期的那样(即让它指向 Ruby 2.4 而不是 3.0)。