95 lines
2.7 KiB
Ruby
95 lines
2.7 KiB
Ruby
opt_out_usage
|
|
default_platform(:ios)
|
|
|
|
platform :ios do
|
|
before_all do
|
|
# Perform a fetch before inferring the next version
|
|
# to reduce race conditions with simultaneous pipelines attempting to create the same tag
|
|
sh('git', 'fetch', '--tags', '-f')
|
|
sh('git', 'fetch')
|
|
end
|
|
desc "Create a pre-release version by pushing a tag to GitHub"
|
|
lane :unstable do
|
|
next_version = calculate_next_canary_version
|
|
|
|
UI.message("Releasing unstable version: #{next_version}")
|
|
|
|
# Increment all specs and plists
|
|
increment_versions(version: next_version)
|
|
|
|
# Create tag and push to origin
|
|
add_tag(version: next_version)
|
|
|
|
end
|
|
|
|
desc "Create a release version by building and committing a changelog, pushing a tag to GitHub"
|
|
lane :release do
|
|
next_version, commits = calculate_next_release_version
|
|
|
|
UI.message("Releasing version: #{next_version}")
|
|
|
|
# Increment all specs and plists
|
|
increment_versions(version: next_version)
|
|
|
|
changelog = build_changelog(version: next_version, commits: commits)
|
|
|
|
# Commit and push
|
|
release_commit(version: next_version)
|
|
|
|
# Create tag and push to origin
|
|
add_tag(version: next_version)
|
|
|
|
post_release(version: next_version, changelog: changelog)
|
|
end
|
|
|
|
desc "Increment versions"
|
|
private_lane :increment_versions do |options|
|
|
version = options[:version].to_s
|
|
set_key_value(file: "AmplifyPlugins/Core/AWSPluginsCore/ServiceConfiguration/AmplifyAWSServiceConfiguration.swift", key: "amplifyVersion", value: version)
|
|
end
|
|
|
|
desc "Commit and push"
|
|
private_lane :release_commit do |options|
|
|
next_version = options[:version]
|
|
|
|
sh('git', 'config', '--global', 'user.email', ENV['GITHUB_EMAIL'])
|
|
sh('git', 'config', '--global', 'user.name', ENV['GITHUB_USER'])
|
|
|
|
commit_message = "chore: release #{next_version} [skip ci]"
|
|
sh('git', 'commit', '-am', commit_message)
|
|
|
|
# push to origin
|
|
sh('git', 'push', 'origin', 'release')
|
|
end
|
|
|
|
desc "Tag in git and push to GitHub"
|
|
private_lane :add_tag do |options|
|
|
next_version = options[:version]
|
|
next_tag = "v#{next_version}"
|
|
|
|
add_git_tag(tag: next_tag)
|
|
push_git_tags(tag: next_tag)
|
|
end
|
|
|
|
desc "Post-release"
|
|
private_lane :post_release do |options|
|
|
version = options[:version].to_s
|
|
changelog = options[:changelog]
|
|
tag = "v#{version}"
|
|
|
|
sh('bundle', 'exec', 'swift', 'package', 'update')
|
|
|
|
write_changelog(changelog: changelog, path: 'CHANGELOG.md')
|
|
|
|
commit_message = "chore: finalize release #{version} [skip ci]"
|
|
sh('git', 'commit', '-am', commit_message)
|
|
|
|
add_git_tag(tag: tag, force: true)
|
|
push_git_tags(tag: tag, force: true)
|
|
|
|
# push to origin
|
|
sh('git', 'push', 'origin', 'release')
|
|
sh('git', 'push', 'origin', 'release:main')
|
|
end
|
|
end
|