Jenkins:fastlane 在 cocoapods 中失败

Jenkins: fastlane fails in cocoapods

我一直在努力让 cocoapods 在 fastlane/jenkins 中工作。 这是 Jenkins 的控制台输出:

[12:40:31]: [32m--- Step: cocoapods ---[0m
[12:40:31]: [32m-----------------------[0m
[12:40:31]: [36m$ bundle exec pod install[0m
+------------------+------+
|      [33mLane Context[0m       |
+------------------+------+
| DEFAULT_PLATFORM | ios  |
| PLATFORM_NAME    |      |
| LANE_NAME        | beta |
+------------------+------+
[12:40:31]: [31mNo such file or directory - bundle[0m

+------+-----------------------+-------------+
|              [32mfastlane summary[0m              |
+------+-----------------------+-------------+
| Step | Action                | Time (in s) |
+------+-----------------------+-------------+
| 1    | default_platform      | 0           |
| 2    | clean_build_artifacts | 0           |
|    | [31mcocoapods[0m             | 0           |
+------+-----------------------+-------------+

[12:40:31]: [31mfastlane finished with errors[0m

[12:40:31]: [33mError accessing file, this might be due to fastlane's directory handling[0m
[12:40:31]: [33mCheck out https://docs.fastlane.tools/advanced/#directory-behavior for more details[0m

在 Fastfile 的通道中添加 cocoapods 操作之前,一切都很顺利。

我最终在如下 cocoapods 操作中禁用了捆绑包。

cocoapods(use_bundle_exec: false)

虽然花了很多时间才发现它。希望以后能对其他人有所帮助。

如您所见,错误在控制台日志中:

No such file or directory - bundle

cocoapods 动作是在基础 Fastlane::Action class 的基础上构建的。深挖发现如果你有一个Gemfile,fastlane认为可以使用bundle方法(来自bundlergem) 到 运行 更快更正确 bundle exec pod install.

如果您使用的不是 bundler 到 运行 确切版本的 Ruby gem,我会删除 Gemfile,因为它没用存根。

但是,我强烈建议您使用 bundler 以确保您始终使用与您用来开发快速通道代码的 Ruby gem 的确切版本。它也更快。 Read more.