| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153 |
- 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 12", 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 6 - 44mm", 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
- # carthage(command: "build", no_skip_current: true, platform: "iOS")
- 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 :podpush do
- pod_push
- end
-
- lane :xcframework do |options|
- target_version = "Kingfisher-#{options[:version]}"
- supporting_root = "../build/#{target_version}/Supporting Files"
-
- xcversion(version: "~> 12.0")
- FileUtils.rm_rf '../build'
-
- frameworks = []
-
- ["macosx",
- "iphoneos",
- "iphonesimulator",
- "appletvos",
- "appletvsimulator",
- "watchos",
- "watchsimulator"
- ].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"
- }
- )
- frameworks.push("#{archive_path}/Products/Library/Frameworks/Kingfisher.framework")
- dSYM_path = "../#{archive_path}/dSYMs/Kingfisher.framework.dSYM"
- FileUtils.mkdir_p("#{supporting_root}/#{sdk}/dSYMs/")
- FileUtils.cp_r(dSYM_path, "#{supporting_root}/#{sdk}/dSYMs/Kingfisher.framework.dSYM")
- bitcode_symbol_map_path = "../#{archive_path}/BCSymbolMaps/"
- if Dir.exist?(bitcode_symbol_map_path)
- FileUtils.mkdir_p("#{supporting_root}/#{sdk}/BCSymbolMaps/")
- FileUtils.cp_r(bitcode_symbol_map_path, "#{supporting_root}/#{sdk}")
- end
- end
- # `xcodebuild` action in fastlane does not support `-create-xcframework` arg yet.
- # Change it back to use fastlane action later when it is prepared.
- framework_args = frameworks.map { |framework_path| "-framework '#{framework_path}'"}
- args = "-create-xcframework #{framework_args.join(" ")} -output 'build/#{target_version}/Kingfisher.xcframework'"
- Dir.chdir("..") do
- Action.sh "xcodebuild #{args}"
- end
- zip(
- path: "build/#{target_version}",
- output_path: "build/#{target_version}.zip"
- )
- end
- after_all do |lane|
-
- end
- error do |lane, exception|
-
- end
- end
|