Giter Site home page Giter Site logo

siarheifedartsou / fastlane-plugin-versioning Goto Github PK

View Code? Open in Web Editor NEW
502.0 7.0 58.0 314 KB

Extends fastlane versioning actions. Allows to set/get versions without using agvtool and do some other small tricks.

License: MIT License

Ruby 100.00%
fastlane ios versioning plist automation

fastlane-plugin-versioning's Introduction

Versioning fastlane Plugin

CI Status License Gem fastlane Plugin Badge

Getting Started

This project is a fastlane plugin. To get started with fastlane-plugin-versioning, add it to your project by running:

fastlane add_plugin versioning

About versioning

Extends fastlane versioning actions. Allows to set/get versions without using agvtool and do some other small tricks. Note that all schemes that you pass to actions like increment_version_number_in_plist, increment_build_number_in_xcodeproj or get_info_plist_path in scheme parameter must be shared. To make your scheme shared go to "Manage schemes" in Xcode and tick "Shared" checkbox near your scheme.

what is this plist_build_setting_support stuff about?!

If you have a xcodeproject and have updated to Xcode 11, you'll notice that if you change your build and version numbers through the UI, the actual numbers are now stored inside build settings inside build configuration. The Info.plist file -- where they used to be stored -- now contains build setting variables (looks like $(CURRENT_PROJECT_VERSION) or $(MARKETING_VERSION), for build number and version number respectively). If you are at this migration 'turning point', you have two options. you can either:

  • Continue using the legacy method of inserting build and versions directly into plists by simply add plist_build_setting_support: true to your plist action parameters

OR

  • Change the command to be the xcodeproj variants - i.e. increment_version_number_in_xcodeproj or increment_build_number_in_xcodeproj these also apply to the getters of build and version numbers.
Warning for those migrating

Verify your plist files are using the build variables (new) $(CURRENT_PROJECT_VERSION) or $(MARKETING_VERSION). You can force this migration by simply modifying Version/Build fields for each one of your targets in UI. If you forget to make this change, or something else is writing and replacing it, xcodeproj actions will successfully update, but your build will have no reference to those values essentially becoming NOOP

We will leave the plist actions in, as for those consumers who are limited to their upgrade path.

Actions

increment_version_number_in_plist

Increment/set the version number in a Info.plist of specific target. Doesn't use agvtool (unlike default increment_version_number).

increment_version_number_in_plist # Automatically increment patch version number.
increment_version_number_in_plist(
  bump_type: 'patch' # Automatically increment patch version number
)
increment_version_number_in_plist(
  bump_type: 'minor' # Automatically increment minor version number
)
increment_version_number_in_plist(
  bump_type: 'minor',
  omit_zero_patch_version: true # if true omits zero in patch version(so 42.10.0 will become 42.10 and 42.10.1 will remain 42.10.1), default is false
)
increment_version_number_in_plist(
  bump_type: 'major' # Automatically increment major version number
)
increment_version_number_in_plist(
  version_number: '2.1.1' # Set a specific version number
)
increment_version_number_in_plist(
  # Automatically increment patch version number. Use App Store version number as a source.
  version_source: 'appstore'
)
increment_version_number_in_plist(
  # Automatically increment patch version number. Use App Store version number as a source.
  version_source: 'appstore',
  # optional two letter country code: 
  # specify if availability of your app is limited to a certain country
  country: 'at'
)

increment_version_number_in_plist(
  # specify specific version number (optional, omitting it increments patch version number)
  version_number: '2.1.1',   
  # (optional, you must specify the path to your main Xcode project if it is not in the project root directory
  # or if you have multiple xcodeproj's in the root directory)
  xcodeproj: './path/to/MyApp.xcodeproj'  
  # (optional)
  target: 'TestTarget' # or `scheme`
)

increment_version_number_in_plist(
  # specify specific version number (optional, omitting it increments patch version number)
  version_number: '2.1.1',   
  # (optional, you must specify the path to your main Xcode project if it is not in the project root directory
  # or if you have multiple xcodeproj's in the root directory)
  xcodeproj: './path/to/MyApp.xcodeproj'  
  # (optional)
  target: 'TestTarget' # or `scheme`
  plist_build_setting_support: true, # optional, and defaulting to false.
  # setting this will resolve the version number using the relevant build settings from your xcodeproj.
)

plist_build_setting_support

get_version_number_from_plist supports the plist_build_setting_support flag, and will either use the other parameters you pass to resolve a particular build configuration to edit, OR change ALL of them.

get_version_number_from_plist

Get the version number from an Info.plist of specific target. Doesn't use agvtool (unlike default get_version_number).

version = get_version_number_from_plist(xcodeproj: 'Project.xcodeproj', # optional
                                        target: 'TestTarget', # optional, or `scheme`
                                        # optional, must be specified if you have different Info.plist build settings
                                        # for different build configurations
                                        plist_build_setting_support: true, # optional, and defaulting to false. setting this will 
                                        # resolve the version number using the relevant build settings from your xcodeproj.
                                        build_configuration_name: 'Release')

plist_build_setting_support

get_version_number_from_plist supports the plist_build_setting_support flag, and will either use the other parameters you pass to resolve a particular build configuration to retrieve, OR pick the first it finds.

get_app_store_version_number

version = get_app_store_version_number(xcodeproj: 'Project.xcodeproj', # optional
                                       target: 'TestTarget', # optional, or `scheme`
                                       # optional, must be specified if you have different Info.plist build settings
                                       # for different build configurations
                                       build_configuration_name: 'Release')

version = get_app_store_version_number(xcodeproj: 'Project.xcodeproj', # optional
                                       target: 'TestTarget', # optional, or `scheme`
                                       # optional, must be specified if you have different Info.plist build settings
                                       # for different build configurations
                                       build_configuration_name: 'Release',
                                       # optional, must be specified for the lookup to succeed, 
                                       # if your app is only published to one country 
                                       # passed value must be a country code
                                       country: 'at')

version = get_app_store_version_number(bundle_id: 'com.apple.Numbers')

version = get_app_store_version_number(bundle_id: 'com.apple.Numbers',
                                       # optional two letter country code: 
                                       # specify if availability of your app is limited to a certain country
                                       country: 'at')

get_version_number_from_git_branch

# Extracts version number from git branch name.
# `pattern` is pattern by which version number will be found, `#` is place where action must find version number.
# Default value is 'release-#'(for instance for branch name 'releases/release-1.5.0' will extract '1.5.0')
version = get_version_number_from_git_branch(pattern: 'release-#')

increment_build_number_in_plist

Increment/set build number in Info.plist of specific target. Doesn't use agvtool (unlike default increment_version_number).

increment_build_number_in_plist # Automatically increments the last part of the build number.
increment_build_number_in_plist(
  build_number: 42 # set build number to 42
)

plist_build_setting_support

increment_build_number_in_plist supports the plist_build_setting_support flag, and will either use the other parameters you pass to resolve a particular build configuration to edit, OR change ALL of them.

get_build_number_from_plist

Get the build number from an Info.plist of specific target. Doesn't use agvtool (unlike default get_build_number).

version = get_build_number_from_plist(xcodeproj: "Project.xcodeproj", # optional
                                        target: 'TestTarget', # optional, or `scheme`
                                        plist_build_setting_support: true, # optional, and defaulting to false. setting this will 
                                        # resolve the build number using the relevant build settings from your xcodeproj.
                                        build_configuration_name: 'Release') # optional, must be specified if you have different Info.plist build settings for different build configurations

plist_build_setting_support

get_build_number_from_plist supports the plist_build_setting_support flag, and will either use the other parameters you pass to resolve a particular build configuration to retrieve, OR pick the first it finds.

get_build_number_from_xcodeproj

Get the build number from a xcodeproj - specific to a target. Doesn't use agvtool (unlike default get_build_number).

version = get_build_number_from_xcodeproj(xcodeproj: "Project.xcodeproj", # optional
                                        target: 'TestTarget', # optional, or `scheme`
                                        build_configuration_name: 'Release') # optional, must be specified if you have different Info.plist build settings for different build configurations

get_version_number_from_xcodeproj

Get the version number from a xcodeproj - specific to a target. Doesn't use agvtool (unlike default get_build_number).

version = get_version_number_from_xcodeproj(xcodeproj: 'Project.xcodeproj', # optional
                                        target: 'TestTarget', # optional, or `scheme`
                                        # optional, must be specified if you have different Info.plist build settings
                                        # for different build configurations
                                        build_configuration_name: 'Release')

increment_version_number_in_xcodeproj

Increment/set the version number in a xcodeproj of specific target. Doesn't use agvtool (unlike default increment_version_number).

increment_version_number_in_xcodeproj # Automatically increment patch version number.
increment_version_number_in_xcodeproj(
  bump_type: 'patch' # Automatically increment patch version number
)
increment_version_number_in_xcodeproj(
  bump_type: 'minor' # Automatically increment minor version number
)
increment_version_number_in_xcodeproj(
  bump_type: 'minor',
  omit_zero_patch_version: true # if true omits zero in patch version(so 42.10.0 will become 42.10 and 42.10.1 will remain 42.10.1), default is false
)
increment_version_number_in_xcodeproj(
  bump_type: 'major' # Automatically increment major version number
)
increment_version_number_in_xcodeproj(
  version_number: '2.1.1' # Set a specific version number
)
increment_version_number_in_xcodeproj(
  # Automatically increment patch version number. Use App Store version number as a source.
  version_source: 'appstore'
)
increment_version_number_in_xcodeproj(
  # Automatically increment patch version number. Use App Store version number as a source.
  version_source: 'appstore',
  # optional two letter country code: 
  # specify if availability of your app is limited to a certain country
  country: 'at'
)

increment_version_number_in_xcodeproj(
  # specify specific version number (optional, omitting it increments patch version number)
  version_number: '2.1.1',   
  # (optional, you must specify the path to your main Xcode project if it is not in the project root directory
  # or if you have multiple xcodeproj's in the root directory)
  xcodeproj: './path/to/MyApp.xcodeproj'  
  # (optional)
  target: 'TestTarget' # or `scheme`
)

get_version_number_from_plist

Get version number from Info.plist of specific target. Doesn't use agvtool (unlike default get_version_number).

version = get_version_number_from_plist(xcodeproj: 'Project.xcodeproj', # optional
                                        target: 'TestTarget', # optional, or `scheme`
                                        # optional, must be specified if you have different Info.plist build settings
                                        # for different build configurations
                                        plist_build_setting_support: true, # optional, and defaulting to false. setting this will 
                                        # resolve the version number using the relevant build settings from your xcodeproj.
                                        build_configuration_name: 'Release')

plist_build_setting_support

get_version_number_from_plist supports the plist_build_setting_support flag, and will either use the other parameters you pass to resolve a particular build configuration to retrieve, OR pick the first it finds.

get_app_store_version_number

