tagOs() tagJdk() tagIde() tagCiOrLocal() addGitMetadata() void tagOs() { gradleEnterprise.buildScan.tag System.getProperty('os.name') } void tagJdk() { gradleEnterprise.buildScan.tag "JDK-${System.getProperty('java.specification.version')}" } void tagIde() { if (System.getProperty('idea.version')) { gradleEnterprise.buildScan.tag 'IntelliJ IDEA' } else if (System.getProperty('eclipse.buildId')) { gradleEnterprise.buildScan.tag 'Eclipse' } } void tagCiOrLocal() { gradleEnterprise.buildScan.tag(isCi() ? 'CI' : 'LOCAL') } void addGitMetadata() { gradleEnterprise.buildScan.background { def gitCommitId = execAndGetStdout('git', 'rev-parse', '--short=8', '--verify', 'HEAD') def gitBranchName = execAndGetStdout('git', 'rev-parse', '--abbrev-ref', 'HEAD') def gitStatus = execAndGetStdout('git', 'status', '--porcelain') if(gitCommitId) { def commitIdLabel = 'Git Commit ID' value commitIdLabel, gitCommitId link 'Git commit build scans', customValueSearchUrl([(commitIdLabel): gitCommitId]) } if (gitBranchName) { tag gitBranchName value 'Git branch', gitBranchName } if (gitStatus) { tag 'dirty' value 'Git status', gitStatus } } } boolean isCi() { System.getenv('CI') } String execAndGetStdout(String... args) { def stdout = new ByteArrayOutputStream() exec { commandLine(args) standardOutput = stdout } return stdout.toString().trim() } String customValueSearchUrl(Map search) { def query = search.collect { name, value -> "search.names=${encodeURL(name)}&search.values=${encodeURL(value)}" }.join('&') "$gradleEnterprise.buildScan.server/scans?$query" } String encodeURL(String url) { URLEncoder.encode(url, 'UTF-8') }