class Buildizer::Ci::Travis

Public Class Methods

ci_name() click to toggle source
# File lib/buildizer/ci/travis.rb, line 5
def ci_name
  'travis'
end
env_vars(prefix:, **kwargs) click to toggle source
# 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

Public Instance Methods

_git_tag() click to toggle source
# File lib/buildizer/ci/travis.rb, line 82
def _git_tag
  ENV['TRAVIS_TAG']
end
actual_conf() click to toggle source
# 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?() click to toggle source
# File lib/buildizer/ci/travis.rb, line 41
def configuration_actual?
  conf == actual_conf
end
login() click to toggle source
# 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 # with_log

    true
  end
end
repo() click to toggle source
# File lib/buildizer/ci/travis.rb, line 98
def repo
  ::Travis::Repository.find(repo_name)
end
repo_name() click to toggle source
# 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!() click to toggle source
# File lib/buildizer/ci/travis.rb, line 36
def setup!
  buildizer.write_yaml conf_path, actual_conf
  require_tag_setup!
end
with_travis() { || ... } click to toggle source
# 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