Skip to content

Commit 37c8023

Browse files
authored
Travis VCS Proxy integration (#2000)
* Travis VCS Proxy integration * perforce clone * p4 - setting password * Travis vcs proxy svn integration (#2005) * added missing assembla check
1 parent 866098f commit 37c8023

35 files changed

+1013
-59
lines changed

lib/travis/build.rb

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,17 +16,15 @@ def config
1616
module_function :config
1717

1818
def top
19-
@top ||= Pathname.new(
20-
`git rev-parse --show-toplevel 2>/dev/null`.strip
21-
)
19+
::Travis::Vcs::Git::top
2220
end
2321

2422
module_function :top
2523

2624
class << self
2725
def version
2826
return @version if @version
29-
@version ||= `git describe --always --dirty --tags 2>/dev/null`.strip
27+
@version ||= ::Travis::Vcs::Git::version
3028
@version = nil unless $?.success?
3129
@version ||= ENV.fetch('BUILD_SLUG_COMMIT', nil)
3230
@version ||= top.join('VERSION').read if top.join('VERSION').exist?

lib/travis/build/addons/artifacts/env.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
require 'core_ext/hash/deep_symbolize_keys'
22
require 'active_support/core_ext/hash/slice'
3+
require 'travis/vcs.rb'
34

45
module Travis
56
module Build
67
class Addons
78
class Artifacts < Base
89
class Env
910
DEFAULT = {
10-
paths: '$(git ls-files -o | tr "\n" ":")',
11+
paths: ::Travis::Vcs::paths,
1112
log_format: 'multiline'
1213
}
1314

lib/travis/build/addons/deploy/script.rb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -267,10 +267,10 @@ def build_gem_locally_from(source, branch)
267267
sh.echo "Building dpl gem locally with source #{source} and branch #{branch}", ansi: :yellow
268268
cmd("gem uninstall -aIx dpl >& /dev/null", echo: false, assert: !allow_failure, timing: false)
269269
sh.cmd("pushd /tmp >& /dev/null", echo: false, assert: !allow_failure, timing: true)
270-
sh.cmd("git clone https://github.com/#{source} #{source}", echo: true, assert: !allow_failure, timing: true)
270+
sh.cmd(::Travis::Vcs::Git::clone_cmd('https://github.com',source), echo: true, assert: !allow_failure, timing: true)
271271
sh.cmd("pushd #{source} >& /dev/null", echo: false, assert: !allow_failure, timing: true)
272-
sh.cmd("git checkout #{branch}", echo: true, assert: !allow_failure, timing: true)
273-
sh.cmd("git rev-parse HEAD", echo: true, assert: !allow_failure, timing: true)
272+
sh.cmd(::Travis::Vcs::Git::checkout_cmd(branch), echo: true, assert: !allow_failure, timing: true)
273+
sh.cmd(::Travis::Vcs::Git::revision_cmd, echo: true, assert: !allow_failure, timing: true)
274274
cmd("gem build dpl.gemspec", echo: true, assert: !allow_failure, timing: true)
275275
sh.raw "for f in dpl-*.gemspec; do"
276276
sh.raw " base=${f%*.gemspec}"

lib/travis/build/appliances/agent.rb

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
require 'base64'
22
require 'travis/build/appliances/base'
33
require 'travis/build/appliances/agent/jwt'
4-
require 'travis/build/git'
54

65
module Travis
76
module Build

lib/travis/build/appliances/checkout.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
require 'travis/build/appliances/base'
2-
require 'travis/build/git'
2+
require 'travis/vcs'
33

44
module Travis
55
module Build
66
module Appliances
77
class Checkout < Base
88
def apply
9-
Git.new(sh, data).checkout
9+
Travis::Vcs.checkout(sh, data)
1010
end
1111

1212
def apply?

lib/travis/build/appliances/rm_etc_boto_cfg.rb

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
require 'travis/build/appliances/base'
2-
require 'travis/build/git'
32

43
module Travis
54
module Build

lib/travis/build/appliances/setup_filter.rb

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
require 'travis/build/appliances/base'
2-
require 'travis/build/git'
32
require 'travis/rollout'
43

54
module Travis

lib/travis/build/errors.rb

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,5 +89,11 @@ def initialize(msg = "Unable to fetch GitHub Apps Token. GitHub may be unavailab
8989
super
9090
end
9191
end
92+
93+
class UnknownServiceTypeError < StandardError
94+
def initialize(_type)
95+
super
96+
end
97+
end
9298
end
9399
end

lib/travis/build/script.rb

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
require 'travis/build/addons'
99
require 'travis/build/appliances'
1010
require 'travis/build/errors'
11-
require 'travis/build/git'
11+
require 'travis/vcs'
1212
require 'travis/build/helpers'
1313
require 'travis/build/stages'
1414

@@ -84,13 +84,13 @@ class Script
8484
private_constant :TRAVIS_FUNCTIONS
8585

8686
class << self
87-
def defaults(key)
87+
def defaults(key, server_type)
8888
if key && self::DEFAULTS.key?(key.to_sym)
89-
Git::DEFAULTS.merge self::DEFAULTS[key.to_sym]
89+
Travis::Vcs.defaults(server_type).merge self::DEFAULTS[key.to_sym]
9090
elsif self::DEFAULTS[:default]
91-
Git::DEFAULTS.merge self::DEFAULTS[:default]
91+
Travis::Vcs.defaults(server_type).merge self::DEFAULTS[:default]
9292
else
93-
Git::DEFAULTS.merge self::DEFAULTS
93+
Travis::Vcs.defaults(server_type).merge self::DEFAULTS
9494
end
9595
end
9696
end
@@ -111,9 +111,10 @@ def defaults(key)
111111
def initialize(data)
112112
@raw_data = data.deep_symbolize_keys
113113
raw_config = @raw_data[:config]
114+
server_type = @raw_data.dig(:repository, :server_type) || 'git'
114115
lang_sym = raw_config.fetch(:language,"").to_sym
115116
@data = Data.new({
116-
config: self.class.defaults(raw_config[:os]),
117+
config: self.class.defaults(raw_config[:os], server_type),
117118
language_default_p: !raw_config[lang_sym]
118119
}.deep_merge(self.raw_data))
119120
@options = {}

lib/travis/vcs.rb

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
require 'travis/vcs/base.rb'
2+
require 'travis/vcs/git.rb'
3+
require 'travis/vcs/perforce.rb'
4+
require 'travis/vcs/svn.rb'
5+
require 'travis/build/errors.rb'
6+
7+
module Travis
8+
module Vcs
9+
class <<self
10+
def top
11+
"Travis::Vcs::#{provider_name.to_s.camelize}".constantize.top
12+
rescue NameError
13+
raise Travis::Build::UnknownServiceTypeError.new provider_name
14+
end
15+
16+
def version
17+
"Travis::Vcs::#{provider_name.to_s.camelize}".constantize.version
18+
rescue NameError
19+
raise Travis::Build::UnknownServiceTypeError.new provider_name
20+
end
21+
22+
def paths
23+
"Travis::Vcs::#{provider_name.to_s.camelize}".constantize.paths
24+
rescue NameError
25+
raise Travis::Build::UnknownServiceTypeError.new(provider_name)
26+
end
27+
28+
def clone_cmd(endpoint, source)
29+
"Travis::Vcs::#{provider_name.to_s.camelize}".constantize.clone_cmd(endpoint, source)
30+
rescue NameError
31+
raise Travis::Build::UnknownServiceTypeError.new provider_name
32+
end
33+
34+
def checkout_cmd(branch)
35+
"Travis::Vcs::#{provider_name.to_s.camelize}".constantize.checkout_cmd(branch)
36+
rescue NameError
37+
raise Travis::Build::UnknownServiceTypeError.new(provider_name)
38+
end
39+
40+
def revision_cmd
41+
"Travis::Vcs::#{provider_name.to_s.camelize}".constantize.revision_cmd
42+
rescue NameError
43+
raise Travis::Build::UnknownServiceTypeError.new provider_name
44+
end
45+
46+
def checkout(sh,data)
47+
vcs(sh,data).checkout
48+
end
49+
50+
def defaults(server_type)
51+
@provider_name = server_type
52+
"Travis::Vcs::#{provider_name.to_s.camelize}".constantize.defaults
53+
rescue NameError
54+
raise Travis::Build::UnknownServiceTypeError.new provider_name
55+
end
56+
57+
private
58+
def vcs(sh,data)
59+
provider = data[:repository][:server_type] if data.key?(:repository)
60+
provider = provider_name unless provider
61+
@provider_name = provider
62+
"Travis::Vcs::#{provider.to_s.camelize}".constantize.new(sh,data)
63+
rescue NameError
64+
raise Travis::Build::UnknownServiceTypeError.new provider_name
65+
end
66+
67+
def provider_name
68+
@provider_name ||= 'git'
69+
end
70+
end
71+
end
72+
end

0 commit comments

Comments
 (0)