Files
Kingfisher/fastlane/Fastfile
2024-01-11 22:50:43 +09:00

143 lines
3.7 KiB
Ruby

fastlane_version "1.37.0"
default_platform :ios
platform :ios do
desc "Runs all the tests"
lane :tests do
test(destination: "platform=macOS", swift_version: "5.0")
test(destination: "platform=iOS Simulator,name=iPhone 14", swift_version: "5.0")
test(destination: "platform=tvOS Simulator,name=Apple TV", swift_version: "5.0")
build(destination: "platform=watchOS Simulator,name=Apple Watch Series 8 (41mm)", swift_version: "5.0")
end
lane :test_ci do
if ENV["DESTINATION"].include? "watchOS" then
build(destination: ENV["DESTINATION"], swift_version: ENV["SWIFT_VERSION"])
else
test(destination: ENV["DESTINATION"], swift_version: ENV["SWIFT_VERSION"])
end
end
lane :test do |options|
scan(
scheme: "Kingfisher",
clean: true,
xcargs: "SWIFT_VERSION=#{options[:swift_version]}",
destination: options[:destination]
)
end
lane :build do |options|
gym(
workspace: "Kingfisher.xcworkspace",
configuration: "Debug",
scheme: "Kingfisher",
xcargs: "SWIFT_VERSION=#{options[:swift_version]}",
destination: options[:destination]
)
end
desc "Lint"
lane :lint do
pod_lib_lint
spm
end
desc "Release new version"
lane :release do |options|
target_version = options[:version]
raise "The version is missed. Use `fastlane release version:{version_number}`.`" if target_version.nil?
ensure_git_branch
ensure_git_status_clean
skip_tests = options[:skip_tests]
tests unless skip_tests
lint
sync_build_number_to_git
increment_version_number(version_number: target_version)
version_bump_podspec(path: "Kingfisher.podspec", version_number: target_version)
log = extract_current_change_log(version: target_version)
release_log = update_change_log(log: log)
git_commit_all(message: "Bump version to #{target_version}")
Actions.sh("git tag -s #{target_version} -m ''")
push_to_git_remote
xcframework(version: target_version)
set_github_release(
repository_name: "onevcat/Kingfisher",
api_token: ENV['GITHUB_TOKEN'],
name: release_log[:title],
tag_name: target_version,
description: release_log[:text],
upload_assets: ["build/Kingfisher-#{target_version}.zip"]
)
pod_push
end
lane :xcframework do |options|
target_version = "Kingfisher-#{options[:version]}"
xcversion(version: "~> 15.2")
FileUtils.rm_rf '../build'
frameworks = {}
["macosx",
"iphoneos",
"iphonesimulator",
"appletvos",
"appletvsimulator",
"watchos",
"watchsimulator",
"xros",
"xrsimulator"
].each do |sdk|
archive_path = "build/Kingfisher-#{sdk}.xcarchive"
xcodebuild(
archive: true,
archive_path: archive_path,
scheme: "Kingfisher",
sdk: sdk,
build_settings: {
"BUILD_LIBRARY_FOR_DISTRIBUTION" => "YES",
"SKIP_INSTALL" => "NO"
}
)
dSYM_path = "#{Dir.pwd}/../#{archive_path}/dSYMs/Kingfisher.framework.dSYM"
frameworks["#{archive_path}/Products/Library/Frameworks/Kingfisher.framework"] = { dsyms: dSYM_path }
end
create_xcframework(
frameworks_with_dsyms: frameworks,
output: "build/#{target_version}/Kingfisher.xcframework"
)
Actions.sh("codesign --timestamp -v --sign 'Apple Distribution: Wei Wang (A4YJ9MRZ66)' ../build/#{target_version}/Kingfisher.xcframework")
zip(
path: "build/#{target_version}",
output_path: "build/#{target_version}.zip",
symlinks: true
)
end
after_all do |lane|
end
error do |lane, exception|
end
end