akqa-jenkins 0.6.4.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (106) hide show
  1. data/.gitignore +8 -0
  2. data/Changelog.md +54 -0
  3. data/Gemfile +3 -0
  4. data/Gemfile.lock +56 -0
  5. data/README.md +159 -0
  6. data/Rakefile +82 -0
  7. data/bin/jenkins +11 -0
  8. data/cucumber.yml +8 -0
  9. data/features/build_details.feature +42 -0
  10. data/features/configure.feature +36 -0
  11. data/features/default_host.feature +26 -0
  12. data/features/development.feature +14 -0
  13. data/features/launch_server.feature +16 -0
  14. data/features/listing_jobs.feature +34 -0
  15. data/features/manage_jobs.feature +214 -0
  16. data/features/manage_slave_nodes.feature +82 -0
  17. data/features/step_definitions/common_steps.rb +192 -0
  18. data/features/step_definitions/fixture_project_steps.rb +8 -0
  19. data/features/step_definitions/jenkins_steps.rb +116 -0
  20. data/features/step_definitions/scm_steps.rb +12 -0
  21. data/features/support/common.rb +37 -0
  22. data/features/support/env.rb +19 -0
  23. data/features/support/hooks.rb +16 -0
  24. data/features/support/jenkins_helpers.rb +6 -0
  25. data/features/support/matchers.rb +10 -0
  26. data/fixtures/jenkins/envfile.hpi +0 -0
  27. data/fixtures/jenkins/git.hpi +0 -0
  28. data/fixtures/jenkins/github.hpi +0 -0
  29. data/fixtures/jenkins/greenballs.hpi +0 -0
  30. data/fixtures/jenkins/rake.hpi +0 -0
  31. data/fixtures/jenkins/ruby.hpi +0 -0
  32. data/fixtures/projects/erlang/rebar.config +1 -0
  33. data/fixtures/projects/non-bundler/Rakefile +4 -0
  34. data/fixtures/projects/rails-3/.gitignore +4 -0
  35. data/fixtures/projects/rails-3/Gemfile +30 -0
  36. data/fixtures/projects/rails-3/Gemfile.lock +74 -0
  37. data/fixtures/projects/rails-3/README +256 -0
  38. data/fixtures/projects/rails-3/Rakefile +7 -0
  39. data/fixtures/projects/rails-3/app/controllers/application_controller.rb +3 -0
  40. data/fixtures/projects/rails-3/app/helpers/application_helper.rb +2 -0
  41. data/fixtures/projects/rails-3/app/views/layouts/application.html.erb +14 -0
  42. data/fixtures/projects/rails-3/config.ru +4 -0
  43. data/fixtures/projects/rails-3/config/application.rb +42 -0
  44. data/fixtures/projects/rails-3/config/boot.rb +13 -0
  45. data/fixtures/projects/rails-3/config/database.yml +22 -0
  46. data/fixtures/projects/rails-3/config/environment.rb +5 -0
  47. data/fixtures/projects/rails-3/config/environments/development.rb +26 -0
  48. data/fixtures/projects/rails-3/config/environments/production.rb +49 -0
  49. data/fixtures/projects/rails-3/config/environments/test.rb +35 -0
  50. data/fixtures/projects/rails-3/config/initializers/backtrace_silencers.rb +7 -0
  51. data/fixtures/projects/rails-3/config/initializers/inflections.rb +10 -0
  52. data/fixtures/projects/rails-3/config/initializers/mime_types.rb +5 -0
  53. data/fixtures/projects/rails-3/config/initializers/secret_token.rb +7 -0
  54. data/fixtures/projects/rails-3/config/initializers/session_store.rb +8 -0
  55. data/fixtures/projects/rails-3/config/locales/en.yml +5 -0
  56. data/fixtures/projects/rails-3/config/routes.rb +58 -0
  57. data/fixtures/projects/rails-3/db/seeds.rb +7 -0
  58. data/fixtures/projects/rails-3/doc/README_FOR_APP +2 -0
  59. data/fixtures/projects/rails-3/lib/tasks/.gitkeep +0 -0
  60. data/fixtures/projects/rails-3/public/404.html +26 -0
  61. data/fixtures/projects/rails-3/public/422.html +26 -0
  62. data/fixtures/projects/rails-3/public/500.html +26 -0
  63. data/fixtures/projects/rails-3/public/favicon.ico +0 -0
  64. data/fixtures/projects/rails-3/public/images/rails.png +0 -0
  65. data/fixtures/projects/rails-3/public/index.html +239 -0
  66. data/fixtures/projects/rails-3/public/javascripts/application.js +2 -0
  67. data/fixtures/projects/rails-3/public/javascripts/controls.js +965 -0
  68. data/fixtures/projects/rails-3/public/javascripts/dragdrop.js +974 -0
  69. data/fixtures/projects/rails-3/public/javascripts/effects.js +1123 -0
  70. data/fixtures/projects/rails-3/public/javascripts/prototype.js +6001 -0
  71. data/fixtures/projects/rails-3/public/javascripts/rails.js +175 -0
  72. data/fixtures/projects/rails-3/public/robots.txt +5 -0
  73. data/fixtures/projects/rails-3/public/stylesheets/.gitkeep +0 -0
  74. data/fixtures/projects/rails-3/script/rails +6 -0
  75. data/fixtures/projects/rails-3/test/performance/browsing_test.rb +9 -0
  76. data/fixtures/projects/rails-3/test/test_helper.rb +13 -0
  77. data/fixtures/projects/rails-3/vendor/plugins/.gitkeep +0 -0
  78. data/fixtures/projects/ruby/Gemfile +3 -0
  79. data/fixtures/projects/ruby/Gemfile.lock +10 -0
  80. data/fixtures/projects/ruby/Rakefile +4 -0
  81. data/jenkins.gemspec +33 -0
  82. data/lib/jenkins.rb +6 -0
  83. data/lib/jenkins/api.rb +250 -0
  84. data/lib/jenkins/cli.rb +291 -0
  85. data/lib/jenkins/cli/formatting.rb +53 -0
  86. data/lib/jenkins/config.rb +27 -0
  87. data/lib/jenkins/core_ext/hash.rb +9 -0
  88. data/lib/jenkins/core_ext/object/blank.rb +77 -0
  89. data/lib/jenkins/hudson-cli.jar +0 -0
  90. data/lib/jenkins/job_config_builder.rb +292 -0
  91. data/lib/jenkins/project_scm.rb +22 -0
  92. data/lib/jenkins/remote.rb +11 -0
  93. data/lib/jenkins/version.rb +3 -0
  94. data/spec/fixtures/ec2_global.config.xml +103 -0
  95. data/spec/fixtures/erlang.single.config.xml +59 -0
  96. data/spec/fixtures/rails.multi.config.xml +82 -0
  97. data/spec/fixtures/rails.single.config.triggers.xml +84 -0
  98. data/spec/fixtures/rails.single.config.xml +80 -0
  99. data/spec/fixtures/ruby.multi-ruby-multi-labels.config.xml +84 -0
  100. data/spec/fixtures/ruby.multi.config.xml +77 -0
  101. data/spec/fixtures/ruby.single.config.xml +58 -0
  102. data/spec/fixtures/therubyracer.config.xml +77 -0
  103. data/spec/hash_key_cleaner_spec.rb +25 -0
  104. data/spec/job_config_builder_spec.rb +150 -0
  105. data/spec/spec_helper.rb +15 -0
  106. metadata +283 -0
