diff options
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/analysis/BuildInfo.java | 15 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/bazel/BazelWorkspaceStatusModule.java | 33 |
2 files changed, 42 insertions, 6 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/BuildInfo.java b/src/main/java/com/google/devtools/build/lib/analysis/BuildInfo.java index 4177e56d93..65cdbf6f16 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/BuildInfo.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/BuildInfo.java @@ -23,4 +23,19 @@ public class BuildInfo { * Named constants for the BuildInfo keys. */ public static final String BUILD_EMBED_LABEL = "BUILD_EMBED_LABEL"; + + /** + * The name of the user that performs the build. + */ + public static final String BUILD_USER = "BUILD_USER"; + + /** + * The host where the build happens + */ + public static final String BUILD_HOST = "BUILD_HOST"; + + /** + * Build time as milliseconds since epoch + */ + public static final String BUILD_TIMESTAMP = "BUILD_TIMESTAMP"; } diff --git a/src/main/java/com/google/devtools/build/lib/bazel/BazelWorkspaceStatusModule.java b/src/main/java/com/google/devtools/build/lib/bazel/BazelWorkspaceStatusModule.java index 8b96e7719a..23b6b1e041 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/BazelWorkspaceStatusModule.java +++ b/src/main/java/com/google/devtools/build/lib/bazel/BazelWorkspaceStatusModule.java @@ -13,6 +13,7 @@ // limitations under the License. package com.google.devtools.build.lib.bazel; +import com.google.common.base.Joiner; import com.google.common.base.Supplier; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; @@ -37,6 +38,7 @@ import com.google.devtools.build.lib.runtime.BlazeModule; import com.google.devtools.build.lib.runtime.BlazeRuntime; import com.google.devtools.build.lib.runtime.Command; import com.google.devtools.build.lib.runtime.GotOptionsEvent; +import com.google.devtools.build.lib.util.NetUtil; import com.google.devtools.build.lib.vfs.FileSystemUtils; import com.google.devtools.build.lib.vfs.PathFragment; import com.google.devtools.common.options.OptionsBase; @@ -57,6 +59,10 @@ public class BazelWorkspaceStatusModule extends BlazeModule { private final Artifact stableStatus; private final Artifact volatileStatus; private final AtomicReference<Options> options; + + private final String username; + private final String hostname; + private final long timestamp; private BazelWorkspaceStatusAction( AtomicReference<WorkspaceStatusAction.Options> options, @@ -67,6 +73,9 @@ public class BazelWorkspaceStatusModule extends BlazeModule { this.options = options; this.stableStatus = stableStatus; this.volatileStatus = volatileStatus; + this.username = System.getProperty("user.name"); + this.hostname = NetUtil.findShortHostName(); + this.timestamp = System.currentTimeMillis(); } @Override @@ -78,10 +87,17 @@ public class BazelWorkspaceStatusModule extends BlazeModule { public void execute(ActionExecutionContext actionExecutionContext) throws ActionExecutionException { try { - String embedLabelLine = String.format("BUILD_EMBED_LABEL %s\n", options.get().embedLabel); + Joiner joiner = Joiner.on('\n'); + String info = + joiner.join( + BuildInfo.BUILD_EMBED_LABEL + " " + options.get().embedLabel, + BuildInfo.BUILD_HOST + " " + hostname, + BuildInfo.BUILD_USER + " " + username); + FileSystemUtils.writeContent(stableStatus.getPath(), info.getBytes(StandardCharsets.UTF_8)); + String volatileInfo = BuildInfo.BUILD_TIMESTAMP + " " + timestamp + "\n"; + FileSystemUtils.writeContent( - stableStatus.getPath(), embedLabelLine.getBytes(StandardCharsets.UTF_8)); - FileSystemUtils.writeContent(volatileStatus.getPath(), new byte[] {}); + volatileStatus.getPath(), volatileInfo.getBytes(StandardCharsets.UTF_8)); } catch (IOException e) { throw new ActionExecutionException(e, this, true); } @@ -164,13 +180,18 @@ public class BazelWorkspaceStatusModule extends BlazeModule { private class BazelWorkspaceStatusActionContext implements WorkspaceStatusAction.Context { @Override public ImmutableMap<String, Key> getStableKeys() { - return ImmutableMap.of(BuildInfo.BUILD_EMBED_LABEL, - Key.of(KeyType.STRING, options.get().embedLabel, "redacted")); + return ImmutableMap.of( + BuildInfo.BUILD_EMBED_LABEL, + Key.of(KeyType.STRING, options.get().embedLabel, "redacted"), + BuildInfo.BUILD_HOST, + Key.of(KeyType.STRING, "hostname", "redacted"), + BuildInfo.BUILD_USER, + Key.of(KeyType.STRING, "username", "redacted")); } @Override public ImmutableMap<String, Key> getVolatileKeys() { - return ImmutableMap.of(); + return ImmutableMap.of(BuildInfo.BUILD_TIMESTAMP, Key.of(KeyType.INTEGER, "0", "0")); } } |