version = get_app_store_version_number(xcodeproj: 'Project.xcodeproj', # optional
                                        target: 'TestTarget', # optional, or `scheme`
                                        # optional, must be specified if you have different Info.plist build settings
                                        # for different build configurations
                                        build_configuration_name: 'Release')
)
version = get_app_store_version_number(bundle_id: 'com.apple.Numbers')

get_info_plist_path

Get a path to target's Info.plist

get_info_plist_path(xcodeproj: 'Test.xcodeproj', # optional
                    target: 'TestTarget', # optional, or `scheme`
                    # optional, must be specified if you have different Info.plist build settings
                    # for different build configurations
                    build_configuration_name: 'Release')

ci_build_number

Get CI system build number. Determined using environment variables defined by CI systems. Supports Jenkins, Travis CI, Circle CI, TeamCity, GoCD, Bamboo, Gitlab CI, Xcode Server, Bitbucket Pipelines, BuddyBuild, AppVeyor. Returns 1 if build number cannot be determined.

increment_build_number_in_plist(
  build_number: ci_build_number
)

Issues and Feedback

SwiftPM

SwiftPM can be tedious when using this plugin, at least in terms of git history and xcodeprojs. Up until recently, there were a number of annoyances caused by this plugin (and a downstream dependency of it) because writing to a project file would clobber some of the comment metadata inside of the project file and replace them - leaving you with the actual version change, but a number of other, less desirable changes too to hand pick through (or give up this plugin for). The advice is, update to >= 0.4.6 of this plugin, and follow this advice - which is to make sure not to include the .git at the end of your SwiftPM dependency URLs.

New / Fresh projects

Note that you will need to set the build and version numbers through Xcode's UI at least once to use this plugin without weird nil:NilClass issues. See this issue for context

For any other issues and feedback about this plugin, please submit it to this repository.

Troubleshooting

For some more detailed help with plugins problems, check out the Plugins Troubleshooting doc in the main fastlane repo.

Using fastlane Plugins

For more information about how the fastlane plugin system works, check out the Plugins documentation in the main fastlane repo.

About fastlane

fastlane automates building, testing, and releasing your app for beta and app store distributions. To learn more about fastlane, check out fastlane.tools.

fastlane-plugin-versioning's People

Contributors

adrianbindc avatar alex-mcleod avatar awph avatar chuganzy avatar dependabot[bot] avatar dotdoom avatar georgmay avatar iby avatar jdouglas-nz avatar john-douglas-nz-xero avatar kaphacius avatar krausefx avatar l-yeiser avatar neilb01 avatar partikus avatar prathmeshranaut avatar raymondjacobson avatar rromanchuk avatar siarheifedartsou avatar skiritsa avatar stef-t avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

fastlane-plugin-versioning's Issues

Increment at the project instead of the target level.

It would be great if we could make increment_build_number_in_xcodeproj and increment_version_number_in_xcodeproj modify the CURRENT_PROJECT_VERSION and MARKETING_VERSION values at the project level instead of at an individual target level.

This is especially useful when you are releasing an application that includes multiple targets:

  • an application with an extension
  • an application with many frameworks

In my scenario, our application currently has 16 framework targets. I do not want to manually specify the exact same version information for all targets - instead I would prefer to define this information at the shared project level and let it be inherited by all project targets.

It is very rare in my opinion that you would actually genuinely want your CURRENT_PROJECT_VERSION to be set at a target-level.

undefined method `build_settings'

Hi

When i call the following code:

  version = get_build_number_from_plist(
        target: scheme_name,
        build_configuration_name: 'Release'
      )

      increment_build_number_in_plist(
        target: scheme_name,
        build_number: version + 1
      )

I get the error:

undefined method `build_settings' for nil:NilClass

bundler: failed to load command: fastlane (/usr/local/bin/fastlane)
NoMethodError: [!] undefined method `build_settings' for nil:NilClass

Any idea of the cause is it to do with this plugin as my script works with this code commented out?

Error Installing Extension

Command used: fastlane add_plugin versioning

user@computer:~$ system_profiler SPSoftwareDataType
Software:

    System Software Overview:

      System Version: macOS 10.12.4 (16E195)
      Kernel Version: Darwin 16.5.0
      Boot Volume: Mac
      Boot Mode: Normal
      Computer Name: computer
      User Name: <redacted>
      Secure Virtual Memory: Enabled
      System Integrity Protection: Enabled
      Time since boot: 1 day 15:41

I'm encountering an error installing this extension due to a Gem requirement.

user@computer:~/Downloads/wkd-native-master$ fastlane add_plugin versioning
+----------------------------+---------+------------------------------------+
|                               Used plugins                                |
+----------------------------+---------+------------------------------------+
| Plugin                     | Version | Action                             |
+----------------------------+---------+------------------------------------+
| fastlane-plugin-versioning | 0.2.6   | get_app_store_version_number       |
|                            |         | get_build_number_from_plist        |
|                            |         | get_info_plist_path                |
|                            |         | get_version_number_from_git_branch |
|                            |         | get_version_number_from_plist      |
|                            |         | increment_build_number_in_plist    |
|                            |         | increment_version_number_in_plist  |
+----------------------------+---------+------------------------------------+

[18:20:07]: Make sure to commit your Gemfile, Gemfile.lock and Pluginfile to version control
Installing plugin dependencies...
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    current directory: /Users/user/.fastlane/bin/bundle/lib/ruby/gems/2.2.0/gems/unf_ext-0.0.7.3/ext/unf_ext
/Users/user/.fastlane/bin/bundle/bin/ruby -r ./siteconf20170414-18783-16bj6os.rb extconf.rb 
checking for main() in -lstdc++... *** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers.  Check the mkmf.log file for more details.  You may
need configuration options.

Provided configuration options:
	--with-opt-dir
	--without-opt-dir
	--with-opt-include
	--without-opt-include=${opt-dir}/include
	--with-opt-lib
	--without-opt-lib=${opt-dir}/lib
	--with-make-prog
	--without-make-prog
	--srcdir=.
	--curdir
	--ruby=/Users/user/.fastlane/bin/bundle/bin/$(RUBY_BASE_NAME)
	--with-static-libstdc++
	--without-static-libstdc++
	--with-stdc++lib
	--without-stdc++lib
/Users/user/.fastlane/bin/bundle/lib/ruby/2.2.0/mkmf.rb:456:in `try_do': The compiler failed to generate an executable
file. (RuntimeError)
You have to install development tools first.
	from /Users/user/.fastlane/bin/bundle/lib/ruby/2.2.0/mkmf.rb:541:in `try_link0'
	from /Users/user/.fastlane/bin/bundle/lib/ruby/2.2.0/mkmf.rb:556:in `try_link'
	from /Users/user/.fastlane/bin/bundle/lib/ruby/2.2.0/mkmf.rb:735:in `try_func'
	from /Users/user/.fastlane/bin/bundle/lib/ruby/2.2.0/mkmf.rb:966:in `block in have_library'
	from /Users/user/.fastlane/bin/bundle/lib/ruby/2.2.0/mkmf.rb:911:in `block in checking_for'
	from /Users/user/.fastlane/bin/bundle/lib/ruby/2.2.0/mkmf.rb:351:in `block (2 levels) in postpone'
	from /Users/user/.fastlane/bin/bundle/lib/ruby/2.2.0/mkmf.rb:321:in `open'
	from /Users/user/.fastlane/bin/bundle/lib/ruby/2.2.0/mkmf.rb:351:in `block in postpone'
	from /Users/user/.fastlane/bin/bundle/lib/ruby/2.2.0/mkmf.rb:321:in `open'
	from /Users/user/.fastlane/bin/bundle/lib/ruby/2.2.0/mkmf.rb:347:in `postpone'
	from /Users/user/.fastlane/bin/bundle/lib/ruby/2.2.0/mkmf.rb:910:in `checking_for'
	from /Users/user/.fastlane/bin/bundle/lib/ruby/2.2.0/mkmf.rb:961:in `have_library'
	from extconf.rb:6:in `<main>'

To see why this extension failed to compile, please check the mkmf.log which can be found here:

  /Users/user/.fastlane/bin/bundle/lib/ruby/gems/2.2.0/extensions/x86_64-darwin-15/2.2.0-static/unf_ext-0.0.7.3/mkmf.log

extconf failed, exit code 1

Gem files will remain installed in /Users/user/.fastlane/bin/bundle/lib/ruby/gems/2.2.0/gems/unf_ext-0.0.7.3 for
inspection.
Results logged to
/Users/user/.fastlane/bin/bundle/lib/ruby/gems/2.2.0/extensions/x86_64-darwin-15/2.2.0-static/unf_ext-0.0.7.3/gem_make.out

An error occurred while installing unf_ext (0.0.7.3), and Bundler cannot continue.
Make sure that `gem install unf_ext -v '0.0.7.3'` succeeds before bundling.

Logs:

user@computer:~/Downloads/wkd-native-master$ cat /Users/user/.fastlane/bin/bundle/lib/ruby/gems/2.2.0/extensions/x86_64-darwin-15/2.2.0-static/unf_ext-0.0.7.3/mkmf.log
"/usr/bin/clang -o conftest -I/Users/user/.fastlane/bin/bundle/include/ruby-2.2.0/x86_64-darwin15 -I/Users/user/.fastlane/bin/bundle/include/ruby-2.2.0/ruby/backward -I/Users/user/.fastlane/bin/bundle/include/ruby-2.2.0 -I. -I/Users/crashlytics/buildAgent/work/2484be8b71880c21/bundle-2.13.0/fastlane_lib/dependencies/include -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -D_DARWIN_UNLIMITED_SELECT -D_REENTRANT   -mmacosx-version-min=10.10 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk -pipe conftest.c  -L. -L/Users/user/.fastlane/bin/bundle/lib -L. -L/Users/crashlytics/buildAgent/work/2484be8b71880c21/bundle-2.13.0/fastlane_lib/dependencies/lib -fstack-protector     -lruby-static -framework CoreFoundation  -lpthread -ldl -lobjc "
clang: warning: no such sysroot directory: '/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk' [-Wmissing-sysroot]
In file included from conftest.c:1:
In file included from /Users/user/.fastlane/bin/bundle/include/ruby-2.2.0/ruby.h:33:
In file included from /Users/user/.fastlane/bin/bundle/include/ruby-2.2.0/ruby/ruby.h:29:
/Users/user/.fastlane/bin/bundle/include/ruby-2.2.0/ruby/defines.h:26:10: fatal error: 'stdio.h' file not found
#include <stdio.h>
         ^
1 error generated.
checked program was:
/* begin */
1: #include "ruby.h"
2: 
3: int main(int argc, char **argv)
4: {
5:   return 0;
6: }
/* end */

I don't have MacOSX10.11.sdk but i do have:

user@computer:~/Downloads/wkd-native-master$ ls '/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk'
SDKSettings.plist System            usr

Undefined method `gsub' for nil:NilClass

