diff --git a/src/Runner.Worker/ExecutionContext.cs b/src/Runner.Worker/ExecutionContext.cs index 1aad95c9c..370960b07 100644 --- a/src/Runner.Worker/ExecutionContext.cs +++ b/src/Runner.Worker/ExecutionContext.cs @@ -98,7 +98,7 @@ namespace GitHub.Runner.Worker // others void ForceTaskComplete(); void RegisterPostJobStep(IStep step); - IStep CreateCompositeStep(string scopeName, IActionRunner step, DictionaryContextData inputsData, Dictionary envData); + IStep CreateCompositeStep(string scopeName, IActionRunner step, DictionaryContextData inputsData, Dictionary envData, string actionDirectory); } public sealed class ExecutionContext : RunnerService, IExecutionContext @@ -258,7 +258,8 @@ namespace GitHub.Runner.Worker string scopeName, IActionRunner step, DictionaryContextData inputsData, - Dictionary envData) + Dictionary envData, + string actionDirectory) { step.ExecutionContext = Root.CreateChild(_record.Id, step.DisplayName, _record.Id.ToString("N"), scopeName, step.Action.ContextName, logger: _logger, insideComposite: true, cancellationTokenSource: CancellationTokenSource.CreateLinkedTokenSource(_cancellationTokenSource.Token)); step.ExecutionContext.ExpressionValues["inputs"] = inputsData; @@ -274,6 +275,10 @@ namespace GitHub.Runner.Worker { envContext[pair.Key] = new StringContextData(pair.Value ?? string.Empty); } + + // Add path to action directory as an environment variable. + envContext["GITHUB_ACTION_PATH"] = new StringContextData(actionDirectory); + step.ExecutionContext.ExpressionValues["env"] = envContext; return step; diff --git a/src/Runner.Worker/Handlers/CompositeActionHandler.cs b/src/Runner.Worker/Handlers/CompositeActionHandler.cs index 50015a574..8dc8b9213 100644 --- a/src/Runner.Worker/Handlers/CompositeActionHandler.cs +++ b/src/Runner.Worker/Handlers/CompositeActionHandler.cs @@ -63,7 +63,7 @@ namespace GitHub.Runner.Worker.Handlers actionRunner.Stage = stage; actionRunner.Condition = actionStep.Condition; - var step = ExecutionContext.CreateCompositeStep(childScopeName, actionRunner, inputsData, Environment); + var step = ExecutionContext.CreateCompositeStep(childScopeName, actionRunner, inputsData, Environment, ActionDirectory); compositeSteps.Add(step); }