Files
lunasea/ios/fastlane/Fastfile

91 lines
2.3 KiB
Ruby

default_platform(:ios)
platform :ios do
desc "Create the LunaSea Keychain"
lane :keychain_create do
create_keychain(
name: ENV["MATCH_KEYCHAIN_NAME"],
password: ENV["MATCH_KEYCHAIN_PASSWORD"],
default_keychain: is_ci,
unlock: true,
timeout: 3600,
lock_when_sleeps: false
)
end
desc "Delete the LunaSea Keychain"
lane :keychain_delete do
delete_keychain(name: ENV["MATCH_KEYCHAIN_NAME"])
end
desc "Setup the Keychain"
lane :keychain_setup do
# Development
match(
type: "development",
readonly: is_ci,
keychain_name: ENV['MATCH_KEYCHAIN_NAME'],
keychain_password: ENV["MATCH_KEYCHAIN_PASSWORD"],
)
# App Store
match(
type: "appstore",
readonly: is_ci,
keychain_name: ENV['MATCH_KEYCHAIN_NAME'],
keychain_password: ENV["MATCH_KEYCHAIN_PASSWORD"],
)
end
desc "Connect to App Store Connect"
lane :connect_appstore_connect do
app_store_connect_api_key(
key_id: ENV["APPLE_STORE_CONNECT_KEY_ID"],
issuer_id: ENV["APPLE_STORE_CONNECT_ISSUER_ID"],
key_filepath: ENV["APPLE_STORE_CONNECT_KEY_FILEPATH"],
)
end
desc "Build App Package for App Store"
lane :build_appstore do |options|
keychain_create
keychain_setup
sh(
"flutter", "build", "ios",
"--release",
"--no-codesign",
"--build-number=#{options[:build_number]}",
)
build_ios_app(
scheme: "Runner",
workspace: "Runner.xcworkspace",
export_method: "app-store",
codesigning_identity: ENV["IOS_CODESIGNING_IDENTITY"],
export_options: {
provisioningProfiles: {
"app.lunasea.lunasea" => "match AppStore app.lunasea.lunasea",
"app.lunasea.lunasea.ImageNotification" => "match AppStore app.lunasea.lunasea.ImageNotification",
}
}
)
sh("mkdir", "-p", "../../output")
sh("mv", "../../ios/Runner.ipa", "../../output/lunasea-ios.ipa")
keychain_delete
end
desc "Deploy to App Store Connect"
lane :deploy_appstore do |options|
connect_appstore_connect
upload_to_testflight(
changelog: File.read("./changelog.txt"),
distribute_external: true,
groups: options[:groups],
ipa: options[:ipa],
notify_external_testers: true,
)
end
end