rake_ci_tools 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 4ea2891f07e9b27c2baba299cd4862e7d37d519c
4
+ data.tar.gz: b422f5f2fd6c559ee128ff426327c4b02f431e40
5
+ SHA512:
6
+ metadata.gz: 701aeaca95f9a37505e6f6ee987c05e58d75431955c808d7a38a9d5a8971d70375390a3cc6bbe39235717789753f3e4d22ed828fc26b296dc3750de587523270
7
+ data.tar.gz: e85a166e4259c17492af310f76aeb86bd2cb04dd021f3ef800d4112560913d01cfb9964245835f0a4b08266635dadb23d56f9ee89462ff164859df0fd2f16530
@@ -0,0 +1,17 @@
1
+ module Calabash_Runner
2
+ def self.enable_accessibility
3
+ sh 'calabash-ios sim acc'
4
+ end
5
+
6
+ def self.reset_simulator
7
+ sh 'calabash-ios sim reset'
8
+ end
9
+
10
+ def self.sim_location(bundle_id)
11
+ sh "calabash-ios sim location on #{bundle_id}"
12
+ end
13
+
14
+ def self.close_simulator
15
+ sh "/usr/bin/osascript -e 'tell app \"iPhone Simulator\" to quit'"
16
+ end
17
+ end
@@ -0,0 +1,17 @@
1
+ module Kernel
2
+ #Define sh runner
3
+ def sh(*cmd, &block)
4
+ if Hash === cmd.last then
5
+ options = cmd.pop
6
+ else
7
+ options = {}
8
+ end
9
+ unless block_given?
10
+ block = lambda { |ok, status|
11
+ ok or fail "Command failed with status (#{status.exitstatus}): [#{cmd.join(" ")}]"
12
+ }
13
+ end
14
+ res = system(*cmd)
15
+ block.call(res, $?)
16
+ end
17
+ end
@@ -0,0 +1,57 @@
1
+ module Vagrant
2
+ def self.task(tasks=[], project_location='./')
3
+ begin
4
+ puts "Creating Vagrantbox for Process ID: $$"
5
+ create_box('default')
6
+ copy_file_to_guest(project_location)
7
+ tasks.each { |task| command(task) }
8
+ ensure
9
+ destroy_box('default')
10
+ end
11
+ end
12
+
13
+ def self.remoteLocation
14
+ ENV['VAGANT_REMOTE_DEST'] || 'vagrant_build'
15
+ end
16
+
17
+ #ALL BELOW UNTESTED REFACTOR
18
+ def self.create_box(boxName)
19
+ sh "vagrant up #{boxName} --provision"
20
+ end
21
+
22
+ def self.destroy_box(boxName)
23
+ puts "Destorying: #{boxName}"
24
+ begin
25
+ get_file_from_guest('./',"#{remoteLocation}/ci-artifacts",boxName)
26
+ ensure
27
+ sh "vagrant destroy -f #{boxName}"
28
+ end
29
+ end
30
+
31
+ def self.command(command)
32
+ sh "vagrant ssh --command \"cd #{remoteLocation} && #{command}\""
33
+ end
34
+
35
+ def self.copy_file_to_guest(localLocation, boxName = "")
36
+ serverIp = get_ssh_details(/(?<=HostName ).*/, boxName)
37
+ scp(localLocation,"vagrant@#{serverIp}:#{remoteLocation}", boxName)
38
+ end
39
+
40
+ def self.get_file_from_guest(localLocation, boxName = "")
41
+ serverIp = get_ssh_details(/(?<=HostName ).*/,boxName)
42
+ scp("vagrant@#{serverIp}:#{remoteLocation}",localLocation,boxName)
43
+ end
44
+
45
+ def self.scp(from, to, boxName="")
46
+ portNum = get_ssh_details(/(?<=Port ).*/,boxName)
47
+ keyPath = get_ssh_details(/(?<=IdentityFile ).*/,boxName)
48
+
49
+ puts "PortNum: #{portNum}"
50
+ sh "scp -o 'StrictHostKeyChecking no' -i #{keyPath} -P #{portNum} -r #{from} #{to}"
51
+ end
52
+
53
+ def self.get_ssh_details(regex, boxName="")
54
+ response = `vagrant ssh-config #{boxName}`
55
+ return response.match(regex)
56
+ end
57
+ end
@@ -0,0 +1,26 @@
1
+ module XCode
2
+ def self.build(workspace, scheme, configuration, sdk, build_dir)
3
+ if workspace.nil? || scheme.nil? || configuration.nil? || sdk.nil? || build_dir.nil?
4
+ raise(ArgumentError, "parameters can't be nil")
5
+ end
6
+
7
+ sh "xcodebuild -workspace '#{workspace}' -scheme '#{scheme}' -configuration '#{configuration}' -sdk '#{sdk}' CONFIGURATION_BUILD_DIR=#{build_dir}"
8
+ end
9
+
10
+ def self.build_and_test(workspace, scheme, configuration, destination)
11
+ if workspace.nil? || scheme.nil? || configuration.nil? || destination.nil?
12
+ raise(ArgumentError, "parameters can't be nil")
13
+ end
14
+
15
+ sh "xcodebuild test -workspace '#{workspace}' -scheme '#{scheme}' -configuration '#{configuration}' -destination '#{destination}'"
16
+ end
17
+
18
+ def self.archive(workspace, scheme, configuration, sdk, provisioning_profile, build_dir)
19
+ if workspace.nil? || scheme.nil? || provisioning_profile.nil? || configuration.nil? || build_dir.nil?
20
+ raise(ArgumentError, "parameters can't be nil")
21
+ end
22
+
23
+ build(workspace, scheme, configuration, sdk, build_dir)
24
+ sh "/usr/bin/xcrun -sdk iphoneos PackageApplication -v '#{build_dir}/#{scheme}.app' -o '#{build_dir}/#{scheme}.ipa' --embed '#{provisioning_profile}'"
25
+ end
26
+ end
@@ -0,0 +1,24 @@
1
+ require 'calabash-cucumber'
2
+
3
+ namespace :calabash do
4
+
5
+ desc "Reset Simulator Content and Settings"
6
+ task :reset_simulator do
7
+ Calabash_Runner::reset_simulator
8
+ end
9
+
10
+ desc "Enable Accessibility On Simulator"
11
+ task :enable_accessibility do
12
+ Calabash_Runner::enable_accessibility
13
+ end
14
+
15
+ desc "Disable Location Dialog On Simulator"
16
+ task :disable_location_dialog , :bundle_id do |_,args|
17
+ Calabash_Runner::sim_location(args[:bundle_id])
18
+ end
19
+
20
+ desc "Close the Simulator"
21
+ task :close_simulator do
22
+ Calabash_Runner::close_simulator
23
+ end
24
+ end
@@ -0,0 +1,25 @@
1
+ require 'cucumber'
2
+ require 'cucumber/rake/task'
3
+
4
+ namespace :cucumber do
5
+ desc "Run Cucumber Tests"
6
+ task :run, [:features] do |_ , args|
7
+ args.with_defaults(:features=>nil)
8
+ Cucumber::Rake::Task.new do |t|
9
+ t.fork = false
10
+ t.cucumber_opts = args[:features] unless args[:features].nil?
11
+ t.runner.run
12
+ end
13
+ end
14
+
15
+ desc "Run Cucumber with profile"
16
+ task :profile, [:profile,:features] do |_ , args|
17
+ raise(ArgumentError, "Profile must be defined") if args[:profile].nil?
18
+ Cucumber::Rake::Task.new do |t|
19
+ t.fork = false
20
+ t.cucumber_opts = args[:features] unless args[:features].nil?
21
+ t.profile = args[:profile]
22
+ t.runner.run
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,6 @@
1
+ namespace :deploy do
2
+ desc "Deploy to TestFlight"
3
+ task :test_flight, :ipa_location, :api_token, :team_token do |_, args|
4
+ Deploy.deploy_to_testflight(args[:ipa_location], args[:api_token], args[:team_token])
5
+ end
6
+ end
@@ -0,0 +1,19 @@
1
+ namespace :vagrant do
2
+ task :ios_cucumber_tests do
3
+
4
+ task_list = []
5
+ task_list << 'bundle'
6
+ task_list << 'rake setup'
7
+ task_list << 'rake build'
8
+
9
+ feature_list = ENV['FEATURE_LIST'] || ''
10
+
11
+ if feature_list.empty?
12
+ task_list << "rake cucumber:profile['ios']"
13
+ else
14
+ task_list << "rake cucumber:profile['ios','#{feature_list}']"
15
+ end
16
+
17
+ Vagrant::task(task_list)
18
+ end
19
+ end
@@ -0,0 +1,17 @@
1
+ namespace :xcode do
2
+ desc "Xcode Build"
3
+ task :build, [:workspace, :scheme, :configuration, :sdk, :buildDir] do |_, args|
4
+ args.with_defaults(:sdk => 'iphonesimulator', :buildDir => 'ci-artifacts')
5
+ XCode::build(args[:workspace],args[:scheme],args[:configuration],args[:sdk],args[:buildDir])
6
+ end
7
+
8
+ desc "Xcode Test"
9
+ task :build_test, [:workspace, :scheme, :configuration, :destinations] do |_ , args|
10
+ XCode::build_and_test(args[:workspace],args[:scheme],args[:configuration],args[:destinations])
11
+ end
12
+
13
+ desc "Achieve ipa"
14
+ task :archive, [:workspace, :scheme, :configuration, :sdk, :provisioning_profile, :destinations] do |_ , args|
15
+ XCode::archive(args[:workspace],args[:scheme],args[:configuration],args[:sdk],args[:provisioning_profile],args[:destinations])
16
+ end
17
+ end
@@ -0,0 +1,15 @@
1
+ base_path = File.join(File.dirname(__FILE__),'rake_ci_tools')
2
+
3
+ require 'rake'
4
+
5
+ require File.join(base_path, 'tasks', 'cucumber_task')
6
+ require File.join(base_path, 'tasks', 'xcode_task')
7
+ require File.join(base_path, 'tasks', 'vagrant_task')
8
+ require File.join(base_path, 'tasks', 'calabash_task')
9
+ # require File.join(base_path, 'tasks', 'deploy_tasks')
10
+
11
+ require File.join(base_path, 'runners', 'sh')
12
+ require File.join(base_path, 'runners', 'xcode')
13
+ require File.join(base_path, 'runners', 'vagrant')
14
+ require File.join(base_path, 'runners', 'calabash')
15
+ # require File.join(base_path, 'runners', 'deploy')
metadata ADDED
@@ -0,0 +1,168 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rake_ci_tools
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - chris griffiths
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-07-01 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rake
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '10.3'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '10.3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: cucumber
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: '1.3'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: '1.3'
41
+ - !ruby/object:Gem::Dependency
42
+ name: calabash-cucumber
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: 0.9.168
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: 0.9.168
55
+ - !ruby/object:Gem::Dependency
56
+ name: bundler
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: '1.6'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ~>
67
+ - !ruby/object:Gem::Version
68
+ version: '1.6'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rspec
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ~>
74
+ - !ruby/object:Gem::Version
75
+ version: '2.14'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ~>
81
+ - !ruby/object:Gem::Version
82
+ version: '2.14'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rspec-mocks
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ~>
88
+ - !ruby/object:Gem::Version
89
+ version: '2.14'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ~>
95
+ - !ruby/object:Gem::Version
96
+ version: '2.14'
97
+ - !ruby/object:Gem::Dependency
98
+ name: guard-rspec
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ~>
102
+ - !ruby/object:Gem::Version
103
+ version: '4.2'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ~>
109
+ - !ruby/object:Gem::Version
110
+ version: '4.2'
111
+ - !ruby/object:Gem::Dependency
112
+ name: terminal-notifier-guard
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ~>
116
+ - !ruby/object:Gem::Version
117
+ version: '1.5'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ~>
123
+ - !ruby/object:Gem::Version
124
+ version: '1.5'
125
+ description: " Predined Rake tasks for building, testing and deploying xcode projects\n
126
+ \ Includes Support for: - XCode: Build, Test\n - Cucumber:
127
+ calabash\n - Deploy: Testflight \n"
128
+ email:
129
+ - christopher_griffiths@hotmail.com
130
+ executables: []
131
+ extensions: []
132
+ extra_rdoc_files: []
133
+ files:
134
+ - lib/rake_ci_tools.rb
135
+ - lib/rake_ci_tools/runners/calabash.rb
136
+ - lib/rake_ci_tools/runners/sh.rb
137
+ - lib/rake_ci_tools/runners/vagrant.rb
138
+ - lib/rake_ci_tools/runners/xcode.rb
139
+ - lib/rake_ci_tools/tasks/calabash_task.rb
140
+ - lib/rake_ci_tools/tasks/cucumber_task.rb
141
+ - lib/rake_ci_tools/tasks/deploy_tasks.rb
142
+ - lib/rake_ci_tools/tasks/vagrant_task.rb
143
+ - lib/rake_ci_tools/tasks/xcode_task.rb
144
+ homepage: https://github.com/ChrisGriffiths/rake_ci_tools
145
+ licenses:
146
+ - MIT
147
+ metadata: {}
148
+ post_install_message:
149
+ rdoc_options: []
150
+ require_paths:
151
+ - lib
152
+ required_ruby_version: !ruby/object:Gem::Requirement
153
+ requirements:
154
+ - - '>='
155
+ - !ruby/object:Gem::Version
156
+ version: '0'
157
+ required_rubygems_version: !ruby/object:Gem::Requirement
158
+ requirements:
159
+ - - '>='
160
+ - !ruby/object:Gem::Version
161
+ version: '0'
162
+ requirements: []
163
+ rubyforge_project:
164
+ rubygems_version: 2.2.2
165
+ signing_key:
166
+ specification_version: 4
167
+ summary: Rake tasks for building, testing and deploying xcode projects
168
+ test_files: []