Class: CoverallsMulti::Config

Inherits:
Object
  • Object
show all
Defined in:
lib/coveralls-multi/config.rb

Overview

reads .coveralls.yml and sets module config options

Class Method Summary collapse

Class Method Details

.add_ci_env(config) ⇒ Object



84
85
86
87
88
89
90
91
92
93
94
95
# File 'lib/coveralls-multi/config.rb', line 84

def add_ci_env(config)
  return add_service_params_for_travis(config, yaml_config['service_name'] || nil) if ENV['TRAVIS']
  return add_service_params_for_circleci(config) if ENV['CIRCLECI']
  return add_service_params_for_semaphore(config) if ENV['SEMAPHORE']
  return add_service_params_for_jenkins(config) if ENV['JENKINS_URL'] || ENV['JENKINS_HOME']
  return add_service_params_for_appveyor(config) if ENV['APPVEYOR']
  return add_service_params_for_tddium(config) if ENV['TDDIUM']
  return add_service_params_for_gitlab(config) if ENV['GITLAB_CI']
  return add_service_params_for_coveralls_local(config) if ENV['COVERALLS_RUN_LOCALLY']

  config
end

.add_service_params_for_appveyor(config) ⇒ Object



133
134
135
136
137
138
139
140
141
142
# File 'lib/coveralls-multi/config.rb', line 133

def add_service_params_for_appveyor(config)
  config[:service_name]        = 'appveyor'
  config[:service_number]     = ENV['APPVEYOR_BUILD_VERSION']
  config[:service_branch]     = ENV['APPVEYOR_REPO_BRANCH']
  config[:git][:branch]       = ENV['APPVEYOR_REPO_BRANCH']
  config[:commit_sha]         = ENV['APPVEYOR_REPO_COMMIT']
  repo_name                   = ENV['APPVEYOR_REPO_NAME']
  config[:service_build_url]  = format('https://ci.appveyor.com/project/%s/build/%s', repo_name, config[:service_number])
  config
end

.add_service_params_for_circleci(config) ⇒ Object



106
107
108
109
110
111
112
113
114
# File 'lib/coveralls-multi/config.rb', line 106

def add_service_params_for_circleci(config)
  config[:service_name]         = 'circleci'
  config[:service_number]       = ENV['CIRCLE_BUILD_NUM']
  config[:service_pull_request] = (ENV['CI_PULL_REQUEST'] || '')[/(\d+)$/, 1]
  config[:parallel]             = ENV['CIRCLE_NODE_TOTAL'].to_i > 1
  config[:service_job_number]   = ENV['CIRCLE_NODE_INDEX']
  config[:git][:branch]         = ENV['CIRCLE_BRANCH']
  config
end

.add_service_params_for_coveralls_local(config) ⇒ Object



154
155
156
157
158
159
# File 'lib/coveralls-multi/config.rb', line 154

def add_service_params_for_coveralls_local(config)
  config[:service_job_id]     = nil
  config[:service_name]       = 'coveralls-multi'
  config[:service_event_type] = 'manual'
  config
end

.add_service_params_for_gitlab(config) ⇒ Object



144
145
146
147
148
149
150
151
152
# File 'lib/coveralls-multi/config.rb', line 144

def add_service_params_for_gitlab(config)
  config[:service_name]         = 'gitlab-ci'
  config[:service_job_number]   = ENV['CI_BUILD_NAME']
  config[:service_job_id]       = ENV['CI_BUILD_ID']
  config[:service_branch]       = ENV['CI_BUILD_REF_NAME']
  config[:git][:branch]         = ENV['CI_BUILD_REF_NAME']
  config[:commit_sha]           = ENV['CI_BUILD_REF']
  config
end

.add_service_params_for_jenkins(config) ⇒ Object



124
125
126
127
128
129
130
131
# File 'lib/coveralls-multi/config.rb', line 124

def add_service_params_for_jenkins(config)
  config[:service_name]         = 'jenkins'
  config[:service_number]       = ENV['BUILD_NUMBER']
  config[:service_branch]       = ENV['BRANCH_NAME']
  config[:service_pull_request] = ENV['ghprbPullId']
  config[:git][:branch]         = ENV['GIT_BRANCH'] || ENV['BRANCH_NAME']
  config
end

.add_service_params_for_semaphore(config) ⇒ Object



116
117
118
119
120
121
122
# File 'lib/coveralls-multi/config.rb', line 116

def add_service_params_for_semaphore(config)
  config[:service_name]         = 'semaphore'
  config[:service_number]       = ENV['SEMAPHORE_BUILD_NUMBER']
  config[:service_pull_request] = ENV['PULL_REQUEST_NUMBER']
  config[:git][:branch]         = ENV['BRANCH_NAME']
  config
end

.add_service_params_for_travis(config, service_name) ⇒ Object



