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

#packager

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



75
76
77
# File 'lib/buildizer/ci/travis.rb', line 75

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
# 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 docker-engine=1.9.1-0~trusty',

    'echo "docker-engine hold" | sudo dpkg --set-selections',
  ]
  install.push(*Array(buildizer_install_instructions(master: packager.project_settings['master'])))

  env = packager.targets.map {|t| "BUILDIZER_TARGET=#{t}"}
  conf.merge(
    'dist' => 'trusty',
    'sudo' => 'required',
    'cache' => 'apt',
    'language' => 'ruby',
    'rvm' => '2.2.1',
    'install' => install,
    'before_script' => 'buildizer prepare',
    'script' => 'buildizer build',
    'env' => env,
    'after_success' => 'buildizer 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



91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
# File 'lib/buildizer/ci/travis.rb', line 91

def 
  @logged_in ||= begin
    packager.with_log(desc: "Login into travis") do |&fin|
      packager.['travis'] ||= {}

      if packager.cli.options['reset_github_token']
        packager.['travis'].delete('github_token')
        packager.
      end

      packager.['travis']['github_token'] ||= begin
        reset_github_token = true
        packager.cli.ask("GitHub access token:", echo: false).tap{puts}
      end

      ::Travis.github_auth(packager.['travis']['github_token'])
      packager. if reset_github_token

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

    true
  end
end

#repoObject



87
88
89
# File 'lib/buildizer/ci/travis.rb', line 87

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

#repo_nameObject



79
80
81
82
83
84
85
# File 'lib/buildizer/ci/travis.rb', line 79

def repo_name
  packager.git_remote_url.split(':')[1].split('.')[0]
rescue
  raise Error, error: :input_error,
               message: "unable to determine travis repo name " +
                        "from git remote url #{packager.git_remote_url}"
end

#setup!Object



36
37
38
39
# File 'lib/buildizer/ci/travis.rb', line 36

def setup!
  packager.write_path(conf_path, YAML.dump(actual_conf))
  require_tag_setup!
end

#with_travis(&blk) ⇒ Object



116
117
118
119
120
121
# File 'lib/buildizer/ci/travis.rb', line 116

def with_travis(&blk)
  
  yield
rescue ::Travis::Client::Error => err
  raise Error, message: "travis: #{err.message}"
end