41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
|
# File 'lib/schema_dev/travis.rb', line 41
def build(config)
env = []
include = []
addons = {}
if config.dbms.include?(:postgresql)
versions = config.dbms_versions_for(:postgresql, ['9.4'])
if config.dbms.count == 1
if versions.count == 1
template = template_for_db(:postgresql, versions.first)
env << template['env']
addons.merge!(template['addons'])
else
include.concat versions.map {|version|
{}.merge(template_for_db(:postgresql, version))
}
end
else
config.matrix(db: 'postgresql', ruby: 'ignore').map { |entry|
include.concat versions.map {|version|
{
"gemfile" => GemfileSelector.gemfile(entry.slice(:activerecord, :db)).to_s,
}.merge(template_for_db(:postgresql, version))
}
}
end
end
if config.dbms.include?(:mysql)
env << 'MYSQL_DB_USER=travis'
end
env = env.join(' ')
gemfiles = config.matrix.map{|entry| GemfileSelector.gemfile(entry.slice(:activerecord, :db)).to_s}.uniq
exclude = config.matrix(excluded: :only).map { |entry| {}.tap {|ex|
ex["rvm"] = entry[:ruby]
ex["gemfile"] = GemfileSelector.gemfile(entry.slice(:activerecord, :db)).to_s
}}.reject{|ex| not gemfiles.include? ex["gemfile"]}
{}.tap { |travis|
travis["rvm"] = config.ruby.sort
travis["gemfile"] = gemfiles.sort
travis["env"] = env unless env.empty?
travis["addons"] = addons unless addons.empty?
if config.dbms.any?
travis["before_script"] = 'bundle exec rake create_databases'
travis["after_script"] = 'bundle exec rake drop_databases'
end
travis["script"] = "bundle exec rake travis"
travis["notifications"] = { "email" => config.notify } if config.notify.any?
travis["jobs"] = {}
travis["jobs"]["exclude"] = exclude.sort_by{|ex| [ex["rvm"], ex["gemfile"]]} if exclude.any?
if include.any?
travis["jobs"]["include"] = include.sort_by{|ex| [ex["rvm"], ex["gemfile"]]}
end
travis.delete("jobs") if travis["jobs"].empty?
}
end
|