Class: Buildizer::Ci::Travis
Defined Under Namespace
Modules: DockerCacheMod, PackageCloudMod, PackageVersionTagMod
Instance Attribute Summary
Attributes inherited from Base
#buildizer
Class Method Summary
collapse
Instance Method Summary
collapse
#require_tag_setup!, #require_tag_var, #require_tag_var_name, #require_tag_var_upsert
#docker_cache_setup!, included
included, #package_cloud_setup!, #package_cloud_token_var, #package_cloud_token_var_delete!, #package_cloud_token_var_name, #package_cloud_token_var_update!
Methods inherited from Base
#buildizer_install_instructions, #ci_name, #conf, #conf_file_name, #conf_path, #configuration_actual!, #docker_cache_setup!, #git_tag, #initialize, #package_cloud_setup!
Class Method Details
.ci_name ⇒ Object
5
6
7
|
# File 'lib/buildizer/ci/travis.rb', line 5
def ci_name
'travis'
end
|
.env_vars(prefix:, **kwargs) ⇒ Object
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
# File 'lib/buildizer/ci/travis.rb', line 9
def env_vars(prefix:, **kwargs)
kwargs.each do |name, var_name|
define_method("#{prefix}_#{name}_var") {repo.env_vars[var_name]}
define_method("#{prefix}_#{name}_var_name") {var_name}
define_method("#{prefix}_#{name}_var_delete!") do
var = send("#{prefix}_#{name}_var")
var.delete if var
end
define_method("#{prefix}_#{name}_var_update!") do |value, **kwargs|
if value
repo.env_vars.upsert(var_name, value, **kwargs)
else
send("#{prefix}_#{name}_var_delete!")
end
end
end end
|
Instance Method Details
#_git_tag ⇒ Object
82
83
84
|
# File 'lib/buildizer/ci/travis.rb', line 82
def _git_tag
ENV['TRAVIS_TAG']
end
|
#actual_conf ⇒ Object
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
|
# File 'lib/buildizer/ci/travis.rb', line 45
def actual_conf
install = [
'sudo apt-get update',
'sudo apt-get install -y apt-transport-https ca-certificates',
'sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D',
'echo "deb https://apt.dockerproject.org/repo ubuntu-trusty main" | sudo tee /etc/apt/sources.list.d/docker.list',
'sudo apt-get update',
'sudo apt-get -o dpkg::options::="--force-confnew" install -y --force-yes docker-engine=1.9.1-0~trusty',
'echo "docker-engine hold" | sudo dpkg --set-selections',
]
install.push(*Array(buildizer_install_instructions(master: buildizer.project_settings['master'])))
if buildizer.project_settings['master']
buildizer_bin = 'bundle exec buildizer'
else
buildizer_bin = 'buildizer'
end
env = buildizer.builder.target_names.map {|t| "BUILDIZER_TARGET=#{t}"}
conf.merge!(
'dist' => 'trusty',
'sudo' => 'required',
'cache' => 'apt',
'language' => 'ruby',
'rvm' => '2.2.1',
'install' => install,
'before_script' => "#{buildizer_bin} prepare",
'script' => "#{buildizer_bin} build && #{buildizer_bin} test",
'env' => env,
'after_success' => "#{buildizer_bin} deploy",
)
end
|
#configuration_actual? ⇒ Boolean
41
42
43
|
# File 'lib/buildizer/ci/travis.rb', line 41
def configuration_actual?
conf == actual_conf
end
|
#login ⇒ Object
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
|
# File 'lib/buildizer/ci/travis.rb', line 102
def login
@logged_in ||= begin
buildizer.with_log(desc: "Login into travis") do |&fin|
buildizer.user_settings['travis'] ||= {}
if buildizer.options[:reset_github_token]
buildizer.user_settings['travis'].delete('github_token')
buildizer.user_settings_save!
end
buildizer.user_settings['travis']['github_token'] ||= begin
reset_github_token = true
buildizer.secure_option(:github_token, ask: "GitHub travis access token:").to_s
end
::Travis.github_auth(buildizer.user_settings['travis']['github_token'])
buildizer.user_settings_save! if reset_github_token
fin.call "LOGGED IN: #{::Travis::User.current.name}"
end
true
end
end
|
#repo ⇒ Object
98
99
100
|
# File 'lib/buildizer/ci/travis.rb', line 98
def repo
::Travis::Repository.find(repo_name)
end
|
#repo_name ⇒ Object
86
87
88
89
90
91
92
93
94
95
96
|
# File 'lib/buildizer/ci/travis.rb', line 86
def repo_name
if buildizer.git_remote_url.start_with? 'http'
buildizer.git_remote_url.split('github.com/')[1]
else
buildizer.git_remote_url.split(':')[1].split('.')[0]
end
rescue
raise Error, error: :input_error,
message: "unable to determine travis repo name " +
"from git remote url #{buildizer.git_remote_url}"
end
|
#setup! ⇒ Object
36
37
38
39
|
# File 'lib/buildizer/ci/travis.rb', line 36
def setup!
buildizer.write_yaml conf_path, actual_conf
require_tag_setup!
end
|
#with_travis(&blk) ⇒ Object
127
128
129
130
131
132
|
# File 'lib/buildizer/ci/travis.rb', line 127
def with_travis(&blk)
login
yield
rescue ::Travis::Client::Error => err
raise Error, message: "travis: #{err.message}"
end
|