rake_ci_tools 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/lib/rake_ci_tools/runners/calabash.rb +17 -0
- data/lib/rake_ci_tools/runners/sh.rb +17 -0
- data/lib/rake_ci_tools/runners/vagrant.rb +57 -0
- data/lib/rake_ci_tools/runners/xcode.rb +26 -0
- data/lib/rake_ci_tools/tasks/calabash_task.rb +24 -0
- data/lib/rake_ci_tools/tasks/cucumber_task.rb +25 -0
- data/lib/rake_ci_tools/tasks/deploy_tasks.rb +6 -0
- data/lib/rake_ci_tools/tasks/vagrant_task.rb +19 -0
- data/lib/rake_ci_tools/tasks/xcode_task.rb +17 -0
- data/lib/rake_ci_tools.rb +15 -0
- metadata +168 -0
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,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: []
|