sbci 0.1.0
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.
- data/.gitignore +21 -0
- data/.rspec +1 -0
- data/Gemfile +3 -0
- data/Guardfile +19 -0
- data/LICENSE +22 -0
- data/README.md +28 -0
- data/Rakefile +2 -0
- data/bin/sbci +51 -0
- data/lib/config.xml +103 -0
- data/lib/sbci.rb +145 -0
- data/lib/sbci/version.rb +3 -0
- data/sbci.gemspec +29 -0
- data/spec/.DS_Store +0 -0
- data/spec/fixtures/vcr_cassettes/delete.yml +42 -0
- data/spec/fixtures/vcr_cassettes/dump.yml +78 -0
- data/spec/fixtures/vcr_cassettes/publish.yml +160 -0
- data/spec/fixtures/vcr_cassettes/republish.yml +232 -0
- data/spec/sbci_cli_spec.rb +21 -0
- data/spec/sbci_spec.rb +151 -0
- data/spec/spec_helper.rb +12 -0
- metadata +190 -0
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
require 'spec_helper'
|
3
|
+
require 'sbci'
|
4
|
+
|
5
|
+
describe "sbci cli" do
|
6
|
+
|
7
|
+
before(:all) do
|
8
|
+
@options = { :job_name => "test_job",
|
9
|
+
:path => "spec/fixtures/jenkins",
|
10
|
+
:host => "localhost",
|
11
|
+
:port => 8080,
|
12
|
+
:force => true }
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should pass the correct parameters" do
|
16
|
+
sbci "debug #{@options.map{ |k,v| "--#{k.to_s.gsub('_','-')} #{v}" }.join(' ')}"
|
17
|
+
stdout.should == YAML::dump(SBCI::Job.new(@options))
|
18
|
+
stderr.should be_empty
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
data/spec/sbci_spec.rb
ADDED
@@ -0,0 +1,151 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
require 'spec_helper'
|
3
|
+
require 'sbci'
|
4
|
+
|
5
|
+
describe SBCI::Job do
|
6
|
+
|
7
|
+
before(:all) do
|
8
|
+
@job_name = "test_job"
|
9
|
+
@path = "spec/fixtures/jenkins"
|
10
|
+
@sb = SBCI::Job.new(:path => @path, :job_name => @job_name)
|
11
|
+
end
|
12
|
+
|
13
|
+
before(:each) do
|
14
|
+
@sb.delete_config
|
15
|
+
VCR.use_cassette("delete") do
|
16
|
+
@sb.delete
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
context "Initializing" do
|
21
|
+
|
22
|
+
it "should initialize with default parameters and git branch and repo" do
|
23
|
+
sb = SBCI::Job.new
|
24
|
+
sb.host.should == "localhost"
|
25
|
+
sb.port.should == 8080
|
26
|
+
sb.branch_name == "master"
|
27
|
+
sb.job_name == "sbci_build"
|
28
|
+
sb.force == false
|
29
|
+
end
|
30
|
+
|
31
|
+
it "should initialize with specified parameters" do
|
32
|
+
sb = SBCI::Job.new(:host => "example.com", :port => 8000, :job_name => @job_name, :force => true)
|
33
|
+
sb.host.should == "example.com"
|
34
|
+
sb.port.should == 8000
|
35
|
+
sb.job_name.should == @job_name
|
36
|
+
sb.force == true
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
|
41
|
+
context "Creating" do
|
42
|
+
|
43
|
+
it "should create a configuration xml template file" do
|
44
|
+
@sb.config_exists?.should be_false
|
45
|
+
@sb.create
|
46
|
+
@sb.config_exists?.should be_true
|
47
|
+
end
|
48
|
+
|
49
|
+
it "should force create a configuration xml template file without prompt" do
|
50
|
+
@sb.config_exists?.should be_false
|
51
|
+
@sb.create
|
52
|
+
@sb.config_exists?.should be_true
|
53
|
+
@sb.force = true
|
54
|
+
@sb.create
|
55
|
+
@sb.should_not_receive(:print)
|
56
|
+
@sb.config_exists?.should be_true
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
60
|
+
|
61
|
+
context "Publishing" do
|
62
|
+
|
63
|
+
before(:each) do
|
64
|
+
@sb.create
|
65
|
+
end
|
66
|
+
|
67
|
+
it "should publish a configuration xml to create a new Jenkins job" do
|
68
|
+
VCR.use_cassette("publish") do
|
69
|
+
@sb.published?.should be_false
|
70
|
+
@sb.publish.code.should == 200
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
end
|
75
|
+
|
76
|
+
context "Re-publishing" do
|
77
|
+
|
78
|
+
before(:each) do
|
79
|
+
@sb.create
|
80
|
+
VCR.use_cassette("publish") do
|
81
|
+
@sb.publish
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
it "should re-publish a configuration xml to update an existing Jenkins job" do
|
86
|
+
VCR.use_cassette("republish") do
|
87
|
+
@sb.published?.should be_true
|
88
|
+
@sb.stub(:print)
|
89
|
+
@sb.stub(:gets).and_return('y')
|
90
|
+
@sb.publish.code.should == 200
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
it "should force re-publish an existing Jenkins job without prompting" do
|
95
|
+
VCR.use_cassette("republish") do
|
96
|
+
@sb.published?.should be_true
|
97
|
+
@sb.force = true
|
98
|
+
@sb.should_not_receive(:print)
|
99
|
+
@sb.publish.code.should == 200
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
end
|
104
|
+
|
105
|
+
context "Dumping" do
|
106
|
+
|
107
|
+
before(:each) do
|
108
|
+
@sb.create
|
109
|
+
VCR.use_cassette("publish") do
|
110
|
+
@sb.publish
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
it "should dump a configuration xml from an existing project" do
|
115
|
+
@sb.delete_config
|
116
|
+
@sb.config_exists?.should be_false
|
117
|
+
VCR.use_cassette("dump") do
|
118
|
+
@sb.dump.code.should == 200
|
119
|
+
@sb.config_exists?.should be_true
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
it "should force dump a configuration xml over an existing one without prompt" do
|
124
|
+
@sb.config_exists?.should be_true
|
125
|
+
@sb.force = true
|
126
|
+
@sb.should_not_receive(:print)
|
127
|
+
VCR.use_cassette("dump") do
|
128
|
+
@sb.dump.code.should == 200
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
132
|
+
end
|
133
|
+
|
134
|
+
context "Deleting" do
|
135
|
+
|
136
|
+
before(:each) do
|
137
|
+
@sb.create
|
138
|
+
end
|
139
|
+
|
140
|
+
it "should delete a job" do
|
141
|
+
VCR.use_cassette("publish") do
|
142
|
+
@sb.publish
|
143
|
+
end
|
144
|
+
VCR.use_cassette("delete") do
|
145
|
+
@sb.delete.should be_true
|
146
|
+
end
|
147
|
+
end
|
148
|
+
|
149
|
+
end
|
150
|
+
|
151
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
$:.unshift File.expand_path(File.join(File.dirname(__FILE__),'..','lib'))
|
2
|
+
require 'bahia'
|
3
|
+
require 'net/http'
|
4
|
+
require 'vcr'
|
5
|
+
|
6
|
+
VCR.configure do |c|
|
7
|
+
c.cassette_library_dir = 'spec/fixtures/vcr_cassettes'
|
8
|
+
c.hook_into :webmock
|
9
|
+
c.default_cassette_options = { :record => :once }
|
10
|
+
end
|
11
|
+
|
12
|
+
RSpec.configure {|c| c.include Bahia }
|
metadata
ADDED
@@ -0,0 +1,190 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: sbci
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease:
|
5
|
+
version: 0.1.0
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Egils Muzis
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
|
13
|
+
date: 2012-07-06 00:00:00 Z
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: rest-client
|
17
|
+
prerelease: false
|
18
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
19
|
+
none: false
|
20
|
+
requirements:
|
21
|
+
- - ">="
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: "0"
|
24
|
+
type: :runtime
|
25
|
+
version_requirements: *id001
|
26
|
+
- !ruby/object:Gem::Dependency
|
27
|
+
name: grit
|
28
|
+
prerelease: false
|
29
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
30
|
+
none: false
|
31
|
+
requirements:
|
32
|
+
- - ">="
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: "0"
|
35
|
+
type: :runtime
|
36
|
+
version_requirements: *id002
|
37
|
+
- !ruby/object:Gem::Dependency
|
38
|
+
name: trollop
|
39
|
+
prerelease: false
|
40
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ">="
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: "0"
|
46
|
+
type: :runtime
|
47
|
+
version_requirements: *id003
|
48
|
+
- !ruby/object:Gem::Dependency
|
49
|
+
name: bahia
|
50
|
+
prerelease: false
|
51
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
52
|
+
none: false
|
53
|
+
requirements:
|
54
|
+
- - ">="
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: "0"
|
57
|
+
type: :development
|
58
|
+
version_requirements: *id004
|
59
|
+
- !ruby/object:Gem::Dependency
|
60
|
+
name: guard
|
61
|
+
prerelease: false
|
62
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
63
|
+
none: false
|
64
|
+
requirements:
|
65
|
+
- - ">="
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: "0"
|
68
|
+
type: :development
|
69
|
+
version_requirements: *id005
|
70
|
+
- !ruby/object:Gem::Dependency
|
71
|
+
name: guard-rspec
|
72
|
+
prerelease: false
|
73
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
74
|
+
none: false
|
75
|
+
requirements:
|
76
|
+
- - ">="
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: "0"
|
79
|
+
type: :development
|
80
|
+
version_requirements: *id006
|
81
|
+
- !ruby/object:Gem::Dependency
|
82
|
+
name: growl
|
83
|
+
prerelease: false
|
84
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
85
|
+
none: false
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: "0"
|
90
|
+
type: :development
|
91
|
+
version_requirements: *id007
|
92
|
+
- !ruby/object:Gem::Dependency
|
93
|
+
name: rspec
|
94
|
+
prerelease: false
|
95
|
+
requirement: &id008 !ruby/object:Gem::Requirement
|
96
|
+
none: false
|
97
|
+
requirements:
|
98
|
+
- - ">="
|
99
|
+
- !ruby/object:Gem::Version
|
100
|
+
version: "0"
|
101
|
+
type: :development
|
102
|
+
version_requirements: *id008
|
103
|
+
- !ruby/object:Gem::Dependency
|
104
|
+
name: vcr
|
105
|
+
prerelease: false
|
106
|
+
requirement: &id009 !ruby/object:Gem::Requirement
|
107
|
+
none: false
|
108
|
+
requirements:
|
109
|
+
- - ">="
|
110
|
+
- !ruby/object:Gem::Version
|
111
|
+
version: "0"
|
112
|
+
type: :development
|
113
|
+
version_requirements: *id009
|
114
|
+
- !ruby/object:Gem::Dependency
|
115
|
+
name: webmock
|
116
|
+
prerelease: false
|
117
|
+
requirement: &id010 !ruby/object:Gem::Requirement
|
118
|
+
none: false
|
119
|
+
requirements:
|
120
|
+
- - ">="
|
121
|
+
- !ruby/object:Gem::Version
|
122
|
+
version: "0"
|
123
|
+
type: :development
|
124
|
+
version_requirements: *id010
|
125
|
+
description: Utility to easily export or import and Jenkins job configuration
|
126
|
+
email:
|
127
|
+
- egils.muzis@xbridge.com
|
128
|
+
executables:
|
129
|
+
- sbci
|
130
|
+
extensions: []
|
131
|
+
|
132
|
+
extra_rdoc_files: []
|
133
|
+
|
134
|
+
files:
|
135
|
+
- .gitignore
|
136
|
+
- .rspec
|
137
|
+
- Gemfile
|
138
|
+
- Guardfile
|
139
|
+
- LICENSE
|
140
|
+
- README.md
|
141
|
+
- Rakefile
|
142
|
+
- bin/sbci
|
143
|
+
- lib/config.xml
|
144
|
+
- lib/sbci.rb
|
145
|
+
- lib/sbci/version.rb
|
146
|
+
- sbci.gemspec
|
147
|
+
- spec/.DS_Store
|
148
|
+
- spec/fixtures/vcr_cassettes/delete.yml
|
149
|
+
- spec/fixtures/vcr_cassettes/dump.yml
|
150
|
+
- spec/fixtures/vcr_cassettes/publish.yml
|
151
|
+
- spec/fixtures/vcr_cassettes/republish.yml
|
152
|
+
- spec/sbci_cli_spec.rb
|
153
|
+
- spec/sbci_spec.rb
|
154
|
+
- spec/spec_helper.rb
|
155
|
+
homepage: https://github.com/simplybusiness/sbci
|
156
|
+
licenses: []
|
157
|
+
|
158
|
+
post_install_message:
|
159
|
+
rdoc_options: []
|
160
|
+
|
161
|
+
require_paths:
|
162
|
+
- lib
|
163
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
164
|
+
none: false
|
165
|
+
requirements:
|
166
|
+
- - ">="
|
167
|
+
- !ruby/object:Gem::Version
|
168
|
+
version: "0"
|
169
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
170
|
+
none: false
|
171
|
+
requirements:
|
172
|
+
- - ">="
|
173
|
+
- !ruby/object:Gem::Version
|
174
|
+
version: "0"
|
175
|
+
requirements: []
|
176
|
+
|
177
|
+
rubyforge_project:
|
178
|
+
rubygems_version: 1.8.24
|
179
|
+
signing_key:
|
180
|
+
specification_version: 3
|
181
|
+
summary: Manage your Jenkins jobs through this easy to use command-line interface
|
182
|
+
test_files:
|
183
|
+
- spec/.DS_Store
|
184
|
+
- spec/fixtures/vcr_cassettes/delete.yml
|
185
|
+
- spec/fixtures/vcr_cassettes/dump.yml
|
186
|
+
- spec/fixtures/vcr_cassettes/publish.yml
|
187
|
+
- spec/fixtures/vcr_cassettes/republish.yml
|
188
|
+
- spec/sbci_cli_spec.rb
|
189
|
+
- spec/sbci_spec.rb
|
190
|
+
- spec/spec_helper.rb
|