passepartout-apple/fastlane/Fastfile

148 lines
3.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
#
# 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
fastlane_require "dotenv"
fastlane_require "fileutils"
Dotenv.load ".env.secret"
setup_ci if ENV["CI"]
api = "Library/Sources/CommonAPI/API"
metadata = "fastlane/metadata"
logname = "CHANGELOG.txt"
build_path = "build"
derived_data_path = "build/derived_data"
desc "Bump version"
lane :bump do |options|
unless options[:no_log]
if options[:since]
between = [options[:since], "HEAD"]
else
between = nil
end
log = changelog_from_git_commits(
between: between,
pretty: "* %s",
date_format: "short"
)
path = "../#{logname}"
path_tmp = "#{path}.tmp"
File.open(path_tmp, "w") { |file|
file.write(log)
}
if system("vim", path_tmp)
FileUtils.mv(path_tmp, path)
else
File.delete(path_tmp)
UI.user_error!("CHANGELOG editor cancelled")
end
end
version = options[:version]
build = options[:build]
increment_build_number(build_number: build)
unless version.nil? || version.empty?
increment_version_number_in_xcodeproj(version_number: version)
end
git_add(
path: [api, metadata, logname]
)
commit_version_bump(
message: "Bump version",
force: true
)
add_git_tag(
includes_lane: false,
sign: true
)
end
desc "Run Xcode tests"
lane :test do
scan(
xcargs: "CODE_SIGNING_ALLOWED=NO",
derived_data_path: derived_data_path
)
end
desc "Push a new beta build to TestFlight"
lane :beta do
preface = ENV["TESTFLIGHT_PREFACE"]
log = File.read("../#{logname}")
changelog = preface + log
match(type: "appstore")
gym(
clean: true,
build_path: build_path,
derived_data_path: derived_data_path
)
pilot(
changelog: changelog,
distribute_external: true,
notify_external_testers: false
)
end
desc "Distribute to Public Beta"
lane :public_beta do
pilot(
distribute_only: true,
distribute_external: true,
notify_external_testers: true
)
end
desc "Update App Store metadata"
lane :asc_metadata do
deliver(
skip_metadata: false,
skip_screenshots: true
)
end
desc "Update App Store screenshots"
lane :asc_screenshots do
deliver(
skip_metadata: true,
skip_screenshots: false
)
end
desc "Submit a build to App Review"
lane :asc_review do |options|
deliver(
submit_for_review: true,
skip_binary_upload: true,
skip_metadata: false,
skip_screenshots: false,
submission_information: {
add_id_info_uses_idfa: false,
export_compliance_uses_encryption: false
}
)
end
desc "Tag release"
lane :tag_release do |options|
version = options[:version]
tag = "v#{version}"
add_git_tag(
tag: tag,
sign: true
)
push_git_tags(
tag: tag
)
end