/fastlane-plugin-flutter_version

Fastlane plugin to retrieve version code for Flutter projects.

Primary LanguageRubyMIT LicenseMIT

flutter_version (Fastlane plugin)

All Contributors

fastlane Plugin Badge Gitpod Ready-to-Code codecov

flutter_version is a Fastlane plugin to retrieve version code from Flutter projects which can be used to release changlogs and other metadata to marketplaces.

Installation

This project is a fastlane plugin. To get started with fastlane-plugin-flutter_version, add it to your project by adding the following lines in Gemfile:

From GitHub registry (recommended)

Install from the command line:

gem install fastlane-plugin-flutter_version --version "1.0.0" --source "https://rubygems.pkg.github.com/tianhaoz95"

Install via Gemfile:

source "https://rubygems.pkg.github.com/tianhaoz95" do
  gem "fastlane-plugin-flutter_version", "1.0.0"
end

Check out the instructions in GitHub Registry.

From RubyGems registry

Install from the command line:

gem install fastlane-plugin-flutter_version

Install via Gemfile:

gem 'fastlane-plugin-flutter_version', '~> 1.0', '>= 1.0.1'

Check out the instructions here.

Directly from Github

gem "fastlane-plugin-flutter_version", git: "https://github.com/tianhaoz95/fastlane-plugin-flutter-version"

Usage

Android example

The following example releases a Android app to Google Play Store without needing to manually specify the app version:

desc "submit to internal track in Google Play Store"
lane :internal do
  Dir.chdir "../.." do sh("flutter", "build", "appbundle", "--release") end # Call Flutter Build
  gradle(task: 'bundle', build_type: 'Release')
  upload_to_play_store(
    track: 'internal',
    version_code: flutter_version()["version_code"],
    aab: '../build/app/outputs/bundle/release/app-release.aab',
    skip_upload_screenshots: true,
    skip_upload_images: true
  )
end

The line flutter_version() fetches the version information from the pubspec.yaml file from the Flutter project and parses the version information from the file. This is convenient for continuous integration because it saves the effort for developers to keep track of version information in multiple places.

For more details, check out the example project configuration.

iOS example

The following example releases an iOS app to TestFlight without needing to manually specify the app version or build number:

desc "submit to TestFlight"
lane :internal do
  Dir.chdir "../.." do sh("flutter", "build", "ios", "--release", "--no-codesign") end # Call Flutter Build
  # https://docs.fastlane.tools/actions/increment_version_number/
  increment_version_number(
    xcodeproj: "Runner.xcodeproj",
    version_number: flutter_version()["version_name"] # Set a specific version number
  )
  # https://docs.fastlane.tools/actions/increment_build_number/
  increment_build_number(
    xcodeproj: "Runner.xcodeproj",
    build_number: flutter_version()["version_code"] # Set a specific build number
  )
  build_app(workspace: "Runner.xcworkspace", export_method: "app-store")
  upload_to_testflight
end

Available options

Name Description Optional Type Default
pubspec_location The location of the pubspec.yaml file (relative to Fastfile). For details, see here. String ../pubspec.yaml
should_omit_version_code If the version code should be omitted for projects that do not use a version code. For details, see here. Boolean false

About Fastlane

Fastlane is the easiest way to automate beta deployments and releases for your iOS and Android apps. To learn more, check out fastlane.tools.

Issues and feedback

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

Troubleshooting

If you have trouble using plugins, check out the Plugins Troubleshooting guide.

Using Fastlane plugins

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

Contributors ✨

Thanks goes to these wonderful people (emoji key):


Shun Kakinoki

💻

Tianhao Zhou

💻

davidbrenner

🤔 📖

Daniel Gomez

🤔

RtypeStudios

💬 📖

Marvin M

🤔

Muhammad Adil

📖 🐛

Leslie Arkorful

🐛 📖

This project follows the all-contributors specification. Contributions of any kind welcome!