Since version 0.2.6 I'm getting this exception with macOS target. It used to happen with 0.2.7 and I remember coming across a similar issue somewhere, apparently it was different. When I revert to 0.2.6, everything works.

/usr/local/opt/gem/gems/fastlane-plugin-versioning-0.2.8/lib/fastlane/plugin/versioning/actions/get_info_plist_path.rb:49:in `find_path_using_target': [!] undefined method `gsub' for nil:NilClass (NoMethodError)
	from /usr/local/opt/gem/gems/fastlane-plugin-versioning-0.2.8/lib/fastlane/plugin/versioning/actions/get_info_plist_path.rb:18:in `run'
	from /usr/local/opt/gem/gems/fastlane-plugin-versioning-0.2.8/lib/fastlane/plugin/versioning/actions/get_build_number_from_plist.rb:8:in `run'
	from /Users/ianbytchek/Development/gifox/build/fastlane/actions/abstract.rb:66:in `get_build'
	from /Users/ianbytchek/Development/gifox/build/fastlane/actions/abstract.rb:74:in `get_version_with_build'
	from /Users/ianbytchek/Development/gifox/build/fastlane/actions/abstract.rb:30:in `get_archive_path'
	from /Users/ianbytchek/Development/gifox/build/fastlane/actions/xcode_archive.rb:14:in `run'
	from /usr/local/opt/gem/gems/fastlane-2.58.0/fastlane/lib/fastlane/runner.rb:252:in `block (2 levels) in execute_action'
	from /usr/local/opt/gem/gems/fastlane-2.58.0/fastlane/lib/fastlane/actions/actions_helper.rb:50:in `execute_action'
	from /usr/local/opt/gem/gems/fastlane-2.58.0/fastlane/lib/fastlane/runner.rb:230:in `block in execute_action'
	from /usr/local/opt/gem/gems/fastlane-2.58.0/fastlane/lib/fastlane/runner.rb:226:in `chdir'
	from /usr/local/opt/gem/gems/fastlane-2.58.0/fastlane/lib/fastlane/runner.rb:226:in `execute_action'
	from /usr/local/opt/gem/gems/fastlane-2.58.0/fastlane/lib/fastlane/runner.rb:148:in `trigger_action_by_name'
	from /usr/local/opt/gem/gems/fastlane-2.58.0/fastlane/lib/fastlane/fast_file.rb:146:in `method_missing'
	from lanes/main.rb:5:in `block (2 levels) in parsing_binding'
	from /usr/local/opt/gem/gems/fastlane-2.58.0/fastlane/lib/fastlane/lane.rb:33:in `call'
	from /usr/local/opt/gem/gems/fastlane-2.58.0/fastlane/lib/fastlane/runner.rb:49:in `block in execute'
	from /usr/local/opt/gem/gems/fastlane-2.58.0/fastlane/lib/fastlane/runner.rb:45:in `chdir'
	from /usr/local/opt/gem/gems/fastlane-2.58.0/fastlane/lib/fastlane/runner.rb:45:in `execute'
	from /usr/local/opt/gem/gems/fastlane-2.58.0/fastlane/lib/fastlane/lane_manager.rb:52:in `cruise_lane'
	from /usr/local/opt/gem/gems/fastlane-2.58.0/fastlane/lib/fastlane/command_line_handler.rb:30:in `handle'
	from /usr/local/opt/gem/gems/fastlane-2.58.0/fastlane/lib/fastlane/commands_generator.rb:104:in `block (2 levels) in run'
	from /usr/local/opt/gem/gems/commander-fastlane-4.4.5/lib/commander/command.rb:178:in `call'
	from /usr/local/opt/gem/gems/commander-fastlane-4.4.5/lib/commander/command.rb:153:in `run'
	from /usr/local/opt/gem/gems/commander-fastlane-4.4.5/lib/commander/runner.rb:476:in `run_active_command'
	from /usr/local/opt/gem/gems/fastlane-2.58.0/fastlane_core/lib/fastlane_core/ui/fastlane_runner.rb:64:in `run!'
	from /usr/local/opt/gem/gems/commander-fastlane-4.4.5/lib/commander/delegates.rb:15:in `run!'
	from /usr/local/opt/gem/gems/fastlane-2.58.0/fastlane/lib/fastlane/commands_generator.rb:303:in `run'
	from /usr/local/opt/gem/gems/fastlane-2.58.0/fastlane/lib/fastlane/commands_generator.rb:42:in `start'
	from /usr/local/opt/gem/gems/fastlane-2.58.0/fastlane/lib/fastlane/cli_tools_distributor.rb:66:in `take_off'
	from /usr/local/opt/gem/gems/fastlane-2.58.0/bin/fastlane:20:in `<top (required)>'
	from /usr/local/opt/gem/bin/fastlane:22:in `load'
	from /usr/local/opt/gem/bin/fastlane:22:in `<main>'

error when try to increment one of the different target in my project

Thank you very much for your plugin. But I have trouble and want to fix it. I have project with multiple targets and each of them has different build number. I want to get current build number of the target and increment it. This is my example:

project = './CoreFrameworkApp/CoreFrameworkApp.xcodeproj'
target = 'Demo'
version = get_build_number_from_plist(xcodeproj: project,
                                        target: target,
                                        build_configuration_name: 'Release').to_i + 1
###################################
platform :ios do
  desc "Builds, achieves and uploads ipa to TestFlight"
  lane :testflight_lane do
	cert
	sigh
	increment_build_number_in_plist(
  		build_number: version.to_s,
  		target: target,
	)
	gym(
	workspace: "MyProject.xcworkspace",
        scheme: "Demo",
      	configuration: "Release",
      	clean: true,
      	output_directory: "./build",
      	output_name: "#{target}.ipa",
	)
	upload_to_testflight(
           skip_submission: true,
           skip_waiting_for_build_processing: true
    )
  end
end

I have error message: 'no implicit conversion of nil into String'. What does it mean?
Thank you very much for help.

Running actions replaces Swift Package Manager project file labels with generic names

When I run e.g. increment_version_number_in_xcodeproj:

 increment_version_number_in_xcodeproj(
     xcodeproj: PROJECT_PATH,
     bump_type: options[:bump_type],
     scheme: SCHEME_PROD
)

