Jenkins: fastlane fails in cocoapods

Viewed 1339

I've been struggling to make cocoapods working in fastlane/jenkins. Here is the console output from 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

Everything just worked like a charm before adding cocoapods action in the lane of the Fastfile.

2 Answers

I ended up disabling bundle in cocoapods action like below.

cocoapods(use_bundle_exec: false)

Spent a lot of hours to discover it though. Hope it can help others later on.

As you have seen, the error is in the console log:

No such file or directory - bundle

The cocoapods action is built off of the base Fastlane::Action class. I dug in and found that if you have a Gemfile, fastlane believes that it can use the bundle method (from the bundler gem) to run a faster and more correct bundle exec pod install.

If you are not using bundler to run exact versions of the Ruby gems you are using, I would remove the Gemfile as it is a useless stub.

However, I strongly recommend that you use bundler to make sure that you are always using the exact versions of Ruby gems that you use to develop your fastlane code. It is faster too. Read more.

Related