mirror of
https://github.com/actions/runner.git
synced 2025-12-27 11:57:34 +08:00
Sending telemetry about actions usage. (#1688)
* Sending telemetry about actions usage. * . * L0 tests. * .
This commit is contained in:
@@ -67,7 +67,7 @@ namespace GitHub.Runner.Worker.Handlers
|
||||
steps = Data.Steps;
|
||||
}
|
||||
|
||||
// Add Telemetry to JobContext to send with JobCompleteMessage
|
||||
// Set extra telemetry base on the current context.
|
||||
if (stage == ActionRunStage.Main)
|
||||
{
|
||||
var hasRunsStep = false;
|
||||
@@ -84,15 +84,14 @@ namespace GitHub.Runner.Worker.Handlers
|
||||
}
|
||||
}
|
||||
|
||||
ExecutionContext.StepTelemetry.Ref = GetActionRef();
|
||||
ExecutionContext.StepTelemetry.HasPreStep = Data.HasPre;
|
||||
ExecutionContext.StepTelemetry.HasPostStep = Data.HasPost;
|
||||
ExecutionContext.StepTelemetry.IsEmbedded = ExecutionContext.IsEmbedded;
|
||||
ExecutionContext.StepTelemetry.Type = "composite";
|
||||
|
||||
ExecutionContext.StepTelemetry.HasRunsStep = hasRunsStep;
|
||||
ExecutionContext.StepTelemetry.HasUsesStep = hasUsesStep;
|
||||
ExecutionContext.StepTelemetry.StepCount = steps.Count;
|
||||
}
|
||||
ExecutionContext.StepTelemetry.Type = "composite";
|
||||
|
||||
try
|
||||
{
|
||||
|
||||
@@ -70,15 +70,13 @@ namespace GitHub.Runner.Worker.Handlers
|
||||
}
|
||||
|
||||
string type = Action.Type == Pipelines.ActionSourceType.Repository ? "Dockerfile" : "DockerHub";
|
||||
// Add Telemetry to JobContext to send with JobCompleteMessage
|
||||
// Set extra telemetry base on the current context.
|
||||
if (stage == ActionRunStage.Main)
|
||||
{
|
||||
ExecutionContext.StepTelemetry.Ref = GetActionRef();
|
||||
ExecutionContext.StepTelemetry.HasPreStep = Data.HasPre;
|
||||
ExecutionContext.StepTelemetry.HasPostStep = Data.HasPost;
|
||||
ExecutionContext.StepTelemetry.IsEmbedded = ExecutionContext.IsEmbedded;
|
||||
ExecutionContext.StepTelemetry.Type = type;
|
||||
}
|
||||
ExecutionContext.StepTelemetry.Type = type;
|
||||
|
||||
// run container
|
||||
var container = new ContainerInfo(HostContext)
|
||||
|
||||
@@ -22,7 +22,7 @@ namespace GitHub.Runner.Worker.Handlers
|
||||
string ActionDirectory { get; set; }
|
||||
List<JobExtensionRunner> LocalActionContainerSetupSteps { get; set; }
|
||||
Task RunAsync(ActionRunStage stage);
|
||||
void PrintActionDetails(ActionRunStage stage);
|
||||
void PrepareExecution(ActionRunStage stage);
|
||||
}
|
||||
|
||||
public abstract class Handler : RunnerService
|
||||
@@ -44,8 +44,56 @@ namespace GitHub.Runner.Worker.Handlers
|
||||
public string ActionDirectory { get; set; }
|
||||
public List<JobExtensionRunner> LocalActionContainerSetupSteps { get; set; }
|
||||
|
||||
public void PrepareExecution(ActionRunStage stage)
|
||||
{
|
||||
// Print out action details
|
||||
PrintActionDetails(stage);
|
||||
|
||||
public virtual void PrintActionDetails(ActionRunStage stage)
|
||||
// Get telemetry for the action.
|
||||
PopulateActionTelemetry();
|
||||
}
|
||||
|
||||
protected void PopulateActionTelemetry()
|
||||
{
|
||||
if (Action.Type == Pipelines.ActionSourceType.ContainerRegistry)
|
||||
{
|
||||
ExecutionContext.StepTelemetry.Type = "docker";
|
||||
var registryAction = Action as Pipelines.ContainerRegistryReference;
|
||||
ExecutionContext.StepTelemetry.Action = registryAction.Image;
|
||||
}
|
||||
else if (Action.Type == Pipelines.ActionSourceType.Script)
|
||||
{
|
||||
ExecutionContext.StepTelemetry.Type = "run";
|
||||
}
|
||||
else if (Action.Type == Pipelines.ActionSourceType.Repository)
|
||||
{
|
||||
ExecutionContext.StepTelemetry.Type = "repository";
|
||||
var repoAction = Action as Pipelines.RepositoryPathReference;
|
||||
if (string.Equals(repoAction.RepositoryType, Pipelines.PipelineConstants.SelfAlias, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
ExecutionContext.StepTelemetry.Action = repoAction.Path;
|
||||
}
|
||||
else
|
||||
{
|
||||
ExecutionContext.StepTelemetry.Ref = repoAction.Ref;
|
||||
if (string.IsNullOrEmpty(repoAction.Path))
|
||||
{
|
||||
ExecutionContext.StepTelemetry.Action = repoAction.Name;
|
||||
}
|
||||
else
|
||||
{
|
||||
ExecutionContext.StepTelemetry.Action = $"{repoAction.Name}/{repoAction.Path}";
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// this should never happen
|
||||
Trace.Error($"Can't generate ref for {Action.Type.ToString()}");
|
||||
}
|
||||
}
|
||||
|
||||
protected virtual void PrintActionDetails(ActionRunStage stage)
|
||||
{
|
||||
|
||||
if (stage == ActionRunStage.Post)
|
||||
@@ -118,40 +166,6 @@ namespace GitHub.Runner.Worker.Handlers
|
||||
ActionCommandManager = hostContext.CreateService<IActionCommandManager>();
|
||||
}
|
||||
|
||||
protected string GetActionRef()
|
||||
{
|
||||
if (Action.Type == Pipelines.ActionSourceType.ContainerRegistry)
|
||||
{
|
||||
var registryAction = Action as Pipelines.ContainerRegistryReference;
|
||||
return registryAction.Image;
|
||||
}
|
||||
else if (Action.Type == Pipelines.ActionSourceType.Repository)
|
||||
{
|
||||
var repoAction = Action as Pipelines.RepositoryPathReference;
|
||||
if (string.Equals(repoAction.RepositoryType, Pipelines.PipelineConstants.SelfAlias, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
return repoAction.Path;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (string.IsNullOrEmpty(repoAction.Path))
|
||||
{
|
||||
return $"{repoAction.Name}@{repoAction.Ref}";
|
||||
}
|
||||
else
|
||||
{
|
||||
return $"{repoAction.Name}/{repoAction.Path}@{repoAction.Ref}";
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// this should never happen
|
||||
Trace.Error($"Can't generate ref for {Action.Type.ToString()}");
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
protected void AddInputsToEnvironment()
|
||||
{
|
||||
// Validate args.
|
||||
|
||||
@@ -74,15 +74,13 @@ namespace GitHub.Runner.Worker.Handlers
|
||||
target = Data.Post;
|
||||
}
|
||||
|
||||
// Add Telemetry to JobContext to send with JobCompleteMessage
|
||||
// Set extra telemetry base on the current context.
|
||||
if (stage == ActionRunStage.Main)
|
||||
{
|
||||
ExecutionContext.StepTelemetry.Ref = GetActionRef();
|
||||
ExecutionContext.StepTelemetry.HasPreStep = Data.HasPre;
|
||||
ExecutionContext.StepTelemetry.HasPostStep = Data.HasPost;
|
||||
ExecutionContext.StepTelemetry.IsEmbedded = ExecutionContext.IsEmbedded;
|
||||
ExecutionContext.StepTelemetry.Type = Data.NodeVersion;
|
||||
}
|
||||
ExecutionContext.StepTelemetry.Type = Data.NodeVersion;
|
||||
|
||||
ArgUtil.NotNullOrEmpty(target, nameof(target));
|
||||
target = Path.Combine(ActionDirectory, target);
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
using System.Threading.Tasks;
|
||||
using System;
|
||||
using GitHub.Runner.Sdk;
|
||||
using System;
|
||||
using System.Threading.Tasks;
|
||||
using GitHub.Runner.Common;
|
||||
using GitHub.Runner.Sdk;
|
||||
using Pipelines = GitHub.DistributedTask.Pipelines;
|
||||
|
||||
namespace GitHub.Runner.Worker.Handlers
|
||||
@@ -35,6 +35,8 @@ namespace GitHub.Runner.Worker.Handlers
|
||||
}
|
||||
|
||||
ArgUtil.NotNullOrEmpty(plugin, nameof(plugin));
|
||||
// Set extra telemetry base on the current context.
|
||||
ExecutionContext.StepTelemetry.Type = plugin;
|
||||
|
||||
// Update the env dictionary.
|
||||
AddPrependPathToEnvironment();
|
||||
|
||||
@@ -22,7 +22,7 @@ namespace GitHub.Runner.Worker.Handlers
|
||||
{
|
||||
public ScriptActionExecutionData Data { get; set; }
|
||||
|
||||
public override void PrintActionDetails(ActionRunStage stage)
|
||||
protected override void PrintActionDetails(ActionRunStage stage)
|
||||
{
|
||||
|
||||
if (stage == ActionRunStage.Post)
|
||||
@@ -145,13 +145,6 @@ namespace GitHub.Runner.Worker.Handlers
|
||||
var githubContext = ExecutionContext.ExpressionValues["github"] as GitHubContext;
|
||||
ArgUtil.NotNull(githubContext, nameof(githubContext));
|
||||
|
||||
// Add Telemetry to JobContext to send with JobCompleteMessage
|
||||
if (stage == ActionRunStage.Main)
|
||||
{
|
||||
ExecutionContext.StepTelemetry.IsEmbedded = ExecutionContext.IsEmbedded;
|
||||
ExecutionContext.StepTelemetry.Type = "run";
|
||||
}
|
||||
|
||||
var tempDirectory = HostContext.GetDirectory(WellKnownDirectory.Temp);
|
||||
|
||||
Inputs.TryGetValue("script", out var contents);
|
||||
@@ -219,6 +212,11 @@ namespace GitHub.Runner.Worker.Handlers
|
||||
}
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty(shellCommand))
|
||||
{
|
||||
ExecutionContext.StepTelemetry.Action = shellCommand;
|
||||
}
|
||||
|
||||
// No arg format was given, shell must be a built-in
|
||||
if (string.IsNullOrEmpty(argFormat) || !argFormat.Contains("{0}"))
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user