Igor Mandrigin 329c360a40
Less magic for fastlane parameters.
1. Don't require all the nodes to be provisioned manually to upload to Google play.

2. Don't require all the nodes to be provisioned manually to send to Slack channel.

Pass it as a credential from Jenkins instead.

Signed-off-by: Igor Mandrigin <i@mandrigin.ru>
2018-08-14 16:14:07 +02:00

157 lines
4.3 KiB
Ruby

# 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
#
# There are a few env variables defined in the .env file in
# this directory (fastlane/.env)
# unlocks keychain if KEYCHAIN_PASSWORD variable is present
# (to be used on CI machines)
def unlock_keychain_if_needed
if ENV["KEYCHAIN_PASSWORD"]
unlock_keychain(
path:"login.keychain",
password:ENV["KEYCHAIN_PASSWORD"],
set_default: true)
end
end
# builds an ios app with ad-hoc configuration and put it
# to "status-adhoc" output folder
def build_ios_adhoc
match(
type: "adhoc",
force_for_new_devices: true,
readonly: true,
keychain_name: "login.keychain"
)
build_ios_app(
scheme: "StatusIm",
workspace: "ios/StatusIm.xcworkspace",
configuration: "Release",
clean: true,
export_method: "ad-hoc",
output_directory: "status-adhoc"
)
end
platform :ios do
desc "`fastlane ios adhoc` - ad-hoc lane for iOS."
desc "This lane is used PRs, Releases, etc."
desc "It creates an .ipa that can be used by a list of devices, registeded in the App Store Connect."
desc "This .ipa is ready to be distibuted through diawi.com"
lane :adhoc do
unlock_keychain_if_needed
build_ios_adhoc
end
desc "`fastlane ios nightly` - makes a new nightly in TestFlight"
desc "This lane builds a new nightly and uploads it to TestFlight"
desc "It also leaves an .ipa that is ad-hoc signed (can be uploaded to diawi)"
lane :nightly do
unlock_keychain_if_needed
match(
type: "appstore",
force_for_new_devices: true,
readonly: true,
keychain_name: "login.keychain"
)
build_ios_app(
scheme: "StatusIm",
workspace: "ios/StatusIm.xcworkspace",
configuration: "Release",
clean: true,
export_method: "app-store",
output_directory: "status_appstore"
)
upload_to_testflight(
ipa: "status_appstore/StatusIm.ipa"
)
slack(
message: "New nightly build uploaded to TestFlight",
slack_url: ENV["SLACK_URL"]
)
# additional .ipa is for diawi
# we have to re-build it because it uses different config
build_ios_adhoc
end
desc "`fastlane ios release` builds a release & uploads it to TestFlight"
lane :release do
match(
type: "appstore",
force_for_new_devices: true,
readonly: true,
keychain_name: "login.keychain"
)
build_ios_app(
scheme: "StatusIm",
workspace: "ios/StatusIm.xcworkspace",
configuration: "Release",
clean: true,
export_method: "app-store",
output_directory: "status_appstore",
export_options: {
"combileBitcode": true,
"uploadBitcode": false,
"ITSAppUsesNonExemptEncryption": false
}
)
upload_to_testflight(
ipa: "status_appstore/StatusIm.ipa"
)
slack(
message: "New release build uploaded to TestFlight",
slack_url: ENV["SLACK_URL"]
)
end
desc "`fastlane ios clean` - remove inactive TestFlight users"
desc "uses custom plugin, installed via"
desc "`sudo get install fastlane-plugin-clean_testflight_testers`"
lane :clean do
clean_testflight_testers
end
end
platform :android do
desc "Deploy a new internal build to Google Play"
desc "expects GOOGLE_PLAY_JSON_KEY environment variable"
lane :nightly do
upload_to_play_store(
track: "internal",
apk: "android/app/build/outputs/apk/release/app-release.apk",
json_key_data: ENV["GOOGLE_PLAY_JSON_KEY"]
)
slack(
message: "New nightly build uploaded to Google Play",
slack_url: ENV["SLACK_URL"]
)
end
lane :release do
desc "Deploy a new alpha (public) build to Google Play"
desc "expects GOOGLE_PLAY_JSON_KEY environment variable"
upload_to_play_store(
track: "alpha",
apk: "android/app/build/outputs/apk/release/app-release.apk",
json_key_data: ENV["GOOGLE_PLAY_JSON_KEY"]
)
slack(
message: "New release build uploaded to Google Play",
slack_url: ENV["SLACK_URL"]
)
end
end