85 lines
2.6 KiB
Ruby
85 lines
2.6 KiB
Ruby
opt_out_usage
|
|
default_platform(:ios)
|
|
ENV["FASTLANE_XCODEBUILD_SETTINGS_TIMEOUT"] = "120"
|
|
|
|
$appName = "Mastodon"
|
|
|
|
platform :ios do
|
|
before_all do |lane|
|
|
$bundle_id = "org.joinmastodon.app"
|
|
$all_bundle_ids = [
|
|
$bundle_id,
|
|
"org.joinmastodon.app.MastodonIntent",
|
|
"org.joinmastodon.app.NotificationService",
|
|
"org.joinmastodon.app.ShareActionExtension",
|
|
"org.joinmastodon.app.OpenInActionExtension",
|
|
"org.joinmastodon.app.WidgetExtension"
|
|
]
|
|
|
|
lanes_for_building = [:deploy_appstore]
|
|
|
|
if lanes_for_building.include?(lane)
|
|
app_store_connect_api_key(
|
|
key_id: ENV["ITC_KEY_ID"],
|
|
issuer_id: ENV["ITC_ISSUER_ID"],
|
|
key_content: ENV["ITC_KEY"],
|
|
duration: 1200,
|
|
in_house: false
|
|
)
|
|
ensure_git_status_clean
|
|
$version_number = get_version_number_from_xcodeproj(target: $appName)
|
|
$build_number = get_build_number()
|
|
increment_build_number_in_xcodeproj(
|
|
xcodeproj: "#{$appName}.xcodeproj",
|
|
build_number: $build_number
|
|
)
|
|
end
|
|
end
|
|
|
|
desc "Update certificates"
|
|
lane :update_certificates do
|
|
match(type: "development", app_identifier: $all_bundle_ids, force_for_new_devices: true)
|
|
match(type: "appstore", app_identifier: $all_bundle_ids, force_for_new_devices: false)
|
|
end
|
|
|
|
desc "Update devices"
|
|
lane :update_devices do
|
|
register_devices(devices_file: "./fastlane/devices.txt")
|
|
end
|
|
|
|
lane :build_only do
|
|
xcodebuild(
|
|
clean: true,
|
|
scheme: "#{$appName}"
|
|
)
|
|
xcodebuild(
|
|
build: true,
|
|
destination: "platform=iOS Simulator,name=iPhone 16 Pro",
|
|
scheme: "#{$appName}"
|
|
)
|
|
end
|
|
|
|
desc " Build and deploy the App to App Store Connect & TestFlight"
|
|
lane :deploy_appstore do
|
|
|
|
if is_ci
|
|
create_keychain(name: "temp_keychain", password: "temp_123456", default_keychain: true, unlock: true, timeout: 3600, lock_when_sleeps: false)
|
|
match(type: "appstore", app_identifier: $all_bundle_ids, force_for_new_devices: true, readonly: true, keychain_name: "temp_keychain", keychain_password: "temp_123456")
|
|
else
|
|
match(type: "appstore", app_identifier: $all_bundle_ids, force_for_new_devices: true, readonly: false)
|
|
end
|
|
|
|
gym(scheme: "#{$appName}",
|
|
clean: true,
|
|
export_method: "app-store",
|
|
export_xcargs: "-allowProvisioningUpdates")
|
|
deliver(app_identifier: $bundle_id, skip_screenshots: true, skip_metadata: true)
|
|
|
|
sh("echo \"GITHUB_TAG_NAME=#{$version_number}-#{$build_number}\" >> $GITHUB_ENV")
|
|
end
|
|
end
|
|
|
|
def get_build_number
|
|
sh("git rev-list --count HEAD").chomp
|
|
end
|