Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Jetpack App: Update release toolkit to support Jetpack #258

Merged
merged 59 commits into from
Jun 22, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
59 commits
Select commit Hold shift + click to select a range
0a111bc
abstract section name when getting release version for android
JavonDavis May 7, 2021
5fceded
add param to get release version to allow for handling jetpack
JavonDavis May 7, 2021
15dd87e
update syntax errror
JavonDavis May 7, 2021
c88cc24
include app in available options
JavonDavis May 7, 2021
1cc4399
update action callsites to now include an app name
JavonDavis May 12, 2021
31d91fb
update actions that were missed to include app param
JavonDavis May 12, 2021
697bcf6
remove HAS_ALPHA env variable and fix inconsistencies with new app pa…
JavonDavis May 12, 2021
679b33b
revert gemfile changes
JavonDavis May 12, 2021
9f991bb
clean up remaining env var uses
JavonDavis May 13, 2021
67e007b
address danger issues
JavonDavis May 13, 2021
fb99670
address danger issues
JavonDavis May 13, 2021
89194c3
address danger issues
JavonDavis May 13, 2021
4135aa9
allow for the use of relase flavor env var
JavonDavis May 13, 2021
b95e5e2
change env var name
JavonDavis May 13, 2021
e587c66
update naming and comments to be more consistent
JavonDavis May 13, 2021
17788b0
add tests around new version properties logic
JavonDavis May 13, 2021
508ee83
address Danger issues
JavonDavis May 13, 2021
3129d01
address Danger issues
JavonDavis May 13, 2021
fd19dca
address Danger issues
JavonDavis May 13, 2021
d1e095e
address Danger issues
JavonDavis May 13, 2021
6f1da0f
update app environemnt variable name and remove redudent instance var…
JavonDavis Jun 10, 2021
13a61ad
Update lib/fastlane/plugin/wpmreleasetoolkit/helper/android/android_v…
JavonDavis Jun 10, 2021
ba2adf6
used named parameters for callsites for get_version_from-properties
JavonDavis Jun 10, 2021
3c13d35
update app env var description
JavonDavis Jun 10, 2021
b58fb59
introduce has_version_properties env variable to allow version proper…
JavonDavis Jun 10, 2021
47988cd
include removed functions for accessing version form build.gradle
JavonDavis Jun 10, 2021
973ddae
resolve conflicts
JavonDavis Jun 10, 2021
795210a
check for properties file existence instead of using environment vari…
JavonDavis Jun 10, 2021
842dec0
address lint issues
JavonDavis Jun 10, 2021
458f202
update Changelog
JavonDavis Jun 10, 2021
04c674b
add named parameters to tests
JavonDavis Jun 10, 2021
d10336d
fix keyed named parameter in test
JavonDavis Jun 10, 2021
a6856be
address lint issues
JavonDavis Jun 10, 2021
f638e5f
address lint issues
JavonDavis Jun 10, 2021
4b2bd1b
Update spec/android_version_helper_spec.rb
JavonDavis Jun 11, 2021
f67123c
Update CHANGELOG.md
JavonDavis Jun 11, 2021
3550353
Update lib/fastlane/plugin/wpmreleasetoolkit/actions/android/android_…
JavonDavis Jun 11, 2021
5c3c6d8
Update lib/fastlane/plugin/wpmreleasetoolkit/actions/android/android_…
JavonDavis Jun 11, 2021
74e0bc9
Update lib/fastlane/plugin/wpmreleasetoolkit/actions/android/android_…
JavonDavis Jun 11, 2021
66c6a7b
fix error in inverted properties
JavonDavis Jun 14, 2021
b5465bf
address missing docstrings
JavonDavis Jun 14, 2021
97b8b03
Merge branch 'update/jetpack' of github.com:wordpress-mobile/release-…
JavonDavis Jun 14, 2021
b93165f
fix inverted properties file check
JavonDavis Jun 14, 2021
10c27c6
use param dict for get_release_version
JavonDavis Jun 14, 2021
b1f5d1e
revert to original spec
JavonDavis Jun 14, 2021
cb939d6
revert use of param dict in get release version
JavonDavis Jun 14, 2021
72efa63
address unnecessary params check
JavonDavis Jun 15, 2021
e2edf26
remove need for has_version_properties env var
JavonDavis Jun 15, 2021
c10f33f
address comment to update variable
JavonDavis Jun 15, 2021
3987111
update Changelog
JavonDavis Jun 15, 2021
fb76ece
address existing instances of app variable assignment using env var e…
JavonDavis Jun 15, 2021
2e3a8e2
update Changelog
JavonDavis Jun 15, 2021
bf14099
update Changelog
JavonDavis Jun 15, 2021
1e7c77a
update details in bump actions to include name of gradle task
JavonDavis Jun 17, 2021
841e8da
fix inverted logic in commit helper
JavonDavis Jun 17, 2021
3496330
update changelog
JavonDavis Jun 17, 2021
354de4e
update changelog
JavonDavis Jun 17, 2021
b58fc23
address shallow clone issue on ci
JavonDavis Jun 17, 2021
b695e16
update get_release version callsites
JavonDavis Jun 18, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 6 additions & 3 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,11 @@ commands:
steps:
- run:
name: Install Homebrew dependencies, if neeeded
command: brew update && xargs brew install --verbose < .circleci/.brewfile
command: |
# Because the CircleCI image uses shallow clones, we need to unshallow them first. See https://bit.ly/3vx6EAL
git -C /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core fetch --unshallow
git -C /usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask fetch --unshallow
brew update && xargs brew install --verbose < .circleci/.brewfile
- run:
name: Install Ruby dependencies, if neeeded
command: bundle check --path vendor/bundle || bundle install --with screenshots
Expand Down Expand Up @@ -57,7 +61,7 @@ jobs:
# Save test results for timing analysis
- store_test_results:
path: test_results