@@ -0,0 +1,292 @@
1
+ require "builder"
2
+
3
+ module Jenkins
4
+ class JobConfigBuilder
5
+ attr_accessor :job_type
6
+ attr_accessor :steps, :rubies
7
+ attr_accessor :scm, :public_scm, :scm_branches
8
+ attr_accessor :scm, :public_scm, :git_branches
9
+ attr_accessor :assigned_node, :node_labels # TODO just one of these
10
+ attr_accessor :envfile
11
+
12
+ InvalidTemplate = Class.new(StandardError)
13
+
14
+ VALID_JOB_TEMPLATES = %w[none rails rails3 ruby rubygem erlang]
15
+
16
+ # +job_type+ - template of default steps to create with the job
17
+ # +steps+ - array of [:method, cmd], e.g. [:build_shell_step, "bundle initial"]
18
+ # - Default is based on +job_type+.
19
+ # +scm+ - URL to the repository. Currently only support git URLs.
20
+ # +public_scm+ - convert the +scm+ URL to a publicly accessible URL for the Jenkins job config.
21
+ # +scm_branches+ - array of branches to run builds. Default: ['master']
22
+ # +rubies+ - list of RVM rubies to run tests (via Jenkins Axes).
23
+ # +assigned_node+ - restrict this job to running on slaves with these labels (space separated)
24
+ def initialize(job_type = :ruby, &block)
25
+ self.job_type = job_type.to_s if job_type
26
+
27
+ yield self
28
+
29
+ self.scm_branches ||= ["master"]
30
+ raise InvalidTemplate unless VALID_JOB_TEMPLATES.include?(job_type.to_s)
31
+ end
32
+
33
+ def builder
34
+ b = Builder::XmlMarkup.new :indent => 2
35
+ b.instruct!
36
+ b.tag!(matrix_project? ? "matrix-project" : "project") do
37
+ b.actions
38
+ b.description
39
+ b.keepDependencies false
40
+ b.properties
41
+ build_scm b
42
+ b.assignedNode assigned_node if assigned_node
43
+ b.canRoam !assigned_node
44
+ b.disabled false
45
+ b.blockBuildWhenUpstreamBuilding false
46
+ b.triggers :class => "vector"
47
+ b.concurrentBuild false
48
+ build_axes b if matrix_project?
49
+ build_steps b
50
+ b.publishers
51
+ build_wrappers b
52
+ b.runSequentially false if matrix_project?
53
+ end
54
+ end
55
+
56
+ def to_xml
57
+ builder.to_s
58
+ end
59
+
60
+ protected
61
+
62
+ # <scm class="hudson.plugins.git.GitSCM"> ... </scm>
63
+ def build_scm(b)
64
+ if scm && scm =~ /git/
65
+ scm_url = public_scm ? public_only_git_scm(scm) : scm
66
+ b.scm :class => "hudson.plugins.git.GitSCM" do
67
+ b.configVersion 1
68
+ b.remoteRepositories do
69
+ b.tag! "org.spearce.jgit.transport.RemoteConfig" do
70
+ b.string "origin"
71
+ b.int 5
72
+ b.string "fetch"
73
+ b.string "+refs/heads/*:refs/remotes/origin/*"
74
+ b.string "receivepack"
75
+ b.string "git-upload-pack"
76
+ b.string "uploadpack"
77
+ b.string "git-upload-pack"
78
+ b.string "url"
79
+ b.string scm_url
80
+ b.string "tagopt"
81
+ b.string
82
+ end
83
+ end
84
+
85
+ if scm_branches
86
+ b.branches do
87
+ scm_branches.each do |branch|
88
+ b.tag! "hudson.plugins.git.BranchSpec" do
89
+ b.name branch
90
+ end
91
+ end
92
+ end
93
+ end
94
+
95
+ b.localBranch
96
+ b.mergeOptions
97
+ b.recursiveSubmodules false
98
+ b.doGenerateSubmoduleConfigurations false
99
+ b.authorOrCommitter false
100
+ b.clean false
101
+ b.wipeOutWorkspace false
102
+ b.buildChooser :class => "hudson.plugins.git.util.DefaultBuildChooser"
103
+ b.gitTool "Default"
104
+ b.submoduleCfg :class => "list"
105
+ b.relativeTargetDir
106
+ b.excludedRegions
107
+ b.excludedUsers
108
+ end
109
+ end
110
+ end
111
+
112
+ def matrix_project?
113
+ !(rubies.blank? && node_labels.blank?)
114
+ end
115
+
116
+ # <hudson.matrix.TextAxis>
117
+ # <name>RUBY_VERSION</name>
118
+ # <values>
119
+ # <string>1.8.7</string>
120
+ # <string>1.9.2</string>
121
+ # <string>rbx-head</string>
122
+ # <string>jruby</string>
123
+ # </values>
124
+ # </hudson.matrix.TextAxis>
125
+ # <hudson.matrix.LabelAxis>
126
+ # <name>label</name>
127
+ # <values>
128
+ # <string>1.8.7</string>
129
+ # <string>ubuntu</string>
130
+ # </values>
131
+ # </hudson.matrix.LabelAxis>
132
+ def build_axes(b)
133
+ b.axes do
134
+ unless rubies.blank?
135
+ b.tag! "hudson.matrix.TextAxis" do
136
+ b.name "RUBY_VERSION"
137
+ b.values do
138
+ rubies.each do |rvm_name|
139
+ b.string rvm_name
140
+ end
141
+ end
142
+ end
143
+ end
144
+ unless node_labels.blank?
145
+ b.tag! "hudson.matrix.LabelAxis" do
146
+ b.name "label"
147
+ b.values do
148
+ node_labels.each do |label|
149
+ b.string label
150
+ end
151
+ end
152
+ end
153
+ end
154
+ end
155
+ end
156
+
157
+ # Example:
158
+ # <buildWrappers>
159
+ # <hudson.plugins.envfile.EnvFileBuildWrapper>
160
+ # <filePath>/path/to/env/file</filePath>
161
+ # </hudson.plugins.envfile.EnvFileBuildWrapper>
162
+ # </buildWrappers>
163
+ def build_wrappers(b)
164
+ if envfile
165
+ b.buildWrappers do
166
+ self.envfile = [envfile] unless envfile.is_a?(Array)
167
+ b.tag! "hudson.plugins.envfile.EnvFileBuildWrapper" do
168
+ envfile.each do |file|
169
+ b.filePath file
170
+ end
171
+ end
172
+ end
173
+ else
174
+ b.buildWrappers
175
+ end
176
+ end
177
+
178
+ # The important sequence of steps that are run to process a job build.
179
+ # Can be defaulted by the +job_type+ using +default_steps(job_type)+,
180
+ # or customized via +steps+ array.
181
+ def build_steps(b)
182
+ b.builders do
183
+ self.steps ||= default_steps(job_type)
184
+ steps.each do |step|
185
+ method, cmd = step
186
+ send(method.to_sym, b, cmd) # e.g. build_shell_step(b, "bundle install")
187
+ end
188
+ end
189
+ end
190
+
191
+ def default_steps(job_type)
192
+ steps = case job_type.to_sym
193
+ when :rails, :rails3
194
+ [
195
+ [:build_shell_step, "bundle install"],
196
+ [:build_ruby_step, <<-RUBY.gsub(/^ /, '')],
197
+ unless File.exist?("config/database.yml")
198
+ require 'fileutils'
199
+ example = Dir["config/database*"].first
200
+ puts "Using \#{example} for config/database.yml"
201
+ FileUtils.cp example, "config/database.yml"
202
+ end
203
+ RUBY
204
+ [:build_shell_step, "bundle exec rake db:create:all"],
205
+ [:build_shell_step, <<-RUBY.gsub(/^ /, '')],
206
+ if [ -f db/schema.rb ]; then
207
+ bundle exec rake db:schema:load
208
+ else
209
+ bundle exec rake db:migrate
210
+ fi
211
+ RUBY
212
+ [:build_shell_step, "bundle exec rake"]
213
+ ]
214
+ when :ruby, :rubygems
215
+ [
216
+ [:build_shell_step, "bundle install"],
217
+ [:build_shell_step, "bundle exec rake"]
218
+ ]
219
+ when :erlang
220
+ [
221
+ [:build_shell_step, "rebar compile"],
222
+ [:build_shell_step, "rebar ct"]
223
+ ]
224
+ else
225
+ [ [:build_shell_step, 'echo "THERE ARE NO STEPS! Except this one..."'] ]
226
+ end
227
+ rubies.blank? ? steps : default_rvm_steps + steps
228
+ end
229
+
230
+ def default_rvm_steps
231
+ [
232
+ [:build_shell_step, "rvm $RUBY_VERSION"],
233
+ [:build_shell_step, "rvm gemset create ruby-$RUBY_VERSION && rvm gemset use ruby-$RUBY_VERSION"]
234
+ ]
235
+ end
236
+
237
+ # <hudson.tasks.Shell>
238
+ # <command>echo &apos;THERE ARE NO STEPS! Except this one...&apos;</command>
239
+ # </hudson.tasks.Shell>
240
+ def build_shell_step(b, command)
241
+ b.tag! "hudson.tasks.Shell" do
242
+ b.command command.to_xs.gsub("&amp;", '&') #.gsub(%r{"}, '&quot;').gsub(%r{'}, '&apos;')
243
+ end
244
+ end
245
+
246
+ # <hudson.plugins.ruby.Ruby>
247
+ # <command>unless File.exist?(&quot;config/database.yml&quot;)
248
+ # require &apos;fileutils&apos;
249
+ # example = Dir[&quot;config/database*&quot;].first
250
+ # puts &quot;Using #{example} for config/database.yml&quot;
251
+ # FileUtils.cp example, &quot;config/database.yml&quot;
252
+ # end</command>
253
+ # </hudson.plugins.ruby.Ruby>
254
+ def build_ruby_step(b, command)
255
+ b.tag! "hudson.plugins.ruby.Ruby" do
256
+ b.command do
257
+ b << command.to_xs.gsub(%r{"}, '&quot;').gsub(%r{'}, '&apos;')
258
+ end
259
+ end
260
+ end
261
+
262
+ # Usage: build_ruby_step b, "db:schema:load"
263
+ #
264
+ # <hudson.plugins.rake.Rake>
265
+ # <rakeInstallation>(Default)</rakeInstallation>
266
+ # <rakeFile></rakeFile>
267
+ # <rakeLibDir></rakeLibDir>
268
+ # <rakeWorkingDir></rakeWorkingDir>
269
+ # <tasks>db:schema:load</tasks>
270
+ # <silent>false</silent>
271
+ # </hudson.plugins.rake.Rake>
272
+ def build_rake_step(b, tasks)
273
+ b.tag! "hudson.plugins.rake.Rake" do
274
+ b.rakeInstallation "(Default)"
275
+ b.rakeFile
276
+ b.rakeLibDir
277
+ b.rakeWorkingDir
278
+ b.tasks tasks
279
+ b.silent false
280
+ end
281
+ end
282
+
283
+ # Converts git@github.com:drnic/newgem.git into git://github.com/drnic/newgem.git
284
+ def public_only_git_scm(scm_url)
285
+ if scm_url =~ /git@([\w\-_.]+):(.+)\.git/
286
+ "git://#{$1}/#{$2}.git"
287
+ else
288
+ scm_url
289
+ end
290
+ end
291
+ end
292
+ end
@@ -0,0 +1,22 @@
1
+ module Jenkins
2
+ class ProjectScm
3
+
4
+ def self.discover(scm)
5
+ ProjectScmGit.new(scm) if File.exist?(".git") && File.directory?(".git")
6
+ end
7
+
8
+ def self.supported
9
+ %w[git]
10
+ end
11
+ end
12
+
13
+ class ProjectScmGit < ProjectScm
14
+ def initialize(url = nil)
15
+ @url = url
16
+ end
17
+
18
+ def url
19
+ @url ||= `git config remote.origin.url`.strip
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,11 @@
1
+ module Jenkins
2
+ class Remote
3
+ def self.add_server(name, uri)
4
+ remotes[name] = uri
5
+ end
6
+
7
+ def self.remotes
8
+ @remotes ||= {}
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,3 @@
1
+ module Jenkins
2
+ VERSION = "0.6.4.1"
3
+ end
@@ -0,0 +1,103 @@
1
+ <?xml version='1.0' encoding='UTF-8'?>
2
+ <hudson>
3
+ <version>1.359</version>
4
+ <numExecutors>2</numExecutors>
5
+ <mode>NORMAL</mode>
6
+ <authorizationStrategy class="hudson.security.AuthorizationStrategy$Unsecured"/>
7
+ <securityRealm class="hudson.security.SecurityRealm$None"/>
8
+ <jdks/>
9
+ <clouds>
10
+ <hudson.plugins.ec2.EC2Cloud>
11
+ <name>ec2-US_EAST_1</name>
12
+ <accessId>0MVEQ5Q0BNYEGJX898G2</accessId>
13
+ <secretKey>[REMOVED]</secretKey>
14
+ <privateKey>
15
+ <privateKey>[REMOVED]</privateKey>
16
+ </privateKey>
17
+ <instanceCap>2147483647</instanceCap>
18
+ <templates>
19
+ <hudson.plugins.ec2.SlaveTemplate>
20
+ <ami>ami-79d43d10</ami>
21
+ <description>Ubuntu Lucid 10.04 64bit Server</description>
22
+ <remoteFS>/mnt/hudson</remoteFS>
23
+ <type>LARGE</type>
24
+ <labels>Ubuntu-Lucid-10.04-server-amd64 GCC_44</labels>
25
+ <initScript></initScript>
26
+ <userData></userData>
27
+ <numExecutors>4</numExecutors>
28
+ <remoteAdmin>ubuntu</remoteAdmin>
29
+ <rootCommandPrefix>sudo</rootCommandPrefix>
30
+ </hudson.plugins.ec2.SlaveTemplate>
31
+ <hudson.plugins.ec2.SlaveTemplate>
32
+ <ami>ami-e7d53c8e</ami>
33
+ <description>Ubuntu Karmic 9.10 64bit Server</description>
34
+ <remoteFS>/mnt/hudson</remoteFS>
35
+ <type>LARGE</type>
36
+ <labels>Ubuntu-Karmic-9.10-server-amd64 GCC_43</labels>
37
+ <initScript></initScript>
38
+ <userData></userData>
39
+ <numExecutors>4</numExecutors>
40
+ <remoteAdmin>ubuntu</remoteAdmin>
41
+ <rootCommandPrefix>sudo</rootCommandPrefix>
42
+ </hudson.plugins.ec2.SlaveTemplate>
43
+ </templates>
44
+ <region>US_EAST_1</region>
45
+ </hudson.plugins.ec2.EC2Cloud>
46
+ </clouds>
47
+ <slaves>
48
+ <slave>
49
+ <name>Legolas</name>
50
+ <description>Legolas Mac Pro</description>
51
+ <remoteFS>/Users/hudon/work</remoteFS>
52
+ <numExecutors>2</numExecutors>
53
+ <mode>NORMAL</mode>
54
+ <retentionStrategy class="hudson.slaves.RetentionStrategy$Always"/>
55
+ <launcher class="hudson.plugins.sshslaves.SSHLauncher">
56
+ <host>legolas.thefrontside.net</host>
57
+ <port>22</port>
58
+ <username>cowboyd</username>
59
+ <password>[REMOVED]</password>
60
+ <privatekey></privatekey>
61
+ <jvmOptions></jvmOptions>
62
+ </launcher>
63
+ <label>OSX-Snow-Leopard-10.6.3</label>
64
+ <nodeProperties/>
65
+ </slave>
66
+ <slave>
67
+ <name>Gimli</name>
68
+ <description>The Mac Mini Sitting on the bookshelf at the frontside office</description>
69
+ <remoteFS>/Users/hudson/work</remoteFS>
70
+ <numExecutors>2</numExecutors>
71
+ <mode>NORMAL</mode>
72
+ <retentionStrategy class="hudson.slaves.RetentionStrategy$Always"/>
73
+ <launcher class="hudson.plugins.sshslaves.SSHLauncher">
74
+ <host>gimli.thefrontside.net</host>
75
+ <port>22</port>
76
+ <username>hudson</username>
77
+ <password>[REMOVED]</password>
78
+ <privatekey></privatekey>
79
+ <jvmOptions></jvmOptions>
80
+ </launcher>
81
+ <label>OSX-Leopard-10.5</label>
82
+ <nodeProperties/>
83
+ </slave>
84
+ </slaves>
85
+ <quietPeriod>5</quietPeriod>
86
+ <scmCheckoutRetryCount>0</scmCheckoutRetryCount>
87
+ <views>
88
+ <hudson.model.AllView>
89
+ <owner class="hudson" reference="../../.."/>
90
+ <name>All</name>
91
+ <filterExecutors>false</filterExecutors>
92
+ <filterQueue>false</filterQueue>
93
+ </hudson.model.AllView>
94
+ </views>
95
+ <primaryView>All</primaryView>
96
+ <slaveAgentPort>0</slaveAgentPort>
97
+ <label></label>
98
+ <nodeProperties/>
99
+ <globalNodeProperties/>
100
+ <disabledAdministrativeMonitors>
101
+ <string>OldData</string>
102
+ </disabledAdministrativeMonitors>
103
+ </hudson>
@@ -0,0 +1,59 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project>
3
+ <actions/>
4
+ <description/>
5
+ <keepDependencies>false</keepDependencies>
6
+ <properties/>
7
+ <scm class="hudson.plugins.git.GitSCM">
8
+ <configVersion>1</configVersion>
9
+ <remoteRepositories>
10
+ <org.spearce.jgit.transport.RemoteConfig>
11
+ <string>origin</string>
12
+ <int>5</int>
13
+ <string>fetch</string>
14
+ <string>+refs/heads/*:refs/remotes/origin/*</string>
15
+ <string>receivepack</string>
16
+ <string>git-upload-pack</string>
17
+ <string>uploadpack</string>
18
+ <string>git-upload-pack</string>
19
+ <string>url</string>
20
+ <string>git://codebasehq.com/mocra/misc/mocra-web.git</string>
21
+ <string>tagopt</string>
22
+ <string/>
23
+ </org.spearce.jgit.transport.RemoteConfig>
24
+ </remoteRepositories>
25
+ <branches>
26
+ <hudson.plugins.git.BranchSpec>
27
+ <name>master</name>
28
+ </hudson.plugins.git.BranchSpec>
29
+ </branches>
30
+ <localBranch/>
31
+ <mergeOptions/>
32
+ <recursiveSubmodules>false</recursiveSubmodules>
33
+ <doGenerateSubmoduleConfigurations>false</doGenerateSubmoduleConfigurations>
34
+ <authorOrCommitter>false</authorOrCommitter>
35
+ <clean>false</clean>
36
+ <wipeOutWorkspace>false</wipeOutWorkspace>
37
+ <buildChooser class="hudson.plugins.git.util.DefaultBuildChooser"/>
38
+ <gitTool>Default</gitTool>
39
+ <submoduleCfg class="list"/>
40
+ <relativeTargetDir/>
41
+ <excludedRegions/>
42
+ <excludedUsers/>
43
+ </scm>
44
+ <canRoam>true</canRoam>
45
+ <disabled>false</disabled>
46
+ <blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding>
47
+ <triggers class="vector"/>
48
+ <concurrentBuild>false</concurrentBuild>
49
+ <builders>
50
+ <hudson.tasks.Shell>
51
+ <command>rebar compile</command>
52
+ </hudson.tasks.Shell>
53
+ <hudson.tasks.Shell>
54
+ <command>rebar ct</command>
55
+ </hudson.tasks.Shell>
56
+ </builders>
57
+ <publishers/>
58
+ <buildWrappers/>
59
+ </project>