mirror of
https://github.com/zhigang1992/Kingfisher.git
synced 2026-04-30 13:02:33 +08:00
143 lines
3.7 KiB
Ruby
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
|