# Coverage reports are sent to Codecov as part of running `rspec`, not as a CircleCI step.
# We may wish to change this for consistency.

Expand Down Expand Up @@ -94,4 +98,3 @@ workflows:
only: /.*/
branches:
ignore: /.*/

9 changes: 5 additions & 4 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,16 @@

### Breaking Changes

_None_

### New Features

_None_
* Support for a `version.properties` to manage app versioning - all existing paths remain intact and new paths are only used when a `version.properties` file is present.
* Add support for providing an `app:` parameter to most versioning-related actions to allow support for multiple apps hosted in a monorepo
* Supporting the new `version.properties` file also allows for the `HAS_ALPHA_VERSION` variable to be removed as the alpha reference in the properties file will be used going forward.
* Clients adopting the new `version.properties` will need to implement a gradle task named `updateVersionProperties` to update the `version.properties` file.

JavonDavis marked this conversation as resolved.
Show resolved Hide resolved
### Bug Fixes
JavonDavis marked this conversation as resolved.
Show resolved Hide resolved

_None_
* Some cleanup to how we scope variables in some of our actions

### Internal Changes

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,13 @@ def self.run(params)
# Checkout develop and update
Fastlane::Helper::GitHelper.checkout_and_pull('develop')

app = params[:app]

# Check versions
release_version = Fastlane::Helper::Android::VersionHelper.get_release_version
message = "The following current version has been detected: #{release_version[Fastlane::Helper::Android::VersionHelper::VERSION_NAME]}\n"
alpha_release_version = Fastlane::Helper::Android::VersionHelper.get_alpha_version
message << "The following Alpha version has been detected: #{alpha_release_version[Fastlane::Helper::Android::VersionHelper::VERSION_NAME]}\n" unless alpha_release_version.nil?
release_version = Fastlane::Helper::Android::VersionHelper.get_release_version(app)
message = "[#{app}] The following current version has been detected: #{release_version[Fastlane::Helper::Android::VersionHelper::VERSION_NAME]}\n"
alpha_release_version = Fastlane::Helper::Android::VersionHelper.get_alpha_version(app)
message << "[#{app}] The following Alpha version has been detected: #{alpha_release_version[Fastlane::Helper::Android::VersionHelper::VERSION_NAME]}\n" unless alpha_release_version.nil?

# Check branch
app_version = Fastlane::Helper::Android::VersionHelper.get_public_version
Expand Down Expand Up @@ -48,9 +50,9 @@ def self.run(params)
end

