class Testcube::BuildEnv
Public Class Methods
branch()
click to toggle source
TODO: Add support for other CI systems
# File lib/testcube/build_env.rb, line 17 def self.branch ENV['BUILDKITE_BRANCH'] || git('rev-parse --abbrev-ref HEAD') end
build_url()
click to toggle source
# File lib/testcube/build_env.rb, line 25 def self.build_url ENV['BUILDKITE_BUILD_URL'] end
current()
click to toggle source
# File lib/testcube/build_env.rb, line 5 def self.current # TODO could also get some of this data from github api { branch: branch, pr: pr, build_url: build_url, head: parse_from_git('HEAD'), merge_base: parse_from_git(merge_base) } end
git(cmd)
click to toggle source
# File lib/testcube/build_env.rb, line 47 def self.git(cmd) `git #{cmd}`.strip rescue Errno::ENOENT nil end
merge_base()
click to toggle source
# File lib/testcube/build_env.rb, line 43 def self.merge_base git("merge-base HEAD master") end
parse_from_git(sha)
click to toggle source
# File lib/testcube/build_env.rb, line 29 def self.parse_from_git(sha) out = git("show #{sha} --no-patch") return {} if !out # TODO: dont rescue nil return { sha: (out.match(/commit ([0-9a-f]+)\n/)[1] rescue nil), author: (out.match(/Author: (.*?) <(.*)>\n/)[1] rescue nil), ts: (Time.parse(out.match(/Date: (.*?)\n/)[1].strip).to_i rescue nil), author_email: (out.match(/Author: (.*?) <(.*)>\n/)[2] rescue nil), message: (out.lines[3..(out.lines.length)].find { |l| l.strip.length > 0 }.strip[0..50] rescue nil) } end
pr()
click to toggle source
# File lib/testcube/build_env.rb, line 21 def self.pr ENV['BUILDKITE_PULL_REQUEST'] end