hudson 0.5.0 → 0.6.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 +1 -0
- data/Changelog.md +3 -0
- data/Gemfile.lock +11 -43
- data/README.md +3 -151
- data/Rakefile +0 -77
- data/bin/hudson +2 -10
- data/hudson.gemspec +2 -12
- data/lib/hudson.rb +1 -8
- data/lib/hudson/version.rb +1 -1
- metadata +8 -203
- data/features/default_host.feature +0 -19
- data/features/development.feature +0 -14
- data/features/launch_server.feature +0 -17
- data/features/listing_jobs.feature +0 -34
- data/features/manage_jobs.feature +0 -207
- data/features/manage_slave_nodes.feature +0 -80
- data/features/step_definitions/common_steps.rb +0 -197
- data/features/step_definitions/fixture_project_steps.rb +0 -8
- data/features/step_definitions/hudson_steps.rb +0 -104
- data/features/step_definitions/scm_steps.rb +0 -12
- data/features/support/common.rb +0 -37
- data/features/support/env.rb +0 -14
- data/features/support/hooks.rb +0 -16
- data/features/support/hudson_helpers.rb +0 -6
- data/features/support/matchers.rb +0 -10
- data/lib/hudson/api.rb +0 -219
- data/lib/hudson/cli.rb +0 -253
- data/lib/hudson/cli/formatting.rb +0 -53
- data/lib/hudson/config.rb +0 -27
- data/lib/hudson/core_ext/hash.rb +0 -9
- data/lib/hudson/core_ext/object/blank.rb +0 -77
- data/lib/hudson/hudson-cli.jar +0 -0
- data/lib/hudson/installation.rb +0 -136
- data/lib/hudson/job_config_builder.rb +0 -287
- data/lib/hudson/project_scm.rb +0 -22
- data/lib/hudson/remote.rb +0 -11
- data/spec/fixtures/ec2_global.config.xml +0 -103
- data/spec/fixtures/rails.multi.config.xml +0 -82
- data/spec/fixtures/rails.single.config.triggers.xml +0 -84
- data/spec/fixtures/rails.single.config.xml +0 -80
- data/spec/fixtures/ruby.multi-ruby-multi-labels.config.xml +0 -84
- data/spec/fixtures/ruby.multi.config.xml +0 -77
- data/spec/fixtures/ruby.single.config.xml +0 -58
- data/spec/fixtures/therubyracer.config.xml +0 -77
- data/spec/hash_key_cleaner_spec.rb +0 -25
- data/spec/job_config_builder_spec.rb +0 -137
- data/spec/spec_helper.rb +0 -15
@@ -1,53 +0,0 @@
|
|
1
|
-
require 'term/ansicolor'
|
2
|
-
|
3
|
-
module Hudson
|
4
|
-
class CLI < Thor
|
5
|
-
module Formatting
|
6
|
-
module ClassMethods
|
7
|
-
def task_help(shell, task_name)
|
8
|
-
meth = normalize_task_name(task_name)
|
9
|
-
task = all_tasks[meth]
|
10
|
-
handle_no_task_error(meth) unless task
|
11
|
-
|
12
|
-
shell.say "usage: #{banner(task)}"
|
13
|
-
shell.say
|
14
|
-
class_options_help(shell, nil => task.options.map { |_, o| o })
|
15
|
-
# shell.say task.description
|
16
|
-
# shell.say
|
17
|
-
end
|
18
|
-
|
19
|
-
|
20
|
-
def print_options(shell, options, grp = nil)
|
21
|
-
return if options.empty?
|
22
|
-
table = options.map do |option|
|
23
|
-
prototype = if option.default
|
24
|
-
" [#{option.default}]"
|
25
|
-
elsif option.boolean?
|
26
|
-
""
|
27
|
-
elsif option.required?
|
28
|
-
" #{option.banner}"
|
29
|
-
else
|
30
|
-
" [#{option.banner}]"
|
31
|
-
end
|
32
|
-
aliases = option.aliases.empty? ? "" : option.aliases.join(" ") + ","
|
33
|
-
[aliases, "--#{option.name}#{prototype}", "\t",option.description]
|
34
|
-
end
|
35
|
-
shell.print_table(table, :ident => 2)
|
36
|
-
shell.say
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
module InstanceMethods
|
41
|
-
def c
|
42
|
-
Term::ANSIColor
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
def self.included(receiver)
|
47
|
-
receiver.extend ClassMethods
|
48
|
-
receiver.send :include, InstanceMethods
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
data/lib/hudson/config.rb
DELETED
@@ -1,27 +0,0 @@
|
|
1
|
-
module Hudson
|
2
|
-
module Config
|
3
|
-
extend self
|
4
|
-
|
5
|
-
def [](key)
|
6
|
-
config[key]
|
7
|
-
end
|
8
|
-
|
9
|
-
def config
|
10
|
-
@config ||= if File.exist?(config_file)
|
11
|
-
JSON.parse(File.read(config_file))
|
12
|
-
else
|
13
|
-
{}
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
def store!
|
18
|
-
@config ||= {}
|
19
|
-
FileUtils.mkdir_p(File.dirname(config_file))
|
20
|
-
File.open(config_file, "w") { |file| file << @config.to_json }
|
21
|
-
end
|
22
|
-
|
23
|
-
def config_file
|
24
|
-
@config_file ||= "#{ENV['HOME']}/.hudson/hudsonrb-config.json"
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
data/lib/hudson/core_ext/hash.rb
DELETED
@@ -1,77 +0,0 @@
|
|
1
|
-
# Vendored from activesupport 3.0.1
|
2
|
-
class Object
|
3
|
-
# An object is blank if it's false, empty, or a whitespace string.
|
4
|
-
# For example, "", " ", +nil+, [], and {} are blank.
|
5
|
-
#
|
6
|
-
# This simplifies:
|
7
|
-
#
|
8
|
-
# if !address.nil? && !address.empty?
|
9
|
-
#
|
10
|
-
# ...to:
|
11
|
-
#
|
12
|
-
# if !address.blank?
|
13
|
-
def blank?
|
14
|
-
respond_to?(:empty?) ? empty? : !self
|
15
|
-
end
|
16
|
-
|
17
|
-
# An object is present if it's not blank.
|
18
|
-
def present?
|
19
|
-
!blank?
|
20
|
-
end
|
21
|
-
|
22
|
-
# Returns object if it's #present? otherwise returns nil.
|
23
|
-
# object.presence is equivalent to object.present? ? object : nil.
|
24
|
-
#
|
25
|
-
# This is handy for any representation of objects where blank is the same
|
26
|
-
# as not present at all. For example, this simplifies a common check for
|
27
|
-
# HTTP POST/query parameters:
|
28
|
-
#
|
29
|
-
# state = params[:state] if params[:state].present?
|
30
|
-
# country = params[:country] if params[:country].present?
|
31
|
-
# region = state || country || 'US'
|
32
|
-
#
|
33
|
-
# ...becomes:
|
34
|
-
#
|
35
|
-
# region = params[:state].presence || params[:country].presence || 'US'
|
36
|
-
def presence
|
37
|
-
self if present?
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
class NilClass #:nodoc:
|
42
|
-
def blank?
|
43
|
-
true
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
class FalseClass #:nodoc:
|
48
|
-
def blank?
|
49
|
-
true
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
class TrueClass #:nodoc:
|
54
|
-
def blank?
|
55
|
-
false
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
class Array #:nodoc:
|
60
|
-
alias_method :blank?, :empty?
|
61
|
-
end
|
62
|
-
|
63
|
-
class Hash #:nodoc:
|
64
|
-
alias_method :blank?, :empty?
|
65
|
-
end
|
66
|
-
|
67
|
-
class String #:nodoc:
|
68
|
-
def blank?
|
69
|
-
self !~ /\S/
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
|
-
class Numeric #:nodoc:
|
74
|
-
def blank?
|
75
|
-
false
|
76
|
-
end
|
77
|
-
end
|
data/lib/hudson/hudson-cli.jar
DELETED
Binary file
|
data/lib/hudson/installation.rb
DELETED
@@ -1,136 +0,0 @@
|
|
1
|
-
module Hudson
|
2
|
-
class Installation
|
3
|
-
attr_reader :directory
|
4
|
-
|
5
|
-
def initialize(shell, opts = {})
|
6
|
-
@shell = shell
|
7
|
-
@options = opts
|
8
|
-
@serverhome = File.expand_path(@options[:home])
|
9
|
-
@warfile = File.join(File.dirname(@serverhome), "hudson.war")
|
10
|
-
@versionfile = "#{@serverhome}/version.txt"
|
11
|
-
@control_port = opts[:control]
|
12
|
-
end
|
13
|
-
|
14
|
-
def launch!
|
15
|
-
unless warfile?
|
16
|
-
@shell.say "no server currently installed."
|
17
|
-
upgrade!
|
18
|
-
end
|
19
|
-
javatmp = File.join(@serverhome, "javatmp")
|
20
|
-
FileUtils.mkdir_p javatmp
|
21
|
-
ENV['HUDSON_HOME'] = @serverhome
|
22
|
-
cmd = ["java", "-Djava.io.tmpdir=#{javatmp}", "-jar", @warfile]
|
23
|
-
cmd << "--daemon" if @options[:daemon]
|
24
|
-
cmd << "--logfile=#{File.expand_path(@options[:logfile])}" if @options[:logfile]
|
25
|
-
cmd << "--httpPort=#{@options[:port]}"
|
26
|
-
cmd << "--controlPort=#{@control_port}"
|
27
|
-
@shell.say cmd.join(" ")
|
28
|
-
exec(*cmd)
|
29
|
-
end
|
30
|
-
|
31
|
-
def kill!
|
32
|
-
require 'socket'
|
33
|
-
TCPSocket.open("localhost", @control_port) do |sock|
|
34
|
-
sock.write("0")
|
35
|
-
end
|
36
|
-
exit
|
37
|
-
end
|
38
|
-
|
39
|
-
def upgrade!
|
40
|
-
FileUtils.mkdir_p @serverhome
|
41
|
-
hudson_stock ? upgrade_from_fixture_stock : upgrade_from_network_stock
|
42
|
-
end
|
43
|
-
|
44
|
-
def hudson_stock
|
45
|
-
ENV['HUDSON_STOCK']
|
46
|
-
end
|
47
|
-
|
48
|
-
private
|
49
|
-
|
50
|
-
def warfile?
|
51
|
-
File.exists?(@warfile) && system("unzip -l #{@warfile} > /dev/null 2>/dev/null")
|
52
|
-
end
|
53
|
-
|
54
|
-
def upgrade_from_fixture_stock
|
55
|
-
FileUtils.cp File.join(hudson_stock, "hudson.war"), @warfile
|
56
|
-
FileUtils.cp_r File.join(hudson_stock, "plugins"), @serverhome
|
57
|
-
end
|
58
|
-
|
59
|
-
def upgrade_from_network_stock
|
60
|
-
require 'ostruct'
|
61
|
-
progress = Progress.new
|
62
|
-
latest = progress.means "grabbing the latest metadata from hudson-ci.org" do |step|
|
63
|
-
JSON.parse(HTTParty.get("http://hudson-ci.org/update-center.json").lines.to_a[1..-2].join("\n"))
|
64
|
-
end
|
65
|
-
progress.means "downloading hudson server" do |step|
|
66
|
-
latest_version = latest["core"]["version"]
|
67
|
-
if latest_version > current_server_version
|
68
|
-
puts
|
69
|
-
`curl -L --progress-bar #{latest["core"]["url"]} -o #{@warfile}`
|
70
|
-
self.current_server_version = latest_version
|
71
|
-
step.ok("#{current_server_version} -> #{latest_version}")
|
72
|
-
else
|
73
|
-
step.ok("Up-to-date at #{current_server_version}")
|
74
|
-
end
|
75
|
-
end
|
76
|
-
|
77
|
-
plugins_dir = File.join(@serverhome, 'plugins')
|
78
|
-
plugins = if File.exists?(plugins_dir)
|
79
|
-
Dir.chdir(plugins_dir) do
|
80
|
-
Dir['*.hpi'].map {|entry| File.basename(entry,".hpi")}
|
81
|
-
end
|
82
|
-
else
|
83
|
-
%w(envfile git github greenballs rake ruby)
|
84
|
-
end
|
85
|
-
FileUtils.mkdir_p(plugins_dir)
|
86
|
-
for plugin in plugins do
|
87
|
-
metadata = OpenStruct.new(latest['plugins'][plugin])
|
88
|
-
progress.means "downloading #{plugin} plugin" do |step|
|
89
|
-
system("curl -L --silent #{metadata.url} > #{plugins_dir}/#{plugin}.hpi")
|
90
|
-
step.ok(metadata.version)
|
91
|
-
end
|
92
|
-
end unless progress.aborted
|
93
|
-
end
|
94
|
-
|
95
|
-
def current_server_version
|
96
|
-
File.exists?(@versionfile) ? File.read(@versionfile) : "0"
|
97
|
-
end
|
98
|
-
|
99
|
-
def current_server_version=(version)
|
100
|
-
File.open(@versionfile, "w") do |f|
|
101
|
-
f.write(version)
|
102
|
-
end
|
103
|
-
end
|
104
|
-
|
105
|
-
class Progress
|
106
|
-
attr_reader :aborted
|
107
|
-
def initialize
|
108
|
-
@shell = Thor::Shell::Color.new
|
109
|
-
@aborted = false
|
110
|
-
end
|
111
|
-
|
112
|
-
def means(step)
|
113
|
-
return if @aborted
|
114
|
-
begin
|
115
|
-
@shell.say(step + "... ")
|
116
|
-
yield(self).tap do
|
117
|
-
@shell.say("[OK]", :green)
|
118
|
-
end
|
119
|
-
rescue Ok => ok
|
120
|
-
@shell.say("[OK#{ok.message ? " - #{ok.message}" : ''}]", :green)
|
121
|
-
rescue StandardError => e
|
122
|
-
@shell.say("[FAIL - #{e.message}]", :red)
|
123
|
-
@aborted = true
|
124
|
-
false
|
125
|
-
end
|
126
|
-
end
|
127
|
-
|
128
|
-
def ok(msg = nil)
|
129
|
-
raise Ok.new(msg)
|
130
|
-
end
|
131
|
-
|
132
|
-
class Ok < StandardError
|
133
|
-
end
|
134
|
-
end
|
135
|
-
end
|
136
|
-
end
|
@@ -1,287 +0,0 @@
|
|
1
|
-
require "builder"
|
2
|
-
|
3
|
-
module Hudson
|
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]
|
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 Hudson job config.
|
21
|
-
# +scm_branches+ - array of branches to run builds. Default: ['master']
|
22
|
-
# +rubies+ - list of RVM rubies to run tests (via Hudson 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
|
-
else
|
220
|
-
[ [:build_shell_step, 'echo "THERE ARE NO STEPS! Except this one..."'] ]
|
221
|
-
end
|
222
|
-
rubies.blank? ? steps : default_rvm_steps + steps
|
223
|
-
end
|
224
|
-
|
225
|
-
def default_rvm_steps
|
226
|
-
[
|
227
|
-
[:build_shell_step, "rvm $RUBY_VERSION"],
|
228
|
-
[:build_shell_step, "rvm gemset create ruby-$RUBY_VERSION && rvm gemset use ruby-$RUBY_VERSION"]
|
229
|
-
]
|
230
|
-
end
|
231
|
-
|
232
|
-
# <hudson.tasks.Shell>
|
233
|
-
# <command>echo 'THERE ARE NO STEPS! Except this one...'</command>
|
234
|
-
# </hudson.tasks.Shell>
|
235
|
-
def build_shell_step(b, command)
|
236
|
-
b.tag! "hudson.tasks.Shell" do
|
237
|
-
b.command command.to_xs.gsub("&", '&') #.gsub(%r{"}, '"').gsub(%r{'}, ''')
|
238
|
-
end
|
239
|
-
end
|
240
|
-
|
241
|
-
# <hudson.plugins.ruby.Ruby>
|
242
|
-
# <command>unless File.exist?("config/database.yml")
|
243
|
-
# require 'fileutils'
|
244
|
-
# example = Dir["config/database*"].first
|
245
|
-
# puts "Using #{example} for config/database.yml"
|
246
|
-
# FileUtils.cp example, "config/database.yml"
|
247
|
-
# end</command>
|
248
|
-
# </hudson.plugins.ruby.Ruby>
|
249
|
-
def build_ruby_step(b, command)
|
250
|
-
b.tag! "hudson.plugins.ruby.Ruby" do
|
251
|
-
b.command do
|
252
|
-
b << command.to_xs.gsub(%r{"}, '"').gsub(%r{'}, ''')
|
253
|
-
end
|
254
|
-
end
|
255
|
-
end
|
256
|
-
|
257
|
-
# Usage: build_ruby_step b, "db:schema:load"
|
258
|
-
#
|
259
|
-
# <hudson.plugins.rake.Rake>
|
260
|
-
# <rakeInstallation>(Default)</rakeInstallation>
|
261
|
-
# <rakeFile></rakeFile>
|
262
|
-
# <rakeLibDir></rakeLibDir>
|
263
|
-
# <rakeWorkingDir></rakeWorkingDir>
|
264
|
-
# <tasks>db:schema:load</tasks>
|
265
|
-
# <silent>false</silent>
|
266
|
-
# </hudson.plugins.rake.Rake>
|
267
|
-
def build_rake_step(b, tasks)
|
268
|
-
b.tag! "hudson.plugins.rake.Rake" do
|
269
|
-
b.rakeInstallation "(Default)"
|
270
|
-
b.rakeFile
|
271
|
-
b.rakeLibDir
|
272
|
-
b.rakeWorkingDir
|
273
|
-
b.tasks tasks
|
274
|
-
b.silent false
|
275
|
-
end
|
276
|
-
end
|
277
|
-
|
278
|
-
# Converts git@github.com:drnic/newgem.git into git://github.com/drnic/newgem.git
|
279
|
-
def public_only_git_scm(scm_url)
|
280
|
-
if scm_url =~ /git@([\w\-_.]+):(.+)\.git/
|
281
|
-
"git://#{$1}/#{$2}.git"
|
282
|
-
else
|
283
|
-
scm_url
|
284
|
-
end
|
285
|
-
end
|
286
|
-
end
|
287
|
-
end
|