فهرست منبع

Merge pull request #178 from kishikawakatsumi/rakefile

Add tasks for building all platforms and configrations
kishikawa katsumi 9 سال پیش
والد
کامیت
03ddd24223
3فایلهای تغییر یافته به همراه62 افزوده شده و 80 حذف شده
  1. 1 1
      .travis.yml
  2. 60 78
      Lib/Rakefile
  3. 1 1
      circle.yml

+ 1 - 1
.travis.yml

@@ -6,7 +6,7 @@ cache:
 install:
   - (cd Lib && bundle install --path=vendor/bundle --binstubs=vendor/bin)
 script:
-  - (cd Lib && bundle exec rake test:ios test:tvos test:osx coverage:coveralls)
+  - (cd Lib && bundle exec rake build test:iphonesimulator test:appletvsimulator test:macosx coverage:coveralls)
 branches:
   only:
     - master

+ 60 - 78
Lib/Rakefile

@@ -21,93 +21,75 @@ def destinations
   end
 end
 
-XCJobs::Build.new('build:ios:simulator') do |t|
-  t.project = 'KeychainAccess'
-  t.scheme = 'KeychainAccess'
-  t.sdk = 'iphonesimulator'
-  t.configuration = 'Release'
-  t.build_dir = 'build'
-  t.formatter = 'xcpretty -c'
-  t.add_build_setting('CODE_SIGN_IDENTITY', '')
-  t.add_build_setting('CODE_SIGNING_REQUIRED', 'NO')
-end
-
-XCJobs::Build.new('build:ios:device') do |t|
-  t.project = 'KeychainAccess'
-  t.scheme = 'KeychainAccess'
-  t.sdk = 'iphoneos'
-  t.configuration = 'Release'
-  t.build_dir = 'build'
-  t.formatter = 'xcpretty -c'
-  t.add_build_setting('CODE_SIGN_IDENTITY', '')
-  t.add_build_setting('CODE_SIGNING_REQUIRED', 'NO')
-end
-
-XCJobs::Build.new('build:tvos:simulator') do |t|
-  t.project = 'KeychainAccess'
-  t.scheme = 'KeychainAccess'
-  t.sdk = 'appletvsimulator'
-  t.configuration = 'Release'
-  t.build_dir = 'build'
-  t.formatter = 'xcpretty -c'
-  t.add_build_setting('CODE_SIGN_IDENTITY', '')
-  t.add_build_setting('CODE_SIGNING_REQUIRED', 'NO')
+def supportedPlatforms(test: false)
+  if test
+    ['macosx', 'iphoneos', 'iphonesimulator', 'appletvos', 'appletvsimulator']
+  else
+    if ENV['CIRCLECI']
+      ['macosx', 'iphoneos', 'iphonesimulator', 'watchos', 'watchsimulator']
+    else 
+      ['macosx', 'iphoneos', 'iphonesimulator', 'watchos', 'watchsimulator', 'appletvos', 'appletvsimulator']
+    end
+  end
 end
 
-XCJobs::Build.new('build:tvos:device') do |t|
-  t.project = 'KeychainAccess'
-  t.scheme = 'KeychainAccess'
-  t.sdk = 'appletvos'
-  t.configuration = 'Release'
-  t.build_dir = 'build'
-  t.formatter = 'xcpretty -c'
-  t.add_build_setting('CODE_SIGN_IDENTITY', '')
-  t.add_build_setting('CODE_SIGNING_REQUIRED', 'NO')
+def configurations
+  ['Debug', 'Release']
 end
 
-XCJobs::Build.new('build:osx') do |t|
-  t.project = 'KeychainAccess'
-  t.scheme = 'KeychainAccess'
-  t.sdk = 'macosx'
-  t.configuration = 'Release'
-  t.build_dir = 'build'
-  t.formatter = 'xcpretty -c'
-  t.add_build_setting('CODE_SIGN_IDENTITY', '')
-  t.add_build_setting('CODE_SIGNING_REQUIRED', 'NO')
+desc "build for all platforms"
+task :build do |t|
+  supportedPlatforms
+    .product(configurations)
+    .map { |platform, configuration| Rake::Task["build:#{platform}:#{configuration.downcase}"] }
+    .map(&:invoke)
 end
 
-XCJobs::Test.new('test:ios') do |t|
-  t.project = 'KeychainAccess'
-  t.scheme = 'KeychainAccess'
-  t.sdk = 'iphonesimulator'
-  t.configuration = 'Release'
-  t.coverage = true
-  destinations.each do |destination|
-    t.add_destination(destination)
+namespace :build do
+  supportedPlatforms.product(configurations).each do |platform, configuration|
+    XCJobs::Build.new("#{platform}:#{configuration.downcase}") do |t|
+      t.project = 'KeychainAccess'
+      t.scheme = 'KeychainAccess'
+      t.sdk = platform
+      t.configuration = configuration
+      t.build_dir = 'build'
+      t.formatter = 'xcpretty -c'
+      if ENV['CI']
+        t.add_build_setting('CODE_SIGN_IDENTITY', '')
+        t.add_build_setting('CODE_SIGNING_REQUIRED', 'NO')
+      end
+    end
   end
-  t.build_dir = 'build'
-  t.formatter = 'xcpretty -c'
 end
 
-XCJobs::Test.new('test:tvos') do |t|
-  t.project = 'KeychainAccess'
-  t.scheme = 'KeychainAccess'
-  t.sdk = 'appletvsimulator'
-  t.configuration = 'Release'
-  t.coverage = true
-  t.build_dir = 'build'
-  t.formatter = 'xcpretty -c'
+namespace :test do
+  supportedPlatforms
+    .select { |platform| platform == 'macosx' || platform.end_with?('simulator') }.map do |platform|
+      task platform do |t|
+        configurations
+          .map { |configuration| Rake::Task["test:#{platform}:#{configuration.downcase}"] }
+          .map(&:invoke)
+      end
+    end
 end
-
-XCJobs::Test.new('test:osx') do |t|
-  t.project = 'KeychainAccess'
-  t.scheme = 'KeychainAccess'
-  t.sdk = 'macosx'
-  t.configuration = 'Release'
-  t.coverage = true
-  t.build_dir = 'build'
-  t.formatter = 'xcpretty -c'
+    
+namespace :test do
+  supportedPlatforms.product(configurations).each do |platform, configuration|
+    XCJobs::Test.new("#{platform}:#{configuration.downcase}") do |t|
+      t.project = 'KeychainAccess'
+      t.scheme = 'KeychainAccess'
+      t.sdk = platform
+      t.configuration = configuration
+      t.coverage = true
+      if platform == 'iphonesimulator'
+        destinations.each do |destination|
+          t.add_destination(destination)
+        end
+      end
+      t.build_dir = 'build'
+      t.formatter = 'xcpretty -c'
+    end
+  end
 end
 
-XCJobs::Coverage::Coveralls.new() do |t|
-end
+XCJobs::Coverage::Coveralls.new()

+ 1 - 1
circle.yml

@@ -11,4 +11,4 @@ dependencies:
 
 test:
   override:
-    - (cd Lib && bundle exec rake test:ios test:osx)
+    - (cd Lib && bundle exec rake build test:iphonesimulator test:macosx)