It runs xcodebuild with a -resolvePackageDependencies flag, and then it replaces all the SPM specific names in the project file with generic things like RemoteSwiftPackageReference SwiftPackageProductDependency and BuildFile. Running regular fastlane actions does not do this. The project still compiles and runs though, since I guess these names are just commented out labels, but it would still be preferable for this not to happen (because those labels are helpful and because I don't want to have to discard git changes every time I run fastlane with this plugin).

For example:

B2CC9E5525647C9C00AC7158 /* Sentry in Frameworks */ = {isa = PBXBuildFile; productRef = B2CC9E5425647C9C00AC7158 /* Sentry */; };

becomes:

B2CC9E5525647C9C00AC7158 /* BuildFile in Frameworks */ = {isa = PBXBuildFile; productRef = B2CC9E5425647C9C00AC7158 /* SwiftPackageProductDependency */; };

This SO issue is similar but it is talking about SwiftLint and has no solution yet.

Also, if you add / remove files within your Xcode project (in the Xcode application) the project file reverts all these changes.

Add support for fetching App Store build number

Right now, there's a fastlane action app_store_build_number that can be used to fetch the build number that is live in the App Store, and there's a get_app_store_version_number action in this plugin to fetch the version number. It seems unnecessary to have to call two different methods for what is essentially related information. I'd love if I could reduce this to one call in my Fastfile instead of two.

Update major build number to specific one

Hi, I've just wonder how can I update major build number depending on the lane that is being run?

I have 3 different lanes, and I want override major number when gym the app.

increment_build_number_in_xcodeproj with scheme throws an error

When running with the following parameters:

increment_build_number_in_xcodeproj(
      scheme: "Development",
      build_configuration_name: "Development",
      xcodeproj: "myapp.xcodeproj"
    )

I get the following error:

        27: from /usr/local/bin/fastlane:23:in `<main>'
        26: from /usr/local/bin/fastlane:23:in `load'
        25: from /Library/Ruby/Gems/2.6.0/gems/fastlane-2.168.0/bin/fastlane:23:in `<top (required)>'
        24: from /Library/Ruby/Gems/2.6.0/gems/fastlane-2.168.0/fastlane/lib/fastlane/cli_tools_distributor.rb:119:in `take_off'
        23: from /Library/Ruby/Gems/2.6.0/gems/fastlane-2.168.0/fastlane/lib/fastlane/commands_generator.rb:41:in `start'
        22: from /Library/Ruby/Gems/2.6.0/gems/fastlane-2.168.0/fastlane/lib/fastlane/commands_generator.rb:352:in `run'
        21: from /Library/Ruby/Gems/2.6.0/gems/commander-fastlane-4.4.6/lib/commander/delegates.rb:15:in `run!'
        20: from /Library/Ruby/Gems/2.6.0/gems/fastlane-2.168.0/fastlane_core/lib/fastlane_core/ui/fastlane_runner.rb:76:in `run!'
        19: from /Library/Ruby/Gems/2.6.0/gems/commander-fastlane-4.4.6/lib/commander/runner.rb:476:in `run_active_command'
        18: from /Library/Ruby/Gems/2.6.0/gems/commander-fastlane-4.4.6/lib/commander/command.rb:153:in `run'
        17: from /Library/Ruby/Gems/2.6.0/gems/commander-fastlane-4.4.6/lib/commander/command.rb:178:in `call'
        16: from /Library/Ruby/Gems/2.6.0/gems/fastlane-2.168.0/fastlane/lib/fastlane/commands_generator.rb:108:in `block (2 levels) in run'
        15: from /Library/Ruby/Gems/2.6.0/gems/fastlane-2.168.0/fastlane/lib/fastlane/command_line_handler.rb:36:in `handle'
        14: from /Library/Ruby/Gems/2.6.0/gems/fastlane-2.168.0/fastlane/lib/fastlane/lane_manager.rb:47:in `cruise_lane'
        13: from /Library/Ruby/Gems/2.6.0/gems/fastlane-2.168.0/fastlane/lib/fastlane/runner.rb:45:in `execute'
        12: from /Library/Ruby/Gems/2.6.0/gems/fastlane-2.168.0/fastlane/lib/fastlane/runner.rb:45:in `chdir'
        11: from /Library/Ruby/Gems/2.6.0/gems/fastlane-2.168.0/fastlane/lib/fastlane/runner.rb:49:in `block in execute'
        10: from /Library/Ruby/Gems/2.6.0/gems/fastlane-2.168.0/fastlane/lib/fastlane/lane.rb:33:in `call'
         9: from Fastfile:21:in `block (2 levels) in parsing_binding'
         8: from /Library/Ruby/Gems/2.6.0/gems/fastlane-2.168.0/fastlane/lib/fastlane/fast_file.rb:159:in `method_missing'
         7: from /Library/Ruby/Gems/2.6.0/gems/fastlane-2.168.0/fastlane/lib/fastlane/runner.rb:157:in `trigger_action_by_name'
         6: from /Library/Ruby/Gems/2.6.0/gems/fastlane-2.168.0/fastlane/lib/fastlane/runner.rb:229:in `execute_action'
         5: from /Library/Ruby/Gems/2.6.0/gems/fastlane-2.168.0/fastlane/lib/fastlane/runner.rb:229:in `chdir'
         4: from /Library/Ruby/Gems/2.6.0/gems/fastlane-2.168.0/fastlane/lib/fastlane/runner.rb:255:in `block in execute_action'
         3: from /Library/Ruby/Gems/2.6.0/gems/fastlane-2.168.0/fastlane/lib/fastlane/actions/actions_helper.rb:69:in `execute_action'
         2: from /Library/Ruby/Gems/2.6.0/gems/fastlane-2.168.0/fastlane/lib/fastlane/runner.rb:263:in `block (2 levels) in execute_action'
         1: from /Library/Ruby/Gems/2.6.0/gems/fastlane-plugin-versioning-0.4.4/lib/fastlane/plugin/versioning/actions/increment_build_number_in_xcodeproj.rb:25:in `run'
/Library/Ruby/Gems/2.6.0/gems/fastlane-plugin-versioning-0.4.4/lib/fastlane/plugin/versioning/actions/increment_build_number_in_xcodeproj.rb:77:in `set_build_number_using_scheme': [!] undefined method `[]=' for nil:NilClass (NoMethodError)

Looking at the source code for set_build_number_using_scheme it has this line:
project.build_settings["CURRENT_PROJECT_VERSION"] = next_build_number

It looks like project.build_settings is a getter that returns the value for a given key. Unfortunately, it's not a setter for the build settings.

Please advise and thank you for putting this plugin together.

Bug after call versioning

Hi,

in my info.plist file after the change of version, I have the l'option of text because in French but saved with the l&#39;option

cordially

Path for pods project is not the proper one

The setup is a library (specifically a private pod).
We have at the root directory the _Pods.xcodeproj, the fastlane dir and the Example folder (which contains the workspace and other files).
When trying to increment my library target, fastlane gives me the error :

increment_version_number_in_plist(
bump_type: type, # Automatically increment minor version number
xcodeproj: "_Pods.xcodeproj",
target: 'TEST' # or scheme
)

No such file or directory @ rb_sysopen - /Users/tnoah/Code/toto/Target Support Files/TEST/TEST-Info.plist

The path should be

/Users/tnoah/Code/toto/Example/Pods/Target Support Files/TEST/TEST-Info.plist

I assume it comes from the fact that the plugin does not support by default incrementing the version of a pod.

Is there a quickfix for this?
Thanks

GetInfoPlistPathAction get the wrong plist path

89ce9a1d-ef9a-4f90-8bd3-4488e53e3ce4

Here is the setting:

increment_build_number_in_plist(
      build_number: "23",
      xcodeproj: './Heihei/Heihei.xcodeproj'
      target: "Heihei"
    )

Get the wrong Info.plist , should be

/Source/heihei_ios/Heihei/Heihei/Info.plist

not

/Source/heihei_ios/Heihei/Info.plist

image

get_version_number_from_xcodeproj and get_build_number_from_xcodeproj causing "Unknown method 'plist'"

Hi, I have a project where these values are set with $(MARKETING_VERSION) for bundle version string and $(CURRENT_PROJECT_VERSION) for bundle version.

I am getting this error:

[23:04:04]: ----------------------------------------
[23:04:04]: --- Step: Verifying fastlane version ---
[23:04:04]: ----------------------------------------
[23:04:04]: Your fastlane version 2.144.0 matches the minimum requirement of 1.109.0  ✅
[23:04:04]: ------------------------------
[23:04:04]: --- Step: default_platform ---
[23:04:04]: ------------------------------
[23:04:04]: The `generated_fastfile_id` action was deprecated, you can remove the line from your `Fastfile`
[23:04:04]: Driving the lane 'bla' 🚀
[23:04:04]: -----------------------------------------------
[23:04:04]: --- Step: get_version_number_from_xcodeproj ---
[23:04:04]: -----------------------------------------------
[23:04:05]: Unknown method 'plist'
+------------------+-----+
|      Lane Context      |
+------------------+-----+
| DEFAULT_PLATFORM | ios |
| PLATFORM_NAME    |     |
| LANE_NAME        | bla |
+------------------+-----+
[23:04:05]: To call another action from an action use `other_action.plist` instead

By removing build_configuration_name: 'Release' it's working now. But it still a bug, no?

No implicit conversion of nil into String

Hi,

since fastlane 2.57 i get the following error with increment_build_number_in_plist.

This is how i call it in Fastfile:

increment_build_number_in_plist( build_number: ENV["BUILD_NUMBER"], scheme:betaAppScheme )

/Users/jenkins/.gem/ruby/2.5.0/gems/fastlane-2.75.1/fastlane_core/lib/fastlane_core/project.rb:81:in expand_path': �[31m[!] no implicit conversion of nil into String�[0m (TypeError) from /Users/jenkins/.gem/ruby/2.5.0/gems/fastlane-2.75.1/fastlane_core/lib/fastlane_core/project.rb:81:in initialize'
from /usr/local/lib/ruby/gems/2.5.0/gems/fastlane-plugin-versioning-0.3.3/lib/fastlane/plugin/versioning/actions/get_info_plist_path.rb:58:in new' from /usr/local/lib/ruby/gems/2.5.0/gems/fastlane-plugin-versioning-0.3.3/lib/fastlane/plugin/versioning/actions/get_info_plist_path.rb:58:in find_path_using_scheme'
from /usr/local/lib/ruby/gems/2.5.0/gems/fastlane-plugin-versioning-0.3.3/lib/fastlane/plugin/versioning/actions/get_info_plist_path.rb:20:in run' from /usr/local/lib/ruby/gems/2.5.0/gems/fastlane-plugin-versioning-0.3.3/lib/fastlane/plugin/versioning/actions/increment_build_number_in_plist.rb:17:in run'
from /Users/jenkins/.gem/ruby/2.5.0/gems/fastlane-2.75.1/fastlane/lib/fastlane/runner.rb:253:in block (2 levels) in execute_action' from /Users/jenkins/.gem/ruby/2.5.0/gems/fastlane-2.75.1/fastlane/lib/fastlane/actions/actions_helper.rb:50:in execute_action'
from /Users/jenkins/.gem/ruby/2.5.0/gems/fastlane-2.75.1/fastlane/lib/fastlane/runner.rb:231:in block in execute_action' from /Users/jenkins/.gem/ruby/2.5.0/gems/fastlane-2.75.1/fastlane/lib/fastlane/runner.rb:227:in chdir'
from /Users/jenkins/.gem/ruby/2.5.0/gems/fastlane-2.75.1/fastlane/lib/fastlane/runner.rb:227:in execute_action' from /Users/jenkins/.gem/ruby/2.5.0/gems/fastlane-2.75.1/fastlane/lib/fastlane/runner.rb:148:in trigger_action_by_name'
from /Users/jenkins/.gem/ruby/2.5.0/gems/fastlane-2.75.1/fastlane/lib/fastlane/fast_file.rb:148:in method_missing' from Fastfile:24:in block in parsing_binding'
from /Users/jenkins/.gem/ruby/2.5.0/gems/fastlane-2.75.1/fastlane/lib/fastlane/lane.rb:33:in call' from /Users/jenkins/.gem/ruby/2.5.0/gems/fastlane-2.75.1/fastlane/lib/fastlane/runner.rb:201:in try_switch_to_lane'
from /Users/jenkins/.gem/ruby/2.5.0/gems/fastlane-2.75.1/fastlane/lib/fastlane/runner.rb:156:in trigger_action_by_name' from /Users/jenkins/.gem/ruby/2.5.0/gems/fastlane-2.75.1/fastlane/lib/fastlane/fast_file.rb:148:in method_missing'
from Fastfile:63:in block in parsing_binding' from /Users/jenkins/.gem/ruby/2.5.0/gems/fastlane-2.75.1/fastlane/lib/fastlane/lane.rb:33:in call'
from /Users/jenkins/.gem/ruby/2.5.0/gems/fastlane-2.75.1/fastlane/lib/fastlane/runner.rb:49:in block in execute' from /Users/jenkins/.gem/ruby/2.5.0/gems/fastlane-2.75.1/fastlane/lib/fastlane/runner.rb:45:in chdir'
from /Users/jenkins/.gem/ruby/2.5.0/gems/fastlane-2.75.1/fastlane/lib/fastlane/runner.rb:45:in execute' from /Users/jenkins/.gem/ruby/2.5.0/gems/fastlane-2.75.1/fastlane/lib/fastlane/lane_manager.rb:56:in cruise_lane'
from /Users/jenkins/.gem/ruby/2.5.0/gems/fastlane-2.75.1/fastlane/lib/fastlane/command_line_handler.rb:34:in handle' from /Users/jenkins/.gem/ruby/2.5.0/gems/fastlane-2.75.1/fastlane/lib/fastlane/commands_generator.rb:107:in block (2 levels) in run'
from /usr/local/lib/ruby/gems/2.5.0/gems/commander-fastlane-4.4.5/lib/commander/command.rb:178:in call' from /usr/local/lib/ruby/gems/2.5.0/gems/commander-fastlane-4.4.5/lib/commander/command.rb:153:in run'
from /usr/local/lib/ruby/gems/2.5.0/gems/commander-fastlane-4.4.5/lib/commander/runner.rb:476:in run_active_command' from /Users/jenkins/.gem/ruby/2.5.0/gems/fastlane-2.75.1/fastlane_core/lib/fastlane_core/ui/fastlane_runner.rb:75:in run!'
from /usr/local/lib/ruby/gems/2.5.0/gems/commander-fastlane-4.4.5/lib/commander/delegates.rb:15:in run!' from /Users/jenkins/.gem/ruby/2.5.0/gems/fastlane-2.75.1/fastlane/lib/fastlane/commands_generator.rb:336:in run'
from /Users/jenkins/.gem/ruby/2.5.0/gems/fastlane-2.75.1/fastlane/lib/fastlane/commands_generator.rb:42:in start' from /Users/jenkins/.gem/ruby/2.5.0/gems/fastlane-2.75.1/fastlane/lib/fastlane/cli_tools_distributor.rb:94:in take_off'
from /Users/jenkins/.gem/ruby/2.5.0/gems/fastlane-2.75.1/bin/fastlane:20:in <top (required)>' from /usr/local/bin/fastlane:23:in load'
from /usr/local/bin/fastlane:23:in `

'

I've tried lot of things. I've updated fastlane, i've updated ruby, but nothing works.

Thanks Bernhard

Incrementing Minor Version Format

Incrementing minor version number should create a version number of the following format: x.x instead of x.x.0.
This is probably a question of style, but would be great to be able to specify this behaviour.

Error when running increment_version_number_in_xcodeproj with scheme and build configuration

When I execute increment_version_number_in_xcodeproj(scheme: "MyApp", build_configuration_name: "Release", bump_type: 'minor') I get the error

`set_version_number_using_scheme': \e[31m[!] undefined method `[]=' for nil:NilClass\e[0m (NoMethodError)

get_version_number_from_xcodeproj(scheme: "MyApp", build_configuration_name: "Release") works and returns 3.3.0

Error

Traceback (most recent call last):
        27: from /usr/local/Cellar/fastlane/2.181.0/libexec/bin/fastlane:23:in `<main>'
        26: from /usr/local/Cellar/fastlane/2.181.0/libexec/bin/fastlane:23:in `load'
        25: from /usr/local/Cellar/fastlane/2.181.0/libexec/gems/fastlane-2.181.0/bin/fastlane:23:in `<top (required)>'
        24: from /usr/local/Cellar/fastlane/2.181.0/libexec/gems/fastlane-2.181.0/fastlane/lib/fastlane/cli_tools_distributor.rb:122:in `take_off'
        23: from /usr/local/Cellar/fastlane/2.181.0/libexec/gems/fastlane-2.181.0/fastlane/lib/fastlane/commands_generator.rb:41:in `start'
        22: from /usr/local/Cellar/fastlane/2.181.0/libexec/gems/fastlane-2.181.0/fastlane/lib/fastlane/commands_generator.rb:352:in `run'
        21: from /usr/local/Cellar/fastlane/2.181.0/libexec/gems/commander-fastlane-4.4.6/lib/commander/delegates.rb:15:in `run!'
        20: from /usr/local/Cellar/fastlane/2.181.0/libexec/gems/fastlane-2.181.0/fastlane_core/lib/fastlane_core/ui/fastlane_runner.rb:76:in `run!'
        19: from /usr/local/Cellar/fastlane/2.181.0/libexec/gems/commander-fastlane-4.4.6/lib/commander/runner.rb:476:in `run_active_command'
        18: from /usr/local/Cellar/fastlane/2.181.0/libexec/gems/commander-fastlane-4.4.6/lib/commander/command.rb:153:in `run'
        17: from /usr/local/Cellar/fastlane/2.181.0/libexec/gems/commander-fastlane-4.4.6/lib/commander/command.rb:178:in `call'
        16: from /usr/local/Cellar/fastlane/2.181.0/libexec/gems/fastlane-2.181.0/fastlane/lib/fastlane/commands_generator.rb:108:in `block (2 levels) in run'
        15: from /usr/local/Cellar/fastlane/2.181.0/libexec/gems/fastlane-2.181.0/fastlane/lib/fastlane/command_line_handler.rb:36:in `handle'
        14: from /usr/local/Cellar/fastlane/2.181.0/libexec/gems/fastlane-2.181.0/fastlane/lib/fastlane/lane_manager.rb:47:in `cruise_lane'
        13: from /usr/local/Cellar/fastlane/2.181.0/libexec/gems/fastlane-2.181.0/fastlane/lib/fastlane/runner.rb:45:in `execute'
        12: from /usr/local/Cellar/fastlane/2.181.0/libexec/gems/fastlane-2.181.0/fastlane/lib/fastlane/runner.rb:45:in `chdir'
        11: from /usr/local/Cellar/fastlane/2.181.0/libexec/gems/fastlane-2.181.0/fastlane/lib/fastlane/runner.rb:49:in `block in execute'
        10: from /usr/local/Cellar/fastlane/2.181.0/libexec/gems/fastlane-2.181.0/fastlane/lib/fastlane/lane.rb:33:in `call'
         9: from Fastfile:28:in `block (2 levels) in parsing_binding'
         8: from /usr/local/Cellar/fastlane/2.181.0/libexec/gems/fastlane-2.181.0/fastlane/lib/fastlane/fast_file.rb:159:in `method_missing'
         7: from /usr/local/Cellar/fastlane/2.181.0/libexec/gems/fastlane-2.181.0/fastlane/lib/fastlane/runner.rb:157:in `trigger_action_by_name'
         6: from /usr/local/Cellar/fastlane/2.181.0/libexec/gems/fastlane-2.181.0/fastlane/lib/fastlane/runner.rb:229:in `execute_action'
         5: from /usr/local/Cellar/fastlane/2.181.0/libexec/gems/fastlane-2.181.0/fastlane/lib/fastlane/runner.rb:229:in `chdir'
         4: from /usr/local/Cellar/fastlane/2.181.0/libexec/gems/fastlane-2.181.0/fastlane/lib/fastlane/runner.rb:255:in `block in execute_action'
         3: from /usr/local/Cellar/fastlane/2.181.0/libexec/gems/fastlane-2.181.0/fastlane/lib/fastlane/actions/actions_helper.rb:69:in `execute_action'
         2: from /usr/local/Cellar/fastlane/2.181.0/libexec/gems/fastlane-2.181.0/fastlane/lib/fastlane/runner.rb:263:in `block (2 levels) in execute_action'
         1: from /usr/local/Cellar/fastlane/2.181.0/libexec/gems/fastlane-plugin-versioning-0.4.4/lib/fastlane/plugin/versioning/actions/increment_version_number_in_xcodeproj.rb:44:in `run'
/usr/local/Cellar/fastlane/2.181.0/libexec/gems/fastlane-plugin-versioning-0.4.4/lib/fastlane/plugin/versioning/actions/increment_version_number_in_xcodeproj.rb:71:in `set_version_number_using_scheme': undefined method `[]=' for nil:NilClass (NoMethodError)
        27: from /usr/local/Cellar/fastlane/2.181.0/libexec/bin/fastlane:23:in `<main>'
        26: from /usr/local/Cellar/fastlane/2.181.0/libexec/bin/fastlane:23:in `load'
        25: from /usr/local/Cellar/fastlane/2.181.0/libexec/gems/fastlane-2.181.0/bin/fastlane:23:in `<top (required)>'
        24: from /usr/local/Cellar/fastlane/2.181.0/libexec/gems/fastlane-2.181.0/fastlane/lib/fastlane/cli_tools_distributor.rb:122:in `take_off'
        23: from /usr/local/Cellar/fastlane/2.181.0/libexec/gems/fastlane-2.181.0/fastlane/lib/fastlane/commands_generator.rb:41:in `start'
        22: from /usr/local/Cellar/fastlane/2.181.0/libexec/gems/fastlane-2.181.0/fastlane/lib/fastlane/commands_generator.rb:352:in `run'
        21: from /usr/local/Cellar/fastlane/2.181.0/libexec/gems/commander-fastlane-4.4.6/lib/commander/delegates.rb:15:in `run!'
        20: from /usr/local/Cellar/fastlane/2.181.0/libexec/gems/fastlane-2.181.0/fastlane_core/lib/fastlane_core/ui/fastlane_runner.rb:76:in `run!'
        19: from /usr/local/Cellar/fastlane/2.181.0/libexec/gems/commander-fastlane-4.4.6/lib/commander/runner.rb:476:in `run_active_command'
        18: from /usr/local/Cellar/fastlane/2.181.0/libexec/gems/commander-fastlane-4.4.6/lib/commander/command.rb:153:in `run'
        17: from /usr/local/Cellar/fastlane/2.181.0/libexec/gems/commander-fastlane-4.4.6/lib/commander/command.rb:178:in `call'
        16: from /usr/local/Cellar/fastlane/2.181.0/libexec/gems/fastlane-2.181.0/fastlane/lib/fastlane/commands_generator.rb:108:in `block (2 levels) in run'
        15: from /usr/local/Cellar/fastlane/2.181.0/libexec/gems/fastlane-2.181.0/fastlane/lib/fastlane/command_line_handler.rb:36:in `handle'
        14: from /usr/local/Cellar/fastlane/2.181.0/libexec/gems/fastlane-2.181.0/fastlane/lib/fastlane/lane_manager.rb:47:in `cruise_lane'
        13: from /usr/local/Cellar/fastlane/2.181.0/libexec/gems/fastlane-2.181.0/fastlane/lib/fastlane/runner.rb:45:in `execute'
        12: from /usr/local/Cellar/fastlane/2.181.0/libexec/gems/fastlane-2.181.0/fastlane/lib/fastlane/runner.rb:45:in `chdir'
        11: from /usr/local/Cellar/fastlane/2.181.0/libexec/gems/fastlane-2.181.0/fastlane/lib/fastlane/runner.rb:49:in `block in execute'
        10: from /usr/local/Cellar/fastlane/2.181.0/libexec/gems/fastlane-2.181.0/fastlane/lib/fastlane/lane.rb:33:in `call'
         9: from Fastfile:28:in `block (2 levels) in parsing_binding'
         8: from /usr/local/Cellar/fastlane/2.181.0/libexec/gems/fastlane-2.181.0/fastlane/lib/fastlane/fast_file.rb:159:in `method_missing'
         7: from /usr/local/Cellar/fastlane/2.181.0/libexec/gems/fastlane-2.181.0/fastlane/lib/fastlane/runner.rb:157:in `trigger_action_by_name'
         6: from /usr/local/Cellar/fastlane/2.181.0/libexec/gems/fastlane-2.181.0/fastlane/lib/fastlane/runner.rb:229:in `execute_action'
         5: from /usr/local/Cellar/fastlane/2.181.0/libexec/gems/fastlane-2.181.0/fastlane/lib/fastlane/runner.rb:229:in `chdir'
         4: from /usr/local/Cellar/fastlane/2.181.0/libexec/gems/fastlane-2.181.0/fastlane/lib/fastlane/runner.rb:255:in `block in execute_action'
         3: from /usr/local/Cellar/fastlane/2.181.0/libexec/gems/fastlane-2.181.0/fastlane/lib/fastlane/actions/actions_helper.rb:69:in `execute_action'
         2: from /usr/local/Cellar/fastlane/2.181.0/libexec/gems/fastlane-2.181.0/fastlane/lib/fastlane/runner.rb:263:in `block (2 levels) in execute_action'
         1: from /usr/local/Cellar/fastlane/2.181.0/libexec/gems/fastlane-plugin-versioning-0.4.4/lib/fastlane/plugin/versioning/actions/increment_version_number_in_xcodeproj.rb:44:in `run'
/usr/local/Cellar/fastlane/2.181.0/libexec/gems/fastlane-plugin-versioning-0.4.4/lib/fastlane/plugin/versioning/actions/increment_version_number_in_xcodeproj.rb:71:in `set_version_number_using_scheme': \e[31m[!] undefined method `[]=' for nil:NilClass\e[0m (NoMethodError)

I believe I have narrowed the error down to this line in increment_version_number_in_xcodeproj but I'm not sure whats causing the error

project.build_settings["MARKETING_VERSION"] = next_version_number

I was able to get it working as intended by modifying the code for set_all_xcodeproj_version_numbers and looping through each config and comparing it with the build_configuration_name param I pass in

def self.set_version_number_using_scheme(params, next_version_number)
      project = Xcodeproj::Project.open(params[:xcodeproj])
      configs = project.objects.select { |obj| select_build_configuration_predicate(nil, obj) }
      configs.each do |config|
        if config.to_s === params[:build_configuration_name]
            config.build_settings["MARKETING_VERSION"] = next_version_number
        end
      end
      project.save
  end

Targets

MyApp

Relevant Schemes

MyApp
Stg_MyApp

Relevant Build configurations

Release
StgRelease

Build Settings Marketing Version

build settings marketing version

info.plist

info.plist

My setup

OSX 10.15.7
XCode 12.2
Fastlane 2.181.0
Versioning 0.4.4

How to change all targets version or build number?

I am trying to do so to change all targets version or build number at once:

def prepare_version(version)
    increment_version_number_in_plist(
      # specify specific version number (optional, omitting it increments patch version number)
      version_number: version,
      target: ['A', 'B', 'C']
    )
end

What I have to do now:

def prepare_version(version)
    increment_version_number_in_plist(
      # specify specific version number (optional, omitting it increments patch version number)
      version_number: version,
      target: 'A'
    )
    increment_version_number_in_plist(
      # specify specific version number (optional, omitting it increments patch version number)
      version_number: version,
      target: 'B'
    )
    increment_version_number_in_plist(
      # specify specific version number (optional, omitting it increments patch version number)
      version_number: version,
      target: 'C'
    )
end

Is there any proper way to do this?

Explicitly define plist path

Hey there, wondering if it's possible to just explicitly set the plist_path using this plugin? Problem I am facing is that the build number is updating my app target but can't find my notification target. Would be much simpler for me if I could just specify the paths to each of the info plists instead.

Thanks for the help!

increment_build_number_in_plist fails

In my project there are multiple targets, and even though action get_build_number_from_plist(target: target, plist_build_setting_support: true) retrieves correct build number,
increment_build_number_in_plist(target: target, plist_build_setting_support: true)
fails with error:

ArgumentError: [!] wrong number of arguments (given 0, expected 1)
  /usr/local/lib/ruby/gems/2.4.0/gems/xcodeproj-1.13.0/lib/xcodeproj/project.rb:654:in `build_settings'
  /usr/local/lib/ruby/gems/2.4.0/gems/fastlane-plugin-versioning-0.4.0/lib/fastlane/plugin/versioning/actions/increment_build_number_in_xcodeproj.rb:62:in `set_build_number_using_target'
  /usr/local/lib/ruby/gems/2.4.0/gems/fastlane-plugin-versioning-0.4.0/lib/fastlane/plugin/versioning/actions/increment_build_number_in_xcodeproj.rb:23:in `run'
  /usr/local/lib/ruby/gems/2.4.0/gems/fastlane-plugin-versioning-0.4.0/lib/fastlane/plugin/versioning/actions/increment_build_number_in_plist.rb:25:in `run'
  /usr/local/lib/ruby/gems/2.4.0/gems/fastlane-2.135.2/fastlane/lib/fastlane/runner.rb:256:in `block (2 levels) in execute_action'
  /usr/local/lib/ruby/gems/2.4.0/gems/fastlane-2.135.2/fastlane/lib/fastlane/actions/actions_helper.rb:50:in `execute_action'
  /usr/local/lib/ruby/gems/2.4.0/gems/fastlane-2.135.2/fastlane/lib/fastlane/runner.rb:235:in `block in execute_action'
  /usr/local/lib/ruby/gems/2.4.0/gems/fastlane-2.135.2/fastlane/lib/fastlane/runner.rb:227:in `chdir'
  /usr/local/lib/ruby/gems/2.4.0/gems/fastlane-2.135.2/fastlane/lib/fastlane/runner.rb:227:in `execute_action'
  /usr/local/lib/ruby/gems/2.4.0/gems/fastlane-2.135.2/fastlane/lib/fastlane/runner.rb:157:in `trigger_action_by_name'
  /usr/local/lib/ruby/gems/2.4.0/gems/fastlane-2.135.2/fastlane/lib/fastlane/fast_file.rb:159:in `method_missing'
  Fastfile:77:in `block (2 levels) in parsing_binding'
  /usr/local/lib/ruby/gems/2.4.0/gems/fastlane-2.135.2/fastlane/lib/fastlane/lane.rb:33:in `call'
  /usr/local/lib/ruby/gems/2.4.0/gems/fastlane-2.135.2/fastlane/lib/fastlane/runner.rb:49:in `block in execute'
  /usr/local/lib/ruby/gems/2.4.0/gems/fastlane-2.135.2/fastlane/lib/fastlane/runner.rb:45:in `chdir'
  /usr/local/lib/ruby/gems/2.4.0/gems/fastlane-2.135.2/fastlane/lib/fastlane/runner.rb:45:in `execute'
  /usr/local/lib/ruby/gems/2.4.0/gems/fastlane-2.135.2/fastlane/lib/fastlane/lane_manager.rb:56:in `cruise_lane'
  /usr/local/lib/ruby/gems/2.4.0/gems/fastlane-2.135.2/fastlane/lib/fastlane/command_line_handler.rb:36:in `handle'
  /usr/local/lib/ruby/gems/2.4.0/gems/fastlane-2.135.2/fastlane/lib/fastlane/commands_generator.rb:108:in `block (2 levels) in run'
  /usr/local/lib/ruby/gems/2.4.0/gems/commander-fastlane-4.4.6/lib/commander/command.rb:178:in `call'
  /usr/local/lib/ruby/gems/2.4.0/gems/commander-fastlane-4.4.6/lib/commander/command.rb:153:in `run'
  /usr/local/lib/ruby/gems/2.4.0/gems/commander-fastlane-4.4.6/lib/commander/runner.rb:476:in `run_active_command'
  /usr/local/lib/ruby/gems/2.4.0/gems/fastlane-2.135.2/fastlane_core/lib/fastlane_core/ui/fastlane_runner.rb:76:in `run!'
  /usr/local/lib/ruby/gems/2.4.0/gems/commander-fastlane-4.4.6/lib/commander/delegates.rb:15:in `run!'
  /usr/local/lib/ruby/gems/2.4.0/gems/fastlane-2.135.2/fastlane/lib/fastlane/commands_generator.rb:349:in `run'
  /usr/local/lib/ruby/gems/2.4.0/gems/fastlane-2.135.2/fastlane/lib/fastlane/commands_generator.rb:41:in `start'
  /usr/local/lib/ruby/gems/2.4.0/gems/fastlane-2.135.2/fastlane/lib/fastlane/cli_tools_distributor.rb:119:in `take_off'
  /usr/local/lib/ruby/gems/2.4.0/gems/fastlane-2.135.2/bin/fastlane:23:in `<top (required)>'
  /usr/local/bin/fastlane:23:in `load'
  /usr/local/bin/fastlane:23:in `<top (required)>'

New error: invalid parameters when specifying `build_number`

Up until this past week or so, increment_build_number_in_plist has been working well. However, in the past few days I'm getting the following errors when attempting to increment:

[19:20:44]: --------------------------------------------
[19:20:44]: --- Step: latest_testflight_build_number ---
[19:20:44]: --------------------------------------------
[19:20:44]: Login to App Store Connect (USER_EMAIL)
[19:20:46]: Login successful
[19:20:50]: Fetching the latest build number for any version
[19:20:52]: Latest upload for version 0.6 on ios platform is build: 9
[19:20:52]: You passed invalid parameters to 'increment_build_number_in_plist'.
[19:20:52]: Check out the error below and available options by running `fastlane action increment_build_number_in_plist`
[19:20:52]: Failure incrementing build number, using project base value.

I haven't changed my fastlane actions in the interim; these are the relevant lines of code (simplified slightly):

latest_tf = latest_testflight_build_number(
	platform: options[:platform]
)
build_num = latest_tf + CUSTOM_VAL
increment_build_number_in_plist({
	build_number: build_num,
	xcodeproj: proj
})

I've confirmed that build_num does get set to a valid integer. If I comment out the build_number parameter, then the command seems to work, though obviously it doesn't apply the desired custom build number, which is required in our CI/CD system.

I'm wondering if maybe this was just an update to Xcode & its agvtool that may have caused this error.

undefined method '[]' for nil:NilClass

sorry, I don't know that what happened。
I can some target, but some not.Are all calling the same method。

Here is an error。

[20:41:43]: --- Step: increment_build_number_in_plist ---
[20:41:43]: ---------------------------------------------
[20:41:43]: undefined method `[]' for nil:NilClass

[20:41:43]: Unable to find plist file at '/Users/laiyoung_/Documents/QT/QingTui_iPhone/${SRCROOT}/QingTui_iPhone/QingTui_Distribution/QingTui_Distribution.plist'
+------------------+-------------+
| Lane Context |
+------------------+-------------+
| DEFAULT_PLATFORM | ios |
| PLATFORM_NAME | ios |
| LANE_NAME | ios Archive |
| BUILD_NUMBER | true |
+------------------+-------------+
[20:41:43]: undefined method `split' for true:TrueClass

my method

private_lane :UpdateBuild_number do |options|
  qt_target_name = options[:qt_target_name]
  increment_build_number_in_plist(target: "QingTui_#{qt_target_name}") 
  increment_build_number_in_plist(target: "Share_#{qt_target_name}") 
  build_number = get_info_plist_value(path: "./QingTui_iPhone/QingTui_#{qt_target_name}/QingTui_#{qt_target_name}.plist", key: "CFBundleVersion")

  # git_commit(path: "./QingTui_iPhone", message: "update build_number to #{build_number}") 
  # push_to_git_remote 

  puts build_number
  build_number
end

thank you!

Error when using increment_version_number_in_xcodeproj

Im getting the following error when trying to run increment_version_number_in_xcodeproj

[17:36:14]: Unknown method 'set_version_number_using_target'
[17:36:14]: To call another action from an action use `other_action.set_version_number_using_target` instead

What I'm currently doing:

increment_version_number_in_xcodeproj(version_number: "3.8.2", xcodeproj: "./path/Proj.xcodeproj", target: "MyApp")

Versions installed:

Using commander-fastlane 4.4.6
Using fastlane 2.134.0
Using fastlane-plugin-versioning 0.4.0

Any thoughts? Thanks.

Provide a changelog

Could you please provide a changelog or annotate the releases accordingly? It would be nice to know what changed when updating this plugin.

Thanks!

Variables are not interpolated in xcodeproj

I have a project with INFOPLIST_FILE containing variables inside of it and apparently Xcodeproj doesn't support interpolation, so I'm getting this:

[01:34:14]: undefined method `[]' for nil:NilClass
[01:34:14]: Unable to find plist file at '…/$(inherited)/Project.plist'

On the other hand FastlaneCore::Project::build_settings uses the suggested approach in the above issue and provides correctly interpolated results. Can you please consider using that instead?

[!] undefined method `split' for nil:NilClass (NoMethodError)

Traceback:

Traceback (most recent call last):
	31: from /Users/robotex/.rbenv/versions/2.5.3/bin/fastlane:23:in `<main>'
	30: from /Users/robotex/.rbenv/versions/2.5.3/bin/fastlane:23:in `load'
	29: from /Users/robotex/.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/fastlane-2.136.0/bin/fastlane:23:in `<top (required)>'
	28: from /Users/robotex/.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/fastlane-2.136.0/fastlane/lib/fastlane/cli_tools_distributor.rb:119:in `take_off'
	27: from /Users/robotex/.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/fastlane-2.136.0/fastlane/lib/fastlane/commands_generator.rb:41:in `start'
	26: from /Users/robotex/.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/fastlane-2.136.0/fastlane/lib/fastlane/commands_generator.rb:349:in `run'
	25: from /Users/robotex/.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/commander-fastlane-4.4.6/lib/commander/delegates.rb:15:in `run!'
	24: from /Users/robotex/.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/fastlane-2.136.0/fastlane_core/lib/fastlane_core/ui/fastlane_runner.rb:76:in `run!'
	23: from /Users/robotex/.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/commander-fastlane-4.4.6/lib/commander/runner.rb:476:in `run_active_command'
	22: from /Users/robotex/.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/commander-fastlane-4.4.6/lib/commander/command.rb:153:in `run'
	21: from /Users/robotex/.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/commander-fastlane-4.4.6/lib/commander/command.rb:178:in `call'
	20: from /Users/robotex/.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/fastlane-2.136.0/fastlane/lib/fastlane/commands_generator.rb:108:in `block (2 levels) in run'
	19: from /Users/robotex/.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/fastlane-2.136.0/fastlane/lib/fastlane/command_line_handler.rb:36:in `handle'
	18: from /Users/robotex/.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/fastlane-2.136.0/fastlane/lib/fastlane/lane_manager.rb:56:in `cruise_lane'
	17: from /Users/robotex/.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/fastlane-2.136.0/fastlane/lib/fastlane/runner.rb:45:in `execute'
	16: from /Users/robotex/.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/fastlane-2.136.0/fastlane/lib/fastlane/runner.rb:45:in `chdir'
	15: from /Users/robotex/.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/fastlane-2.136.0/fastlane/lib/fastlane/runner.rb:49:in `block in execute'
	14: from /Users/robotex/.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/fastlane-2.136.0/fastlane/lib/fastlane/lane.rb:33:in `call'
	13: from Fastfile:25:in `block (2 levels) in parsing_binding'
	12: from /Users/robotex/.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/fastlane-2.136.0/fastlane/lib/fastlane/fast_file.rb:159:in `method_missing'
	11: from /Users/robotex/.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/fastlane-2.136.0/fastlane/lib/fastlane/runner.rb:146:in `trigger_action_by_name'
	10: from /Users/robotex/.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/fastlane-2.136.0/fastlane/lib/fastlane/runner.rb:204:in `try_switch_to_lane'
	 9: from /Users/robotex/.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/fastlane-2.136.0/fastlane/lib/fastlane/lane.rb:33:in `call'
	 8: from Fastfile:4281:in `block (2 levels) in parsing_binding'
	 7: from /Users/robotex/.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/fastlane-2.136.0/fastlane/lib/fastlane/fast_file.rb:159:in `method_missing'
	 6: from /Users/robotex/.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/fastlane-2.136.0/fastlane/lib/fastlane/runner.rb:157:in `trigger_action_by_name'
	 5: from /Users/robotex/.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/fastlane-2.136.0/fastlane/lib/fastlane/runner.rb:227:in `execute_action'
	 4: from /Users/robotex/.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/fastlane-2.136.0/fastlane/lib/fastlane/runner.rb:227:in `chdir'
	 3: from /Users/robotex/.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/fastlane-2.136.0/fastlane/lib/fastlane/runner.rb:235:in `block in execute_action'
	 2: from /Users/robotex/.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/fastlane-2.136.0/fastlane/lib/fastlane/actions/actions_helper.rb:50:in `execute_action'
	 1: from /Users/robotex/.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/fastlane-2.136.0/fastlane/lib/fastlane/runner.rb:256:in `block (2 levels) in execute_action'
/Users/robotex/.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/fastlane-plugin-versioning-0.4.2/lib/fastlane/plugin/versioning/actions/increment_build_number_in_plist.rb:9:in `run': [!] undefined method `split' for nil:NilClass (NoMethodError)

Code:

increment_build_number_in_plist(target: target, plist_build_setting_support: true)

Edit: we use a incremental integer as build number, maybe the plugin doesn't support it?

Can't install plugins

mac-04:tools gelldur$ sudo fastlane add_plugin versioning
[14:48:35]: Plugin 'fastlane-plugin-versioning' was added to './fastlane/Pluginfile'
[14:48:35]: It looks like fastlane plugins are not yet set up for this project.
[14:48:35]: fastlane will create a new Gemfile at path 'Gemfile'
[14:48:35]: This change is necessary for fastlane plugins to work
[14:48:35]: Should fastlane modify the Gemfile at path 'Gemfile' for you? (y/n)
y
[14:48:47]: Successfully modified 'Gemfile'
[14:48:47]: Make sure to commit your Gemfile, Gemfile.lock and Pluginfile to version control
Installing plugin dependencies...
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    current directory: /Users/gelldur/.fastlane/bin/bundle/lib/ruby/gems/2.2.0/gems/json-2.1.0/ext/json/ext/generator
/Users/gelldur/.fastlane/bin/bundle/bin/ruby -r ./siteconf20170613-66909-f3jt6o.rb extconf.rb
creating Makefile

current directory: /Users/gelldur/.fastlane/bin/bundle/lib/ruby/gems/2.2.0/gems/json-2.1.0/ext/json/ext/generator
make "DESTDIR=" clean

current directory: /Users/gelldur/.fastlane/bin/bundle/lib/ruby/gems/2.2.0/gems/json-2.1.0/ext/json/ext/generator
make "DESTDIR="
compiling generator.c
clang: warning: no such sysroot directory: '/Applications/Xcode-7.3.1.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk'
[-Wmissing-sysroot]
In file included from generator.c:1:
In file included from ./../fbuffer/fbuffer.h:5:
In file included from /Users/gelldur/.fastlane/bin/bundle/include/ruby-2.2.0/ruby.h:33:
In file included from /Users/gelldur/.fastlane/bin/bundle/include/ruby-2.2.0/ruby/ruby.h:29:
/Users/gelldur/.fastlane/bin/bundle/include/ruby-2.2.0/ruby/defines.h:26:10: fatal error: 'stdio.h' file not found
#include <stdio.h>
         ^
1 error generated.
make: *** [generator.o] Error 1

make failed, exit code 2

Gem files will remain installed in /Users/gelldur/.fastlane/bin/bundle/lib/ruby/gems/2.2.0/gems/json-2.1.0 for inspection.
Results logged to /Users/gelldur/.fastlane/bin/bundle/lib/ruby/gems/2.2.0/extensions/x86_64-darwin-15/2.2.0-static/json-2.1.0/gem_make.out

An error occurred while installing json (2.1.0), and Bundler cannot continue.
Make sure that `gem install json -v '2.1.0'` succeeds before bundling.
mac-04:tools gelldur$ sudo gem install json -v '2.1.0'
Building native extensions.  This could take a while...
Successfully installed json-2.1.0
Parsing documentation for json-2.1.0
unable to convert "\xCA" from ASCII-8BIT to UTF-8 for lib/json/ext/generator.bundle, skipping
unable to convert "\xCA" from ASCII-8BIT to UTF-8 for lib/json/ext/parser.bundle, skipping
1 gem installed
<details><summary>✅ fastlane environment ✅</summary>

### Stack

| Key                         | Value                                       |
| --------------------------- | ------------------------------------------- |
| OS                          | 10.12.5                                     |
| Ruby                        | 2.2.4                                       |
| Bundler?                    | false                                       |
| Git                         | git version 2.13.0                          |
| Installation Source         | ~/.fastlane/bin/bundle/bin/fastlane         |
| Host                        | Mac OS X 10.12.5 (16F73)                    |
| Ruby Lib Dir                | ~/.fastlane/bin/bundle/lib                  |
| OpenSSL Version             | OpenSSL 1.0.2g  1 Mar 2016                  |
| Is contained                | false                                       |
| Is homebrew                 | true                                        |
| Is installed via Fabric.app | false                                       |
| Xcode Path                  | /Applications/Xcode.app/Contents/Developer/ |
| Xcode Version               | 8.3.3                                       |


### System Locale

| Variable | Value       |   |
| -------- | ----------- | - |
| LANG     | en_US.UTF-8 | ✅ |
| LC_ALL   | en_US.UTF-8 | ✅ |
| LANGUAGE | en_US.UTF-8 | ✅ |


### fastlane files:

<details><summary>`./fastlane/Appfile`</summary>

```ruby
# The Appfile can be used to specify information that's used across all fastlane
# tools, like your username or the app's bundle identifier.
#
# For more details, check out the documentation at:
# https://github.com/fastlane/fastlane/blob/master/fastlane/docs/Appfile.md

# app_identifier "com.your.app" # the bundle identifier of your app
# apple_id "[email protected]" # Your Apple ID
# json_key_file "/path/to/your/downloaded/key.json" # GooglePlay

fastlane gems

Gem Version Update-Status
fastlane 2.38.1 ✅ Up-To-Date

Loaded fastlane plugins:

Plugin Version Update-Status
fastlane-plugin-versioning 0.2.7 ✅ Up-To-Date
Loaded gems
Gem Version
slack-notifier 1.5.1
CFPropertyList 2.3.5
colored2 3.1.2
nanaimo 0.2.3
xcodeproj 1.4.4
rouge 1.11.1
xcpretty 0.2.6
unicode-display_width 1.1.3
terminal-table 1.7.3
public_suffix 2.0.5
addressable 2.5.1
multipart-post 2.0.0
word_wrap 1.0.0
tty-screen 0.5.0
babosa 1.0.2
colored 1.2
highline 1.7.8
commander-fastlane 4.4.4
faraday 0.12.1
unf_ext 0.0.7.4
unf 0.1.4
domain_name 0.5.20170404
http-cookie 1.0.3
faraday-cookie_jar 0.0.6
fastimage 2.1.0
gh_inspector 1.0.3
uber 0.0.15
representable 2.3.0
retriable 2.1.0
mime-types-data 3.2016.0521
mime-types 3.1
hurley 0.2
little-plugger 1.1.4
multi_json 1.12.1
logging 2.2.2
jwt 1.5.6
memoist 0.15.0
os 0.9.6
signet 0.7.3
googleauth 0.5.1
httpclient 2.8.3
google-api-client 0.9.28
json 1.8.1
mini_magick 4.5.1
multi_xml 0.6.0
rubyzip 1.2.1
security 0.1.3
xcpretty-travis-formatter 0.0.4
bundler 1.14.6
faraday_middleware 0.11.0.1
excon 0.56.0
plist 3.3.0
claide 1.0.2
fastlane-plugin-versioning 0.2.7

generated on: 2017-06-13

```

Could not find action, lane or variable 'increment_build_number_in_plist'.

Dear Sir:
My code like :
increment_build_number_in_plist(target: 'XXX')
increment_version_number_in_plist(
target: 'XXX',
version_number: '1.0'
)

but fastlane run with an error:Could not find action, lane or variable 'increment_build_number_in_plist'. Check out the documentation for more details: https://docs.fastlane.tools/actions

I find the new action for fastlane named: increment_build_number.
Should I use 'increment_build_number'?
Why I can't use your plugin?

undefined method `resolved_build_setting' for nil:NilClass

When trying to execute the action increment_build_number_in_plist(target: "name") it is failing with undefined method `resolved_build_setting' for nil:NilClass

I am new to fastlane so let me know what you need to help debug this.

Anything similar for Android?

I need to increase the versionCode and versionName for all of my productFlavors in my gradle file. Would nice to have a plugin like this.

Consider using CI_PIPELINE_IID for gitlab

CI_PIPELINE_ID is shared between all projects and will increase very rapidly if you have lots of projects and builds, whereas CI_PIPELINE_IID is:

The unique id of the current pipeline scoped to project

Some caveats:

  • CI_PIPELINE_IID is only available for gitlab v11.0 and higher
  • Anyone currently using the other CI_PIPELINE_ID will be unable to just switch over because that would cause the build number to decrease.

get_version_number_from_xcodeproj with target and build_configuration_name cases an error

get_version_number_from_xcodeproj target: target, build_configuration_name: "Release"

results in

INFO [2020-08-17 15:47:34.10]: -----------------------------------------------
INFO [2020-08-17 15:47:34.10]: --- Step: get_version_number_from_xcodeproj ---
INFO [2020-08-17 15:47:34.10]: -----------------------------------------------
ERROR [2020-08-17 15:47:34.55]: Unknown method 'plist'

get_version_number_from_xcodeproj.rb:44

UI.user_error! "Cannot resolve $(MARKETING_VERSION) build setting for #{build_configuration_name}." if plist.nil?

should be

UI.user_error! "Cannot resolve $(MARKETING_VERSION) build setting for #{build_configuration_name}." if version_number.nil?

Error when trying to use increment_build_number_in_plist

I'm receiving the following error when trying to use increment_build_number_in_plist in combination with the fastlane function latest_testflight_build_number. It's saying:

[!] 'build_number' value must be a String! Found Integer instead.

I was under the impression that I'd be able to use the two in combination the same way as fastlane's native increment_build_number, as documented here: https://docs.fastlane.tools/actions/latest_testflight_build_number/#2-examples

What's strange is that in your docs you show the build_number value as using an integer, so why is it telling me its expecting a string?

Has anyone had luck with this? Thanks!

get_build_number_from_xcodeproj produces NoMethodError: undefined method `resolved_build_setting' for nil:NilClass when using sorted array

I get an error whenever I try and do a sort on the array of environment variables prior to doing the rest of my work. Driving me crazy trying to figure out what is wrong.

schemeList = Dir.glob(".env.*")
schemeList = schemeList.sort
schemeList.each do |file|
Dotenv.overload(file)
yield
end

if ENV['SCHEME'] != nil
puts(ENV['SCHEME'])

build_number = get_build_number_from_xcodeproj(
	target: ENV['SCHEME']
	)

else
end
The "schemeList = schemeList.sort" causes it to error when trying to get the build number with the following:

bundler: failed to load command: fastlane (/usr/local/bin/fastlane)
NoMethodError: [!] undefined method resolved_build_setting' for nil:NilClass /Library/Ruby/Gems/2.3.0/gems/fastlane-plugin-versioning-0.4.2/lib/fastlane/plugin/versioning/actions/get_build_number_from_xcodeproj.rb:55:in get_build_number_using_target'
/Library/Ruby/Gems/2.3.0/gems/fastlane-plugin-versioning-0.4.2/lib/fastlane/plugin/versioning/actions/get_build_number_from_xcodeproj.rb:17:in run' /Library/Ruby/Gems/2.3.0/gems/fastlane-2.143.0/fastlane/lib/fastlane/runner.rb:261:in block (2 levels) in execute_action'
/Library/Ruby/Gems/2.3.0/gems/fastlane-2.143.0/fastlane/lib/fastlane/actions/actions_helper.rb:50:in execute_action' /Library/Ruby/Gems/2.3.0/gems/fastlane-2.143.0/fastlane/lib/fastlane/runner.rb:253:in block in execute_action'
/Library/Ruby/Gems/2.3.0/gems/fastlane-2.143.0/fastlane/lib/fastlane/runner.rb:227:in chdir' /Library/Ruby/Gems/2.3.0/gems/fastlane-2.143.0/fastlane/lib/fastlane/runner.rb:227:in execute_action'
/Library/Ruby/Gems/2.3.0/gems/fastlane-2.143.0/fastlane/lib/fastlane/runner.rb:157:in trigger_action_by_name' /Library/Ruby/Gems/2.3.0/gems/fastlane-2.143.0/fastlane/lib/fastlane/fast_file.rb:159:in method_missing'
Fastfile:378:in block (2 levels) in parsing_binding' /Library/Ruby/Gems/2.3.0/gems/fastlane-2.143.0/fastlane/lib/fastlane/lane.rb:33:in call'
/Library/Ruby/Gems/2.3.0/gems/fastlane-2.143.0/fastlane/lib/fastlane/runner.rb:204:in try_switch_to_lane' /Library/Ruby/Gems/2.3.0/gems/fastlane-2.143.0/fastlane/lib/fastlane/runner.rb:146:in trigger_action_by_name'
/Library/Ruby/Gems/2.3.0/gems/fastlane-2.143.0/fastlane/lib/fastlane/fast_file.rb:159:in method_missing' Fastfile:391:in block (3 levels) in parsing_binding'
Fastfile:368:in block in execute_for_all_envs' Fastfile:366:in each'
Fastfile:366:in execute_for_all_envs' Fastfile:391:in block (2 levels) in parsing_binding'
/Library/Ruby/Gems/2.3.0/gems/fastlane-2.143.0/fastlane/lib/fastlane/lane.rb:33:in call' /Library/Ruby/Gems/2.3.0/gems/fastlane-2.143.0/fastlane/lib/fastlane/runner.rb:49:in block in execute'
/Library/Ruby/Gems/2.3.0/gems/fastlane-2.143.0/fastlane/lib/fastlane/runner.rb:45:in chdir' /Library/Ruby/Gems/2.3.0/gems/fastlane-2.143.0/fastlane/lib/fastlane/runner.rb:45:in execute'
/Library/Ruby/Gems/2.3.0/gems/fastlane-2.143.0/fastlane/lib/fastlane/lane_manager.rb:56:in cruise_lane' /Library/Ruby/Gems/2.3.0/gems/fastlane-2.143.0/fastlane/lib/fastlane/command_line_handler.rb:36:in handle'
/Library/Ruby/Gems/2.3.0/gems/fastlane-2.143.0/fastlane/lib/fastlane/commands_generator.rb:108:in block (2 levels) in run' /Library/Ruby/Gems/2.3.0/gems/commander-fastlane-4.4.6/lib/commander/command.rb:178:in call'
/Library/Ruby/Gems/2.3.0/gems/commander-fastlane-4.4.6/lib/commander/command.rb:153:in run' /Library/Ruby/Gems/2.3.0/gems/commander-fastlane-4.4.6/lib/commander/runner.rb:476:in run_active_command'
/Library/Ruby/Gems/2.3.0/gems/fastlane-2.143.0/fastlane_core/lib/fastlane_core/ui/fastlane_runner.rb:76:in run!' /Library/Ruby/Gems/2.3.0/gems/commander-fastlane-4.4.6/lib/commander/delegates.rb:15:in run!'
/Library/Ruby/Gems/2.3.0/gems/fastlane-2.143.0/fastlane/lib/fastlane/commands_generator.rb:349:in run' /Library/Ruby/Gems/2.3.0/gems/fastlane-2.143.0/fastlane/lib/fastlane/commands_generator.rb:41:in start'
/Library/Ruby/Gems/2.3.0/gems/fastlane-2.143.0/fastlane/lib/fastlane/cli_tools_distributor.rb:119:in take_off' /Library/Ruby/Gems/2.3.0/gems/fastlane-2.143.0/bin/fastlane:23:in <top (required)>'
/usr/local/bin/fastlane:22:in load' /usr/local/bin/fastlane:22:in <top (required)>'

If I remove the sort line, everything works. Everything else I run with the sort line in there seems to be perfectly fine, like using Gym, etc. I can also print the ENV['SCHEME'] and the ordered array with no problem. In addition, if I pass it just a hardcoded string as the target in:

build_number = get_build_number_from_xcodeproj(
target: ENV['SCHEME']
)

it works fine. Even though I can print out (put) that variable correctly so I know it is not nil.

Any help would be greatly appreciated.

Get list of builds in testflight and app store

I am trying to fetch the list of builds version and build_number using Fastlane pilot builds but I keep getting this error: [pilot] Fix TypeError in list by ignoring nil counts.
I want something like this:
+-----------+---------+----------+
| Great App Builds |
+-----------+---------+----------+
| Version # | Build # | Installs |
+-----------+---------+----------+
| 0.9.13 | 1 | 0 |
| 0.9.13 | 2 | 0 |
| 0.9.20 | 3 | 0 |
| 0.9.20 | 4 | 3 |
+-----------+---------+----------+

Error with increment_version_number_in_xcodeproj when setting scheme

Hi,

When I execute:

increment_version_number_in_xcodeproj( bump_type: bumpType, scheme: scheme )

It's changing all the configurations to the new value calculated from the correct scheme.

So basically I have 4 schemes:

Marketing versions:
A: 1.1.1
B: 2.2.2
C: 3.3.3
D: 4.4.4

When I do
increment_version_number_in_xcodeproj( bump_type: patch, scheme: D )

It executes:
xcodebuild -showBuildSettings -scheme D -project MyProject.xcodeproj

And then the configurations get updated to:

A: 4.4.5
B: 4.4.5
C: 4.4.5
D: 4.4.5

If I add build_configuration_name

The command fails with:

Unknown method 'set_version_number_using_scheme'

Add support for fetching App Store previously approved version number

[12:51:07]: ERROR: Asset validation failed (90062) This bundle is invalid. The value for key CFBundleShortVersionString [5.32.1] in the Info.plist file must contain a higher version than that of the previously approved version [5.32.1]. Please find more information about CFBundleShortVersionString at ...

It would be nice to fetch version before archive app.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.