class Buildkite::TestCollector::CI
def self.env
def self.env new.env end
def analytics_env
def analytics_env { "key" => ENV["BUILDKITE_ANALYTICS_KEY"], "url" => ENV["BUILDKITE_ANALYTICS_URL"], "branch" => ENV["BUILDKITE_ANALYTICS_BRANCH"], "commit_sha" => ENV["BUILDKITE_ANALYTICS_SHA"], "number" => ENV["BUILDKITE_ANALYTICS_NUMBER"], "job_id" => ENV["BUILDKITE_ANALYTICS_JOB_ID"], "message" => ENV["BUILDKITE_ANALYTICS_MESSAGE"], "execution_name_prefix" => ENV["BUILDKITE_ANALYTICS_EXECUTION_NAME_PREFIX"], "execution_name_suffix" => ENV["BUILDKITE_ANALYTICS_EXECUTION_NAME_SUFFIX"], "language_version" => RUBY_VERSION, "version" => Buildkite::TestCollector::VERSION, "collector" => "ruby-#{Buildkite::TestCollector::NAME}", "trace_min_duration" => Buildkite::TestCollector.trace_min_duration&.to_s, }.select { |_, value| !value.nil? } end
def buildkite
def buildkite { "CI" => "buildkite", "key" => ENV["BUILDKITE_BUILD_ID"], "url" => ENV["BUILDKITE_BUILD_URL"], "branch" => ENV["BUILDKITE_BRANCH"], "commit_sha" => ENV["BUILDKITE_COMMIT"], "number" => ENV["BUILDKITE_BUILD_NUMBER"], "job_id" => ENV["BUILDKITE_JOB_ID"], "message" => ENV["BUILDKITE_MESSAGE"], } end
def ci_env
def ci_env return buildkite if ENV["BUILDKITE_BUILD_ID"] return github_actions if ENV["GITHUB_RUN_NUMBER"] return circleci if ENV["CIRCLE_BUILD_NUM"] return codeship if ENV["CI_NAME"] == "codeship" return generic if ENV["CI"] { "CI" => nil, "key" => Buildkite::TestCollector::UUID.call, } end
def circleci
def circleci { "CI" => "circleci", "key" => "#{ENV["CIRCLE_WORKFLOW_ID"]}-#{ENV["CIRCLE_BUILD_NUM"]}", "url" => ENV["CIRCLE_BUILD_URL"], "branch" => ENV["CIRCLE_BRANCH"], "commit_sha" => ENV["CIRCLE_SHA1"], "number" => ENV["CIRCLE_BUILD_NUM"], } end
def codeship
def codeship { "CI" => "codeship", "key" => "#{ENV["CI_BUILD_ID"]}", "url" => ENV["CI_PULL_REQUEST"], "branch" => ENV["CI_BRANCH"], "commit_sha" => ENV["CI_COMMIT_ID"], "number" => nil, "message" => ENV["CI_COMMIT_MESSAGE"], } end
def env
The analytics env are more specific than the automatic ci platform env.
def env ci_env.merge(analytics_env).merge(Buildkite::TestCollector.env) end
def generic
def generic { "CI" => "generic", "key" => Buildkite::TestCollector::UUID.call, } end
def github_actions
def github_actions { "CI" => "github_actions", "key" => "#{ENV["GITHUB_ACTION"]}-#{ENV["GITHUB_RUN_NUMBER"]}-#{ENV["GITHUB_RUN_ATTEMPT"]}", "url" => File.join("https://github.com", ENV["GITHUB_REPOSITORY"], "actions/runs", ENV["GITHUB_RUN_ID"]), "branch" => ENV["GITHUB_REF_NAME"], "commit_sha" => ENV["GITHUB_SHA"], "number" => ENV["GITHUB_RUN_NUMBER"], } end