mirror of
https://github.com/actions/runner.git
synced 2025-12-12 15:13:30 +00:00
GitHub Actions Runner
This commit is contained in:
58
src/Runner.Worker/Handlers/RunnerPluginHandler.cs
Normal file
58
src/Runner.Worker/Handlers/RunnerPluginHandler.cs
Normal file
@@ -0,0 +1,58 @@
|
||||
using System.Threading.Tasks;
|
||||
using System;
|
||||
using GitHub.Runner.Sdk;
|
||||
using GitHub.Runner.Common;
|
||||
using Pipelines = GitHub.DistributedTask.Pipelines;
|
||||
|
||||
namespace GitHub.Runner.Worker.Handlers
|
||||
{
|
||||
[ServiceLocator(Default = typeof(RunnerPluginHandler))]
|
||||
public interface IRunnerPluginHandler : IHandler
|
||||
{
|
||||
PluginActionExecutionData Data { get; set; }
|
||||
}
|
||||
|
||||
public sealed class RunnerPluginHandler : Handler, IRunnerPluginHandler
|
||||
{
|
||||
public PluginActionExecutionData Data { get; set; }
|
||||
|
||||
public async Task RunAsync(ActionRunStage stage)
|
||||
{
|
||||
// Validate args.
|
||||
Trace.Entering();
|
||||
ArgUtil.NotNull(Data, nameof(Data));
|
||||
ArgUtil.NotNull(ExecutionContext, nameof(ExecutionContext));
|
||||
ArgUtil.NotNull(Inputs, nameof(Inputs));
|
||||
|
||||
string plugin = null;
|
||||
if (stage == ActionRunStage.Main)
|
||||
{
|
||||
plugin = Data.Plugin;
|
||||
}
|
||||
else if (stage == ActionRunStage.Post)
|
||||
{
|
||||
plugin = Data.Cleanup;
|
||||
}
|
||||
|
||||
ArgUtil.NotNullOrEmpty(plugin, nameof(plugin));
|
||||
|
||||
// Update the env dictionary.
|
||||
AddPrependPathToEnvironment();
|
||||
|
||||
// Make sure only particular task get run as runner plugin.
|
||||
var runnerPlugin = HostContext.GetService<IRunnerPluginManager>();
|
||||
using (var outputManager = new OutputManager(ExecutionContext, ActionCommandManager))
|
||||
{
|
||||
ActionCommandManager.EnablePluginInternalCommand();
|
||||
try
|
||||
{
|
||||
await runnerPlugin.RunPluginActionAsync(ExecutionContext, plugin, Inputs, Environment, RuntimeVariables, outputManager.OnDataReceived);
|
||||
}
|
||||
finally
|
||||
{
|
||||
ActionCommandManager.DisablePluginInternalCommand();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user