From f9b5d626c5486d1f02b3bd45879f61834b7aeecc Mon Sep 17 00:00:00 2001 From: Tingluo Huang Date: Wed, 11 Mar 2020 10:36:56 -0400 Subject: [PATCH] load and print machine setup info from .setup_info (#364) --- src/Runner.Common/Constants.cs | 1 + src/Runner.Common/HostContext.cs | 7 +++++ src/Runner.Worker/JobExtension.cs | 49 +++++++++++++++++++++++++++++++ src/Test/L0/TestHostContext.cs | 7 +++++ 4 files changed, 64 insertions(+) diff --git a/src/Runner.Common/Constants.cs b/src/Runner.Common/Constants.cs index 0d333464b..0a8261c55 100644 --- a/src/Runner.Common/Constants.cs +++ b/src/Runner.Common/Constants.cs @@ -25,6 +25,7 @@ namespace GitHub.Runner.Common CredentialStore, Certificates, Options, + SetupInfo, } public static class Constants diff --git a/src/Runner.Common/HostContext.cs b/src/Runner.Common/HostContext.cs index 1a44e8588..99e152b1d 100644 --- a/src/Runner.Common/HostContext.cs +++ b/src/Runner.Common/HostContext.cs @@ -322,6 +322,13 @@ namespace GitHub.Runner.Common GetDirectory(WellKnownDirectory.Root), ".options"); break; + + case WellKnownConfigFile.SetupInfo: + path = Path.Combine( + GetDirectory(WellKnownDirectory.Root), + ".setup_info"); + break; + default: throw new NotSupportedException($"Unexpected well known config file: '{configFile}'"); } diff --git a/src/Runner.Worker/JobExtension.cs b/src/Runner.Worker/JobExtension.cs index d7b6a99b1..3db3e61d0 100644 --- a/src/Runner.Worker/JobExtension.cs +++ b/src/Runner.Worker/JobExtension.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; +using System.Runtime.Serialization; using System.Threading.Tasks; using GitHub.DistributedTask.Expressions2; using GitHub.DistributedTask.Pipelines.ObjectTemplating; @@ -14,6 +15,16 @@ using Pipelines = GitHub.DistributedTask.Pipelines; namespace GitHub.Runner.Worker { + [DataContract] + public class SetupInfo + { + [DataMember] + public string Group { get; set; } + + [DataMember] + public string Detail { get; set; } + } + [ServiceLocator(Default = typeof(JobExtension))] public interface IJobExtension : IRunnerService @@ -49,6 +60,44 @@ namespace GitHub.Runner.Worker context.Start(); context.Debug($"Starting: Set up job"); context.Output($"Current runner version: '{BuildConstants.RunnerPackage.Version}'"); + + var setupInfoFile = HostContext.GetConfigFile(WellKnownConfigFile.SetupInfo); + if (File.Exists(setupInfoFile)) + { + Trace.Info($"Load machine setup info from {setupInfoFile}"); + try + { + var setupInfo = IOUtil.LoadObject>(setupInfoFile); + if (setupInfo?.Count > 0) + { + foreach (var info in setupInfo) + { + if (!string.IsNullOrEmpty(info?.Detail)) + { + var groupName = info.Group; + if (string.IsNullOrEmpty(groupName)) + { + groupName = "Machine Setup Info"; + } + + context.Output($"##[group]{groupName}"); + var multiLines = info.Detail.Replace("\r\n", "\n").TrimEnd('\n').Split('\n'); + foreach (var line in multiLines) + { + context.Output(line); + } + context.Output("##[endgroup]"); + } + } + } + } + catch (Exception ex) + { + context.Output($"Fail to load and print machine setup info: {ex.Message}"); + Trace.Error(ex); + } + } + var repoFullName = context.GetGitHubContext("repository"); ArgUtil.NotNull(repoFullName, nameof(repoFullName)); context.Debug($"Primary repository: {repoFullName}"); diff --git a/src/Test/L0/TestHostContext.cs b/src/Test/L0/TestHostContext.cs index 88c38b7c7..3d3c99c73 100644 --- a/src/Test/L0/TestHostContext.cs +++ b/src/Test/L0/TestHostContext.cs @@ -279,6 +279,13 @@ namespace GitHub.Runner.Common.Tests GetDirectory(WellKnownDirectory.Root), ".options"); break; + + case WellKnownConfigFile.SetupInfo: + path = Path.Combine( + GetDirectory(WellKnownDirectory.Root), + ".setup_info"); + break; + default: throw new NotSupportedException($"Unexpected well known config file: '{configFile}'"); }