def self.get_user_build_version(version, message)
UI.user_error!("Release branch for version #{version} doesn't exist. Abort.") unless Fastlane::Helper::GitHelper.checkout_and_pull(release: version)
UI.user_error!("[#{app}] Release branch for version #{version} doesn't exist. Abort.") unless Fastlane::Helper::GitHelper.checkout_and_pull(release: version)
release_version = Fastlane::Helper::Android::VersionHelper.get_release_version
message << "Looking at branch release/#{version} as requested by user. Detected version: #{release_version[Fastlane::Helper::Android::VersionHelper::VERSION_NAME]}.\n"
message << "#{app}] Looking at branch release/#{version} as requested by user. Detected version: #{release_version[Fastlane::Helper::Android::VersionHelper::VERSION_NAME]}.\n"
alpha_release_version = Fastlane::Helper::Android::VersionHelper.get_alpha_version
message << "and Alpha Version: #{alpha_release_version[Fastlane::Helper::Android::VersionHelper::VERSION_NAME]}\n" unless alpha_release_version.nil?
[release_version, alpha_release_version]
Expand Down Expand Up @@ -80,6 +82,10 @@ def self.available_options
description: 'Skips confirmation',
is_string: false, # true: verifies the input is a string, false: every kind of value
default_value: false), # the default value if the user didn't provide one
FastlaneCore::ConfigItem.new(key: :app,
env_name: 'PROJECT_NAME',
description: 'The name of the app to get the release version for',
is_string: true), # true: verifies the input is a string, false: every kind of value
]
end

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,20 +3,22 @@ module Actions
class AndroidBuildPrechecksAction < Action
def self.run(params)
require_relative '../../helper/android/android_version_helper'
require_relative '../../helper/git_helper'

UI.user_error!("Can't build beta and final at the same time!") if params[:final] && params[:beta]

Fastlane::Helper::GitHelper.ensure_on_branch!('release') unless other_action.is_ci()

app = params[:app]
message = ''
beta_version = Fastlane::Helper::Android::VersionHelper.get_release_version() unless !params[:beta] && !params[:final]
alpha_version = Fastlane::Helper::Android::VersionHelper.get_alpha_version() if params[:alpha]
beta_version = Fastlane::Helper::Android::VersionHelper.get_release_version(app) unless !params[:beta] && !params[:final]
alpha_version = Fastlane::Helper::Android::VersionHelper.get_alpha_version(app) if params[:alpha]

UI.user_error!("Can't build a final release out of this branch because it's configured as a beta release!") if params[:final] && Fastlane::Helper::Android::VersionHelper.is_beta_version?(beta_version)

message << "Building version #{beta_version[Fastlane::Helper::Android::VersionHelper::VERSION_NAME]}(#{beta_version[Fastlane::Helper::Android::VersionHelper::VERSION_CODE]}) (for upload to Release Channel)\n" if params[:final]
message << "Building version #{beta_version[Fastlane::Helper::Android::VersionHelper::VERSION_NAME]}(#{beta_version[Fastlane::Helper::Android::VersionHelper::VERSION_CODE]}) (for upload to Beta Channel)\n" if params[:beta]
message << "Building version #{alpha_version[Fastlane::Helper::Android::VersionHelper::VERSION_NAME]}(#{alpha_version[Fastlane::Helper::Android::VersionHelper::VERSION_CODE]}) (for upload to Alpha Channel)\n" if params[:alpha]
message << "[#{app}] Building version #{beta_version[Fastlane::Helper::Android::VersionHelper::VERSION_NAME]}(#{beta_version[Fastlane::Helper::Android::VersionHelper::VERSION_CODE]}) (for upload to Release Channel)\n" if params[:final]
message << "[#{app}] Building version #{beta_version[Fastlane::Helper::Android::VersionHelper::VERSION_NAME]}(#{beta_version[Fastlane::Helper::Android::VersionHelper::VERSION_CODE]}) (for upload to Beta Channel)\n" if params[:beta]
message << "[#{app}] Building version #{alpha_version[Fastlane::Helper::Android::VersionHelper::VERSION_NAME]}(#{alpha_version[Fastlane::Helper::Android::VersionHelper::VERSION_CODE]}) (for upload to Alpha Channel)\n" if params[:alpha]

