mirror of
https://github.com/actions/runner.git
synced 2025-12-10 20:36:49 +00:00
Compare commits
1 Commits
v2.160.2
...
users/eric
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8770849c3b |
@@ -42,6 +42,7 @@ namespace GitHub.Runner.Common
|
||||
// Action command extensions.
|
||||
case "GitHub.Runner.Worker.IActionCommandExtension":
|
||||
Add<T>(extensions, "GitHub.Runner.Worker.InternalPluginSetRepoPathCommandExtension, Runner.Worker");
|
||||
Add<T>(extensions, "GitHub.Runner.Worker.SetWorkspaceCommandExtension, Runner.Worker");
|
||||
Add<T>(extensions, "GitHub.Runner.Worker.SetEnvCommandExtension, Runner.Worker");
|
||||
Add<T>(extensions, "GitHub.Runner.Worker.SetOutputCommandExtension, Runner.Worker");
|
||||
Add<T>(extensions, "GitHub.Runner.Worker.SaveStateCommandExtension, Runner.Worker");
|
||||
|
||||
@@ -184,6 +184,40 @@ namespace GitHub.Runner.Worker
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class SetWorkspaceCommandExtension : RunnerService, IActionCommandExtension
|
||||
{
|
||||
public string Command => "set-workspace";
|
||||
|
||||
public Type ExtensionType => typeof(IActionCommandExtension);
|
||||
|
||||
public void ProcessCommand(IExecutionContext context, string line, ActionCommand command)
|
||||
{
|
||||
string path = command.Data;
|
||||
if (string.IsNullOrWhiteSpace(path))
|
||||
{
|
||||
throw new Exception("Path not specified");
|
||||
}
|
||||
|
||||
if (!Path.IsPathRooted(path))
|
||||
{
|
||||
throw new Exception("Expected a rooted path");
|
||||
}
|
||||
|
||||
string runnerWorkspace = context.GetRunnerContext("workspace");
|
||||
ArgUtil.Directory(runnerWorkspace, nameof(runnerWorkspace));
|
||||
|
||||
// Must be under runner workspace
|
||||
path = Path.GetFullPath(path); // remove relative pathing and normalize slashes
|
||||
if (!path.StartsWith(runnerWorkspace + Path.DirectorySeparatorChar, IOUtil.FilePathStringComparison))
|
||||
{
|
||||
throw new Exception($"Expected path to be under {runnerWorkspace}");
|
||||
}
|
||||
|
||||
Trace.Info($"Setting GitHub workspace to '{path}'");
|
||||
context.SetGitHubContext("workspace", path);
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class SetEnvCommandExtension : RunnerService, IActionCommandExtension
|
||||
{
|
||||
public string Command => "set-env";
|
||||
|
||||
@@ -78,6 +78,7 @@ namespace GitHub.Runner.Worker
|
||||
void Start(string currentOperation = null);
|
||||
TaskResult Complete(TaskResult? result = null, string currentOperation = null, string resultCode = null);
|
||||
void SetEnvContext(string name, string value);
|
||||
string GetRunnerContext(string name);
|
||||
void SetRunnerContext(string name, string value);
|
||||
string GetGitHubContext(string name);
|
||||
void SetGitHubContext(string name, string value);
|
||||
@@ -365,6 +366,13 @@ namespace GitHub.Runner.Worker
|
||||
return Result.Value;
|
||||
}
|
||||
|
||||
public string GetRunnerContext(string name)
|
||||
{
|
||||
ArgUtil.NotNullOrEmpty(name, nameof(name));
|
||||
var runnerContext = ExpressionValues["runner"] as RunnerContext;
|
||||
return runnerContext[name].AssertString($"runner[{name}]");
|
||||
}
|
||||
|
||||
public void SetRunnerContext(string name, string value)
|
||||
{
|
||||
ArgUtil.NotNullOrEmpty(name, nameof(name));
|
||||
|
||||
Reference in New Issue
Block a user