97
98
99
100
101
102
103
104
# File 'lib/coveralls-multi/config.rb', line 97

def add_service_params_for_travis(config, service_name)
  config[:service_job_id]       = ENV['TRAVIS_JOB_ID']
  config[:service_pull_request] = ENV['TRAVIS_PULL_REQUEST'] unless ENV['TRAVIS_PULL_REQUEST'] == 'false'
  config[:service_name]         = service_name || 'travis-ci'
  config[:service_branch]       = ENV['TRAVIS_BRANCH']
  config[:git][:branch]         = ENV['TRAVIS_BRANCH']
  config
end

.add_standard_service_params_for_generic_ci(config) ⇒ Object



161
162
163
164
165
166
167
168
169
# File 'lib/coveralls-multi/config.rb', line 161

def add_standard_service_params_for_generic_ci(config)
  config[:service_name]         ||= ENV['CI_NAME']
  config[:service_number]       ||= ENV['CI_BUILD_NUMBER']
  config[:service_job_id]       ||= ENV['CI_JOB_ID']
  config[:service_build_url]    ||= ENV['CI_BUILD_URL']
  config[:service_branch]       ||= ENV['CI_BRANCH']
  config[:service_pull_request] ||= (ENV['CI_PULL_REQUEST'] || '')[/(\d+)$/, 1]
  config
end

.api_configObject



41
42
43
44
45
46
47
48
49
50
# File 'lib/coveralls-multi/config.rb', line 41

def api_config
  config = {
    git: git_info,
    repo_token: ENV['COVERALLS_REPO_TOKEN'] || yaml_config['repo_token'] || yaml_config['repo_secret_token'],
  }

  add_ci_env(config)
  add_standard_service_params_for_generic_ci(config)
  config
end

.api_domainObject



33
34
35
# File 'lib/coveralls-multi/config.rb', line 33

def api_domain
  ENV['COVERALLS_ENDPOINT'] || yaml_config['endpoint'] || 'https://coveralls.io'
end

.api_endpointObject



37
38
39
# File 'lib/coveralls-multi/config.rb', line 37

def api_endpoint
  "#{api_domain}/api/v1/jobs"
end

.configuration_pathObject



29
30
31
# File 'lib/coveralls-multi/config.rb', line 29

def configuration_path
  File.expand_path(File.join(root, '.coveralls.yml')) if root
end

.debug_modeObject



21
22
23
# File 'lib/coveralls-multi/config.rb', line 21

def debug_mode
  yaml_config['debug_mode'] || ENV['COVERALLS_DEBUG']
end

.filesObject



13
14
15
16
17
18
19
# File 'lib/coveralls-multi/config.rb', line 13

def files
  yml = yaml_config['multi']

  raise "[CoverallsMulti] Couldn't find multi configuration in .coveralls.yml" unless yml

  yml
end

.git_branchObject



73
74
75
# File 'lib/coveralls-multi/config.rb', line 73

def git_branch
  ENV.fetch('GIT_BRANCH', `git rev-parse --abbrev-ref HEAD`)
end

.git_headObject



62
63
64
65
66
67
68
69
70
71
# File 'lib/coveralls-multi/config.rb', line 62

def git_head
  {
    id: ENV.fetch('GIT_ID', `git log -1 --pretty=format:'%H'`),
    author_name: ENV.fetch('GIT_AUTHOR_NAME', `git log -1 --pretty=format:'%aN'`),
    author_email: ENV.fetch('GIT_AUTHOR_EMAIL', `git log -1 --pretty=format:'%ae'`),
    committer_name: ENV.fetch('GIT_COMMITTER_NAME', `git log -1 --pretty=format:'%cN'`),
    committer_email: ENV.fetch('GIT_COMMITTER_EMAIL', `git log -1 --pretty=format:'%ce'`),
    message: ENV.fetch('GIT_MESSAGE', `git log -1 --pretty=format:'%s'`),
  }
end

.git_infoObject



52
53
54
55
56
57
58
59
60
# File 'lib/coveralls-multi/config.rb', line 52

def git_info
  Dir.chdir(root) do
    {
      head: git_head,
      branch: git_branch,
      remotes: git_remotes,
    }
  end
end

.git_remotesObject



77
78
79
80
81
82
# File 'lib/coveralls-multi/config.rb', line 77

def git_remotes
  `git remote -v`.split(/\n/).map do |remote|
    split_line = remote.split(' ').compact
    { name: split_line[0], url: split_line[1] }
  end.uniq
end

.rootObject



25
26
27
# File 'lib/coveralls-multi/config.rb', line 25

def root
  Dir.pwd
end

.yaml_configObject



7
8
9
10
11
# File 'lib/coveralls-multi/config.rb', line 7

def yaml_config
  raise "[CoverallsMulti] Couldn't find config file" unless configuration_path && File.exist?(configuration_path)

  YAML.load_file(configuration_path)
end