if params[:skip_confirm]
UI.message(message)
Expand Down Expand Up @@ -62,6 +64,10 @@ def self.available_options
description: 'True if this is for a final build',
is_string: false,
default_value: false),
FastlaneCore::ConfigItem.new(key: :app,
env_name: 'PROJECT_NAME',
description: 'The name of the app to get the release version for',
is_string: true), # true: verifies the input is a string, false: every kind of value
]
end

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,22 @@ def self.run(params)
require_relative '../../helper/android/android_version_helper'

Fastlane::Helper::GitHelper.ensure_on_branch!('release')
create_config()
show_config()
app = params[:app]

UI.message 'Updating build.gradle...'
Fastlane::Helper::Android::VersionHelper.update_versions(@new_version_beta, @new_version_alpha)
current_version = Fastlane::Helper::Android::VersionHelper.get_release_version(product_name: app)
current_version_alpha = Fastlane::Helper::Android::VersionHelper.get_alpha_version(app)
new_version_beta = Fastlane::Helper::Android::VersionHelper.calc_next_beta_version(current_version, current_version_alpha)
new_version_alpha = current_version_alpha.nil? ? nil : Fastlane::Helper::Android::VersionHelper.calc_next_alpha_version(new_version_beta, current_version_alpha)

vname = Fastlane::Helper::Android::VersionHelper::VERSION_NAME
vcode = Fastlane::Helper::Android::VersionHelper::VERSION_CODE
UI.message("Current version[#{app}]: #{current_version[vname]}(#{current_version[vcode]})")
UI.message("Current alpha version[#{app}]: #{current_version_alpha[vname]}(#{current_version_alpha[vcode]})") unless current_version_alpha.nil?
UI.message("New beta version[#{app}]: #{new_version_beta[vname]}(#{new_version_beta[vcode]})")
UI.message("New alpha version[#{app}]: #{new_version_alpha[vname]}(#{new_version_alpha[vcode]})") unless current_version_alpha.nil?

UI.message 'Updating app version...'
Fastlane::Helper::Android::VersionHelper.update_versions(app, new_version_beta, new_version_alpha)
UI.message 'Done!'

Fastlane::Helper::Android::GitHelper.commit_version_bump()
Expand All @@ -23,14 +34,21 @@ def self.run(params)
#####################################################

def self.description
'Bumps the version of the app for a new beta'
'Bumps the version of the app for a new beta. Requires the `updateVersionProperties` gradle task to update the keys if you are using a `version.properties` file.'
end

def self.details
'Bumps the version of the app for a new beta'
'Bumps the version of the app for a new beta. Requires the `updateVersionProperties` gradle task to update the keys if you are using a `version.properties` file.'
end

def self.available_options
# Define all options your action supports.
[
FastlaneCore::ConfigItem.new(key: :app,
env_name: 'PROJECT_NAME',
description: 'The name of the app to get the release version for',
is_string: true), # true: verifies the input is a string, false: every kind of value
]
end

def self.output
Expand All @@ -46,24 +64,6 @@ def self.authors
def self.is_supported?(platform)
platform == :android
end

private

def self.create_config
@current_version = Fastlane::Helper::Android::VersionHelper.get_release_version()
@current_version_alpha = Fastlane::Helper::Android::VersionHelper.get_alpha_version()
@new_version_beta = Fastlane::Helper::Android::VersionHelper.calc_next_beta_version(@current_version, @current_version_alpha)
@new_version_alpha = ENV['HAS_ALPHA_VERSION'].nil? ? nil : Fastlane::Helper::Android::VersionHelper.calc_next_alpha_version(@new_version_beta, @current_version_alpha)
end

