mirror of https://github.com/ppy/osu
148 lines
3.9 KiB
Ruby
148 lines
3.9 KiB
Ruby
update_fastlane
|
|
|
|
platform :android do
|
|
desc 'Deploy to play store'
|
|
lane :beta do |options|
|
|
|
|
update_version(
|
|
version: options[:version],
|
|
build: options[:build],
|
|
)
|
|
|
|
build(options)
|
|
|
|
supply(
|
|
apk: './osu.Android/bin/Release/sh.ppy.osulazer-Signed.apk',
|
|
package_name: 'sh.ppy.osulazer',
|
|
track: 'alpha', # upload to alpha, we can promote it later
|
|
json_key: options[:json_key],
|
|
)
|
|
end
|
|
|
|
desc 'Deploy to github release'
|
|
lane :build_github do |options|
|
|
|
|
update_version(
|
|
version: options[:version],
|
|
build: options[:build],
|
|
)
|
|
|
|
build(options)
|
|
|
|
client = HTTPClient.new
|
|
changelog = client.get_content 'https://gist.githubusercontent.com/peppy/aaa2ec1a323554b619671cac6dbbb776/raw'
|
|
changelog.gsub!('$BUILD_ID', options[:build])
|
|
|
|
set_github_release(
|
|
repository_name: "ppy/osu",
|
|
api_token: ENV["GITHUB_TOKEN"],
|
|
name: options[:build],
|
|
tag_name: options[:build],
|
|
is_draft: true,
|
|
description: changelog,
|
|
commitish: "master",
|
|
upload_assets: ["osu.Android/bin/Release/sh.ppy.osulazer.apk"]
|
|
)
|
|
|
|
end
|
|
|
|
desc 'Compile the project'
|
|
lane :build do |options|
|
|
nuget_restore(project_path: 'osu.Android/osu.Android.csproj')
|
|
nuget_restore(project_path: 'osu.Game/osu.Game.csproj')
|
|
nuget_restore(project_path: 'osu.Game.Rulesets.Osu/osu.Game.Rulesets.Osu.csproj')
|
|
nuget_restore(project_path: 'osu.Game.Rulesets.Taiko/osu.Game.Rulesets.Taiko.csproj')
|
|
nuget_restore(project_path: 'osu.Game.Rulesets.Catch/osu.Game.Rulesets.Catch.csproj')
|
|
nuget_restore(project_path: 'osu.Game.Rulesets.Mania/osu.Game.Rulesets.Mania.csproj')
|
|
|
|
souyuz(
|
|
build_configuration: 'Release',
|
|
solution_path: 'osu.sln',
|
|
platform: "android",
|
|
output_path: "osu.Android/bin/Release/",
|
|
keystore_path: options[:keystore_path],
|
|
keystore_alias: options[:keystore_alias],
|
|
keystore_password: ENV["KEYSTORE_PASSWORD"]
|
|
)
|
|
end
|
|
|
|
lane :update_version do |options|
|
|
|
|
split = options[:build].split('.')
|
|
split[1] = split[1].to_s.rjust(4, '0')
|
|
android_build = split.join('')
|
|
|
|
app_version(
|
|
solution_path: 'osu.sln',
|
|
version: options[:version],
|
|
build: android_build,
|
|
)
|
|
end
|
|
|
|
end
|
|
|
|
platform :ios do
|
|
desc 'Deploy to testflight'
|
|
lane :beta do |options|
|
|
update_version(options)
|
|
|
|
provision(
|
|
type: 'appstore'
|
|
)
|
|
|
|
build(
|
|
build_configuration: 'Release',
|
|
build_platform: 'iPhone'
|
|
)
|
|
|
|
client = HTTPClient.new
|
|
changelog = client.get_content 'https://gist.githubusercontent.com/peppy/ab89c29dcc0dce95f39eb218e8fad197/raw'
|
|
changelog.gsub!('$BUILD_ID', options[:build])
|
|
|
|
pilot(
|
|
wait_processing_interval: 900,
|
|
changelog: changelog,
|
|
groups: ['osu! supporters', 'public'],
|
|
distribute_external: true,
|
|
ipa: './osu.iOS/bin/iPhone/Release/osu.iOS.ipa'
|
|
)
|
|
end
|
|
|
|
desc 'Compile the project'
|
|
lane :build do
|
|
nuget_restore(project_path: 'osu.iOS/osu.iOS.csproj')
|
|
nuget_restore(project_path: 'osu.Game/osu.Game.csproj')
|
|
nuget_restore(project_path: 'osu.Game.Rulesets.Osu/osu.Game.Rulesets.Osu.csproj')
|
|
nuget_restore(project_path: 'osu.Game.Rulesets.Taiko/osu.Game.Rulesets.Taiko.csproj')
|
|
nuget_restore(project_path: 'osu.Game.Rulesets.Catch/osu.Game.Rulesets.Catch.csproj')
|
|
nuget_restore(project_path: 'osu.Game.Rulesets.Mania/osu.Game.Rulesets.Mania.csproj')
|
|
|
|
souyuz(
|
|
platform: "ios",
|
|
plist_path: "osu.iOS/Info.plist"
|
|
)
|
|
end
|
|
|
|
desc 'Install provisioning profiles using match'
|
|
lane :provision do |options|
|
|
if Helper.is_ci?
|
|
options[:readonly] = true
|
|
end
|
|
|
|
match(options)
|
|
end
|
|
|
|
lane :update_version do |options|
|
|
options[:plist_path] = 'osu.iOS/Info.plist'
|
|
app_version(options)
|
|
end
|
|
|
|
lane :testflight_prune_dry do
|
|
clean_testflight_testers(days_of_inactivity:45, dry_run: true)
|
|
end
|
|
|
|
lane :testflight_prune do
|
|
clean_testflight_testers(days_of_inactivity: 45)
|
|
end
|
|
end
|