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 = getBranch() 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 getBranch() { def branch = System.getenv("BRANCH") if (branch) { return branch } return execAndGetStdout("git", "rev-parse", "--abbrev-ref", "HEAD") } 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") }