def self.show_config
vname = Fastlane::Helper::Android::VersionHelper::VERSION_NAME
vcode = Fastlane::Helper::Android::VersionHelper::VERSION_CODE
UI.message("Current version: #{@current_version[vname]}(#{@current_version[vcode]})")
UI.message("Current alpha version: #{@current_version_alpha[vname]}(#{@current_version_alpha[vcode]})") unless ENV['HAS_ALPHA_VERSION'].nil?
UI.message("New beta version: #{@new_version_beta[vname]}(#{@new_version_beta[vcode]})")
UI.message("New alpha version: #{@new_version_alpha[vname]}(#{@new_version_alpha[vcode]})") unless ENV['HAS_ALPHA_VERSION'].nil?
end
JavonDavis marked this conversation as resolved.
Show resolved Hide resolved
end
end
end
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,20 @@ def self.run(params)
require_relative '../../helper/android/android_version_helper'

Fastlane::Helper::GitHelper.ensure_on_branch!('release')
create_config()
show_config()
app = params[:app]

UI.message 'Updating gradle.properties...'
Fastlane::Helper::Android::VersionHelper.update_versions(@final_version, @current_version_alpha)
current_version = Fastlane::Helper::Android::VersionHelper.get_release_version(product_name: app)
current_version_alpha = Fastlane::Helper::Android::VersionHelper.get_alpha_version(app)
final_version = Fastlane::Helper::Android::VersionHelper.calc_final_release_version(current_version, current_version_alpha)

vname = Fastlane::Helper::Android::VersionHelper::VERSION_NAME
vcode = Fastlane::Helper::Android::VersionHelper::VERSION_CODE
UI.message("Current version[#{app}]: #{current_version[vname]}(#{current_version[vcode]})")
UI.message("Current alpha version[#{app}]: #{current_version_alpha[vname]}(#{current_version_alpha[vcode]})") unless current_version_alpha.nil?
UI.message("New release version[#{app}]: #{final_version[vname]}(#{final_version[vcode]})")

UI.message 'Updating app version...'
Fastlane::Helper::Android::VersionHelper.update_versions(app, final_version, current_version_alpha)
UI.message 'Done!'

Fastlane::Helper::Android::GitHelper.commit_version_bump()
Expand All @@ -23,11 +32,21 @@ def self.run(params)
#####################################################

def self.description
'Bumps the version of the app for a new beta'
'Bumps the version of the app for a new beta. Requires the `updateVersionProperties` gradle task to update the keys if you are using a `version.properties` file.'
end

def self.details
'Bumps the version of the app for a new beta'
'Bumps the version of the app for a new beta. Requires the `updateVersionProperties` gradle task to update the keys if you are using a `version.properties` file.'
end

def self.available_options
# Define all options your action supports.
[
FastlaneCore::ConfigItem.new(key: :app,
env_name: 'PROJECT_NAME',
description: 'The name of the app to get the release version for',
is_string: true), # true: verifies the input is a string, false: every kind of value
Copy link
Contributor

@AliSoftware AliSoftware Jun 16, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit: This is legacy api of ConfigItem constructor. The more modern version is:

Suggested change
is_string: true), # true: verifies the input is a string, false: every kind of value
type: String),

This is not a blocker and can be fixed in a subsequent PR; but could be nice to take the occasion to fix while you're at it; this suggestion applies in every places and actions where you added this of course.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ahhh I think I'd rather tackle it in another PR, opened #278 to track it.

]
end

def self.authors
Expand All @@ -37,22 +56,6 @@ def self.authors
def self.is_supported?(platform)
platform == :android
end

private

def self.create_config
@current_version = Fastlane::Helper::Android::VersionHelper.get_release_version()
@current_version_alpha = Fastlane::Helper::Android::VersionHelper.get_alpha_version()
@final_version = Fastlane::Helper::Android::VersionHelper.calc_final_release_version(@current_version, @current_version_alpha)
end

def self.show_config
vname = Fastlane::Helper::Android::VersionHelper::VERSION_NAME
vcode = Fastlane::Helper::Android::VersionHelper::VERSION_CODE
UI.message("Current version: #{@current_version[vname]}(#{@current_version[vcode]})")
UI.message("Current alpha version: #{@current_version_alpha[vname]}(#{@current_version_alpha[vcode]})") unless ENV['HAS_ALPHA_VERSION'].nil?
UI.message("New release version: #{@final_version[vname]}(#{@final_version[vcode]})")
end
end
end
end
Loading