You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

171 lines
4.6 KiB
Ruby

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# This file contains the fastlane.tools configuration
# You can find the documentation at https://docs.fastlane.tools
#
# For a list of all available actions, check out
#
# https://docs.fastlane.tools/actions
#
# For a list of all available plugins, check out
#
# https://docs.fastlane.tools/plugins/available-plugins
#
# Uncomment the line if you want fastlane to automatically update itself
# update_fastlane
default_platform(:ios)
before_each do |_lane, _options|
ENV['USER_NAME'] = 'mlch911@icloud.com'
ENV['BUNDLE_ID'] = 'tech.mluoc.hyzpYbqx'
ENV['TEAM_ID'] = '64SK828CZ2'
ENV['WORKSPACE'] = 'Runner.xcworkspace'
ENV['SCHEME'] = 'Runner'
end
platform :ios do
lane :release do
ensure_git_status_clean
begin
bump_build
build
app_store_connect_api_key(
key_id: 'YQ64K5M9H3',
issuer_id: '67816921-cf8f-453f-b6a4-83293280f4a3',
key_filepath: '~/AuthKey_YQ64K5M9H3.p8',
duration: 1200
)
deliver(
ipa: lane_context[:IPA_OUTPUT_PATH],
username: ENV['USER_NAME'],
team_id: ENV['TEAM_ID'],
app_identifier: ENV['BUNDLE_ID'],
submit_for_review: true,
automatic_release: true,
phased_release: false,
force: true, # Skip HTMl report verification
skip_metadata: false,
skip_screenshots: false,
overwrite_screenshots: true,
skip_binary_upload: false,
precheck_include_in_app_purchases: false,
submission_information: { add_id_info_uses_idfa: false, export_compliance_uses_encryption: false }
)
clean_build_artifacts
add_git_tag(tag: 'release-' + tag_string)
rescue => exception
revert_bump_build
`git checkout . && git clean -df`
clean_build_artifacts
raise exception
end
end
lane :publish_testflight do
ensure_git_status_clean
begin
bump_build
build
app_store_connect_api_key(
key_id: 'YQ64K5M9H3',
issuer_id: '67816921-cf8f-453f-b6a4-83293280f4a3',
key_filepath: '~/AuthKey_YQ64K5M9H3.p8',
duration: 1200
)
upload_to_testflight(
ipa: lane_context[:IPA_OUTPUT_PATH],
team_id: ENV['TEAM_ID'],
app_identifier: ENV['BUNDLE_ID'],
distribute_external: true,
changelog: '【优化】修复bug优化体验',
notify_external_testers: true,
groups: ['Dev', 'Test']
)
clean_build_artifacts
add_git_tag(tag: 'testflight-' + tag_string)
rescue => exception
revert_bump_build
clean_build_artifacts
`git checkout . && git clean -df`
raise exception
end
end
private_lane :build do
build_ios_app(
workspace: ENV['WORKSPACE'],
configuration: 'Release',
scheme: ENV['SCHEME'],
clean: true,
xcargs: '-allowProvisioningUpdates',
include_symbols: true
)
end
lane :bump_version do
ensure_git_status_clean
increment_version_number_in_plist(
bump_type: 'patch',
target: lane_context[:TARGET_NAME]
)
info_plist_path = get_info_plist_path(scheme: lane_context[:SCHEME])
git_commit(
path: [info_plist_path],
message: 'Bump to next version',
skip_git_hooks: true
)
end
private_lane :bump_build do
increment_build_number_in_plist(scheme: lane_context[:SCHEME])
info_plist_path = get_info_plist_path(scheme: lane_context[:SCHEME])
git_commit(
path: [info_plist_path],
message: 'Increase Build Number',
skip_git_hooks: true
)
end
private_lane :tag_string do
unless lane_context[:TAG_STRING]
tag = "#{version_string}.#{build_string}"
lane_context[:TAG_STRING] = tag
end
lane_context[:TAG_STRING]
end
private_lane :version_build_string do
"#{version_string}.#{build_string}"
end
private_lane :version_string do
unless lane_context[:VERSION_STRING]
version = get_version_number_from_plist(target: lane_context[:TARGET_NAME])
lane_context[:VERSION_STRING] = version
end
lane_context[:VERSION_STRING]
end
private_lane :build_string do
unless lane_context[:BUILD_STRING]
build = get_build_number_from_plist(target: lane_context[:TARGET_NAME])
lane_context[:BUILD_STRING] = build
end
lane_context[:BUILD_STRING]
end
private_lane :revert_bump_build do
last_commit = `git --no-pager log --pretty=format:%H -1`
last_commit_message = `git --no-pager log --pretty=format:%s -1 last_commit`
if last_commit_message == 'Increase Build Number'
`git tag -d #{tag_string}`
`git reset --soft #{last_commit}^`
end
end
end