Class: Buildizer::Ci::Travis

Inherits:
Base
  • Object
show all
Includes:
DockerCacheMod, PackageCloudMod, PackageVersionTagMod
Defined in:
lib/buildizer/ci/travis.rb,
lib/buildizer/ci/travis/docker_cache_mod.rb,
lib/buildizer/ci/travis/package_cloud_mod.rb,
lib/buildizer/ci/travis/package_version_tag_mod.rb

Defined Under Namespace

Modules: DockerCacheMod, PackageCloudMod, PackageVersionTagMod

Instance Attribute Summary

Attributes inherited from Base

#buildizer

Class Method Summary collapse

Instance Method Summary collapse

Methods included from PackageVersionTagMod

#require_tag_setup!, #require_tag_var, #require_tag_var_name, #require_tag_var_upsert

Methods included from DockerCacheMod

#docker_cache_setup!, included

Methods included from PackageCloudMod

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!

Constructor Details

This class inherits a constructor from Buildizer::Ci::Base

Class Method Details

.ci_nameObject



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 # each
end

Instance Method Details

#_git_tagObject



82
83
84
# File 'lib/buildizer/ci/travis.rb', line 82

def _git_tag
  ENV['TRAVIS_TAG']
end

#actual_confObject



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',

    # FIXME [https://github.com/docker/docker/issues/20316]:
    '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

Returns:

  • (Boolean)


41
42
43
# File 'lib/buildizer/ci/travis.rb', line 41

def configuration_actual?
  conf == actual_conf
end

#loginObject



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 
  @logged_in ||= begin
    buildizer.with_log(desc: "Login into travis") do |&fin|
      buildizer.['travis'] ||= {}

      if buildizer.options[:reset_github_token]
        buildizer.['travis'].delete('github_token')
        buildizer.
      end

      buildizer.['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.['travis']['github_token'])
      buildizer. if reset_github_token

      fin.call "LOGGED IN: #{::Travis::User.current.name}"
    end # with_log

    true
  end
end

#repoObject



98
99
100
# File 'lib/buildizer/ci/travis.rb', line 98

def repo
  ::Travis::Repository.find(repo_name)
end

#repo_nameObject



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)
  
  yield
rescue ::Travis::Client::Error => err
  raise Error, message: "travis: #{err.message}"
end