def format(result)
net_blockers(:off)
report = {
"meta" => {
"version" => "codecov-ruby/v"+SimpleCov::Formatter::Codecov::VERSION,
}
}
report.update(result_to_codecov(result))
json = report.to_json
params = {
"token" => ENV['CODECOV_TOKEN'],
"flags" => ENV['CODECOV_FLAG'] || ENV['CODECOV_FLAGS']
}
if ENV['CI'] == "true" and ENV['TRAVIS'] == "true"
params[:service] = "travis"
params[:branch] = ENV['TRAVIS_BRANCH']
params[:pull_request] = ENV['TRAVIS_PULL_REQUEST']
params[:job] = ENV['TRAVIS_JOB_ID']
params[:slug] = ENV['TRAVIS_REPO_SLUG']
params[:build] = ENV['TRAVIS_JOB_NUMBER']
params[:commit] = ENV['TRAVIS_COMMIT']
params[:env] = ENV['TRAVIS_RUBY_VERSION']
elsif ENV['CI'] == "true" and ENV['CI_NAME'] == 'codeship'
params[:service] = 'codeship'
params[:branch] = ENV['CI_BRANCH']
params[:commit] = ENV['CI_COMMIT_ID']
params[:build] = ENV['CI_BUILD_NUMBER']
params[:build_url] = ENV['CI_BUILD_URL']
elsif ENV['TDDIUM'] == "true"
params[:service] = 'solano'
params[:branch] = ENV['TDDIUM_CURRENT_BRANCH']
params[:commit] = ENV['TDDIUM_CURRENT_COMMIT']
params[:build] = ENV['TDDIUM_TID']
params[:pr] = ENV['TDDIUM_PR_ID']
elsif ENV['CI'] == "true" and ENV['CIRCLECI'] == 'true'
params[:service] = 'circleci'
params[:build] = ENV['CIRCLE_BUILD_NUM']
params[:job] = ENV['CIRCLE_NODE_INDEX']
if ENV['CIRCLE_PROJECT_REPONAME'] != nil
params[:slug] = ENV['CIRCLE_PROJECT_USERNAME'] + '/' + ENV['CIRCLE_PROJECT_REPONAME']
else
params[:slug] = ENV['CIRCLE_REPOSITORY_URL'].gsub(/^.*:/, '').gsub(/\.git$/, '')
end
params[:pr] = ENV['CIRCLE_PR_NUMBER']
params[:branch] = ENV['CIRCLE_BRANCH']
params[:commit] = ENV['CIRCLE_SHA1']
elsif ENV['CI'] == "true" and ENV['BUILDKITE'] == "true"
params[:service] = "buildkite"
params[:branch] = ENV['BUILDKITE_BRANCH']
params[:build] = ENV['BUILDKITE_BUILD_NUMBER']
params[:job] = ENV['BUILDKITE_JOB_ID']
params[:build_url] = ENV['BUILDKITE_BUILD_URL']
params[:slug] = ENV['BUILDKITE_PROJECT_SLUG']
params[:commit] = ENV['BUILDKITE_COMMIT']
elsif ENV['CI'] == "true" and ENV['SEMAPHORE'] == "true"
params[:service] = 'semaphore'
params[:branch] = ENV['BRANCH_NAME']
params[:commit] = ENV['REVISION']
params[:build] = ENV['SEMAPHORE_BUILD_NUMBER']
params[:job] = ENV['SEMAPHORE_CURRENT_THREAD']
params[:slug] = ENV['SEMAPHORE_REPO_SLUG']
elsif (ENV['CI'] == "true" or ENV['CI'] == "drone") and ENV['DRONE'] == "true"
params[:service] = 'drone.io'
params[:branch] = ENV['DRONE_BRANCH']
params[:commit] = ENV['DRONE_COMMIT_SHA']
params[:job] = ENV['DRONE_JOB_NUMBER']
params[:build] = ENV['DRONE_BUILD_NUMBER']
params[:build_url] = ENV['DRONE_BUILD_LINK'] || ENV['DRONE_BUILD_URL'] || ENV['CI_BUILD_URL']
params[:pr] = ENV['DRONE_PULL_REQUEST']
params[:tag] = ENV['DRONE_TAG']
elsif ENV['CI'] == "True" and ENV['APPVEYOR'] == 'True'
params[:service] = "appveyor"
params[:branch] = ENV['APPVEYOR_REPO_BRANCH']
params[:build] = ENV['APPVEYOR_JOB_ID']
params[:pr] = ENV['APPVEYOR_PULL_REQUEST_NUMBER']
params[:job] = ENV['APPVEYOR_ACCOUNT_NAME'] + '/' + ENV['APPVEYOR_PROJECT_SLUG'] + '/' + ENV['APPVEYOR_BUILD_VERSION']
params[:slug] = ENV['APPVEYOR_REPO_NAME']
params[:commit] = ENV['APPVEYOR_REPO_COMMIT']
elsif ENV['CI'] == "true" and ENV['WERCKER_GIT_BRANCH'] != nil
params[:service] = "wercker"
params[:branch] = ENV['WERCKER_GIT_BRANCH']
params[:build] = ENV['WERCKER_MAIN_PIPELINE_STARTED']
params[:slug] = ENV['WERCKER_GIT_OWNER'] + '/' + ENV['WERCKER_GIT_REPOSITORY']
params[:commit] = ENV['WERCKER_GIT_COMMIT']
elsif ENV['JENKINS_URL'] != nil
params[:service] = 'jenkins'
params[:branch] = ENV['ghprbSourceBranch'] || ENV['GIT_BRANCH']
params[:commit] = ENV['ghprbActualCommit'] || ENV['GIT_COMMIT']
params[:pr] = ENV['ghprbPullId']
params[:build] = ENV['BUILD_NUMBER']
params[:root] = ENV['WORKSPACE']
params[:build_url] = ENV['BUILD_URL']
elsif ENV['CI'] == 'true' and ENV['SHIPPABLE'] == "true"
params[:service] = 'shippable'
params[:branch] = ENV['BRANCH']
params[:build] = ENV['BUILD_NUMBER']
params[:build_url] = ENV['BUILD_URL']
params[:pull_request] = ENV['PULL_REQUEST']
params[:slug] = ENV['REPO_NAME']
params[:commit] = ENV['COMMIT']
elsif ENV['GITLAB_CI'] != nil
params[:service] = 'gitlab'
params[:branch] = ENV['CI_BUILD_REF_NAME'] || ENV['CI_COMMIT_REF_NAME']
params[:build] = ENV['CI_BUILD_ID'] || ENV['CI_JOB_ID']
slug = ENV['CI_BUILD_REPO'] || ENV['CI_REPOSITORY_URL']
params[:slug] = slug.split('/', 4)[-1].sub('.git', '') if slug
params[:commit] = ENV['CI_BUILD_REF'] || ENV['CI_COMMIT_SHA']
elsif ENV['CI_SERVER_NAME'] == 'TeamCity'
params[:service] = 'teamcity'
params[:branch] = ENV['TEAMCITY_BUILD_BRANCH']
params[:build] = ENV['TEAMCITY_BUILD_ID']
params[:build_url] = ENV['TEAMCITY_BUILD_URL']
params[:commit] = ENV['TEAMCITY_BUILD_COMMIT']
params[:slug] = ENV['TEAMCITY_BUILD_REPOSITORY'].split('/', 4)[-1].sub('.git', '')
elsif ENV['CI'] == 'true' and ENV['BITRISE_IO'] == 'true'
params[:service] = 'bitrise'
params[:branch] = ENV['BITRISE_GIT_BRANCH']
params[:pr] = ENV['BITRISE_PULL_REQUEST']
params[:build] = ENV['BITRISE_BUILD_NUMBER']
params[:build_url] = ENV['BITRISE_BUILD_URL']
params[:commit] = ENV['BITRISE_GIT_COMMIT']
params[:slug] = ENV['BITRISEIO_GIT_REPOSITORY_OWNER'] + '/' + ENV['BITRISEIO_GIT_REPOSITORY_SLUG']
elsif ENV['TF_BUILD'] != nil
params[:service] = 'azure_pipelines'
params[:branch] = ENV['BUILD_SOURCEBRANCH']
params[:pull_request] = ENV['SYSTEM_PULLREQUEST_PULLREQUESTNUMBER']
params[:job] = ENV['SYSTEM_JOBID']
params[:build] = ENV['BUILD_BUILDID']
params[:build_url] = "#{ENV['SYSTEM_TEAMFOUNDATIONSERVERURI']}/#{ENV['SYSTEM_TEAMPROJECT']}/_build/results?buildId=#{ENV['BUILD_BUILDID']}"
params[:commit] = ENV['BUILD_SOURCEVERSION']
params[:slug] = ENV['BUILD_REPOSITORY_ID']
elsif ENV['HEROKU_TEST_RUN_ID']
params[:service] = 'heroku'
params[:branch] = ENV['HEROKU_TEST_RUN_BRANCH']
params[:build] = ENV['HEROKU_TEST_RUN_ID']
params[:commit] = ENV['HEROKU_TEST_RUN_COMMIT_VERSION']
end
if params[:branch] == nil
branch = `git rev-parse --abbrev-ref HEAD`.strip
params[:branch] = branch != 'HEAD' ? branch : 'master'
end
if params[:commit] == nil
params[:commit] = `git rev-parse HEAD`.strip
end
slug = ENV['CODECOV_SLUG']
if slug != nil
params[:slug] = slug
end
if params[:pr] != nil
params[:pr] = params[:pr].sub('#', '')
end
url = ENV['CODECOV_URL'] || "https://codecov.io"
uri = URI.parse(url.chomp('/') + "/upload/v1")
uri.query = URI.encode_www_form(params)
https = Net::HTTP.new(uri.host, uri.port)
https.use_ssl = url.match(/^https/) != nil
begin
req = Net::HTTP::Post.new(uri.path + "?" + uri.query,
{
'Content-Type' => 'application/json',
'Accept' => 'application/json'
})
req.body = json
response = https.request(req)
puts response.body
report['result'] = JSON.parse(response.body)
report['params'] = params
report['query'] = uri.query
net_blockers(:on)
report
rescue StandardError => err
puts 'Error uploading coverage reports to Codecov. Sorry'
puts err
end
end