Skip to content

Instantly share code, notes, and snippets.

@PaulTaykalo
Last active May 27, 2020 21:01
  • Star 5 You must be signed in to star a gist
  • Fork 5 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save PaulTaykalo/646f2d76188c61b25a967b7e1f20780f to your computer and use it in GitHub Desktop.
Fastfile Example with a train
platform :ios do
desc 'Updates version number to the next one X.X.(Version +1)'
lane :update_version_number do
increment_version_number(
bump_type: "patch",
)
end
desc 'Simpy updates xcode build number to next one'
lane :update_build_number do
increment_build_number
build_number = get_build_number()
increment_build_number(
build_number: build_number + "." + Date.today.strftime("%Y%m%d")
)
end
desc 'Creates tag with current version number'
lane :create_version_tag do
add_git_tag(
tag: get_version_number(),
force: true
)
end
lane :build_and_submit_for_extenal_testing do
build_for_appstore
upload_for_external_testing
end
lane :build_for_appstore do
sigh
gym(
scheme:"My Shcheme"
)
end
lane :upload_for_external_testing do
pilot
end
desc 'Creates new version of the application'
lane :release_new_version do
merge_dev_to_master # Make sure that we have all the changes in the current branch
remove_developer_suffix_from_version_number
update_build_number
post_to_slack(progress:"[------:train:]", message: "Preparing everything")
setup_project()
post_to_slack(progress:"[-----:train:-]", message: "Building new release version #{get_version_number()}")
build_for_appstore
post_to_slack(progress:"[----:train:--]", message: "Pushing version to remote")
# make_commit_with_new_version
create_version_tag
merge_master_to_dev
update_version_number
add_developer_suffix_from_version_number
make_commit_with_new_version
push_to_git_remote
post_to_slack(progress:"[---:train:---]", message: "Uploading to the App Store")
upload_for_external_testing
post_to_slack(progress:"[:train:------]", message: "Build is processed in ready to be tested #{get_version_number()}")
end
## ----------------
## PRIVATE LANES
## ----------------
desc 'Removes develop suffix from the version'
private_lane :remove_developer_suffix_from_version_number do
version = get_version_number().gsub("d","")
increment_version_number(
version_number: version
)
end
desc 'Adds develop suffix from the version'
private_lane :add_developer_suffix_from_version_number do
version = get_version_number().gsub("d","") + "d"
increment_version_number(
version_number: version
)
end
desc 'Merges all updates from the development branch to the master branch'
private_lane :merge_dev_to_master do
sh "git fetch"
sh "git merge dev"
end
desc 'Merges all updates from the development branch to the master branch'
private_lane :merge_master_to_dev do
sh "git checkout dev"
sh "git merge -"
end
last_slack_progress = "[-----:train:]"
private_lane :post_to_slack do |options|
progress = options[:progress]
message = options[:message]
success = options[:success]
last_slack_progress = progress
slack(
message: "#{progress} #{message}",
slack_url: "https://hooks.slack.com/services/...",
success: success,
default_payloads: []
)
end
error do |lane, exception|
puts "Fail? with '#{lane}' Excetption #{exception} "
if lane == :release_new_version
failure_message = last_slack_progress.gsub(":train:", ":boom:")
post_to_slack(message: "#{failure_message} Broken! #{exception}", success: false)
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment