diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 240d549f6..dd78a7723 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -1,6 +1,7 @@
name: Runner CD
on:
+ workflow_dispatch:
push:
paths:
- releaseVersion
diff --git a/releaseNote.md b/releaseNote.md
index 48d725bc5..fd009ee62 100644
--- a/releaseNote.md
+++ b/releaseNote.md
@@ -1,18 +1,15 @@
## Features
- - Resolve action download info from server (#508, #515, #550)
- - Print runner and machine name to log. (#539)
+ - Composite Actions Support for Multiple Run Steps (#549, #557, #564, #568, #569, #578, #591, #599, #605, #609, #610, #615, #624)
+ - Prepare to switch GITHUB_ACTION to use ContextName instead of refname (#593)
+ - Fold logs for intermediate docker commands (#608)
+ - Add ability to register a runner to the non-default self-hosted runner group (#613)
+
## Bugs
- - Reduce input validation warnings (#506)
- - Fix null ref exception in SecretMasker caused by `hashfiles` timeout. (#516)
- - Add libicu66 to `./installDependencies.sh` for Ubuntu 20.04 (#535)
- - Fix DataContract with Token service (#532)
- - Skip search $PATH on command with fully qualified path (#526)
- - Restore SELinux context on service file when SELinux is enabled (#525)
+ - Double quotes around variable so CD works if path contains spaces (#602)
+ - Bump lodash in /src/Misc/expressionFunc/hashFiles (#603)
+ - Fix poor performance of process spawned from svc daemon (#614)
## Misc
- - Remove SPS/Token migration code. Remove GHES url manipulate code. (#513)
- - Add sub-step for developer flow for clarity (#523)
- - Update Links and Language to Git + VSCode (#522)
- - Update runner configuration exception message (#540)
+ - Move shared ExecutionContext properties under .Global (#594)
## Windows x64
We recommend configuring the runner in a root folder of the Windows drive (e.g. "C:\actions-runner"). This will help avoid issues related to service identity folder permissions and long file path restrictions on Windows.
diff --git a/src/Misc/layoutbin/actions.runner.plist.template b/src/Misc/layoutbin/actions.runner.plist.template
index 351c11001..c6ba1bd5c 100644
--- a/src/Misc/layoutbin/actions.runner.plist.template
+++ b/src/Misc/layoutbin/actions.runner.plist.template
@@ -23,5 +23,7 @@
ACTIONS_RUNNER_SVC
1
+ ProcessType
+ Interactive
diff --git a/src/Runner.Listener/Runner.cs b/src/Runner.Listener/Runner.cs
index 2fd57d23c..4ae3407d3 100644
--- a/src/Runner.Listener/Runner.cs
+++ b/src/Runner.Listener/Runner.cs
@@ -462,13 +462,14 @@ Options:
--commit Prints the runner commit
Config Options:
- --unattended Disable interactive prompts for missing arguments. Defaults will be used for missing options
- --url string Repository to add the runner to. Required if unattended
- --token string Registration token. Required if unattended
- --name string Name of the runner to configure (default {Environment.MachineName ?? "myrunner"})
- --labels string Extra labels in addition to the default: 'self-hosted,{Constants.Runner.Platform},{Constants.Runner.PlatformArchitecture}'
- --work string Relative runner work directory (default {Constants.Path.WorkDirectory})
- --replace Replace any existing runner with the same name (default false)");
+ --unattended Disable interactive prompts for missing arguments. Defaults will be used for missing options
+ --url string Repository to add the runner to. Required if unattended
+ --token string Registration token. Required if unattended
+ --name string Name of the runner to configure (default {Environment.MachineName ?? "myrunner"})
+ --runnergroup string Name of the runner group to add this runner to (defaults to the default runner group)
+ --labels string Extra labels in addition to the default: 'self-hosted,{Constants.Runner.Platform},{Constants.Runner.PlatformArchitecture}'
+ --work string Relative runner work directory (default {Constants.Path.WorkDirectory})
+ --replace Replace any existing runner with the same name (default false)");
#if OS_WINDOWS
_term.WriteLine($@" --runasservice Run the runner as a service");
_term.WriteLine($@" --windowslogonaccount string Account to run the service as. Requires runasservice");
diff --git a/src/Runner.Worker/ActionManager.cs b/src/Runner.Worker/ActionManager.cs
index 1a730130a..da4af0b67 100644
--- a/src/Runner.Worker/ActionManager.cs
+++ b/src/Runner.Worker/ActionManager.cs
@@ -395,7 +395,7 @@ namespace GitHub.Runner.Worker
Trace.Info($"Action cleanup plugin: {plugin.PluginTypeName}.");
}
}
- else if (definition.Data.Execution.ExecutionType == ActionExecutionType.Composite && !string.IsNullOrEmpty(Environment.GetEnvironmentVariable("TESTING_COMPOSITE_ACTIONS_ALPHA")))
+ else if (definition.Data.Execution.ExecutionType == ActionExecutionType.Composite)
{
var compositeAction = definition.Data.Execution as CompositeActionExecutionData;
Trace.Info($"Load {compositeAction.Steps?.Count ?? 0} action steps.");
@@ -1048,7 +1048,7 @@ namespace GitHub.Runner.Worker
Trace.Info($"Action plugin: {(actionDefinitionData.Execution as PluginActionExecutionData).Plugin}, no more preparation.");
return null;
}
- else if (actionDefinitionData.Execution.ExecutionType == ActionExecutionType.Composite && !string.IsNullOrEmpty(Environment.GetEnvironmentVariable("TESTING_COMPOSITE_ACTIONS_ALPHA")))
+ else if (actionDefinitionData.Execution.ExecutionType == ActionExecutionType.Composite)
{
Trace.Info($"Action composite: {(actionDefinitionData.Execution as CompositeActionExecutionData).Steps}, no more preparation.");
return null;
diff --git a/src/Runner.Worker/ActionManifestManager.cs b/src/Runner.Worker/ActionManifestManager.cs
index 043f6c1cd..7b0315f2e 100644
--- a/src/Runner.Worker/ActionManifestManager.cs
+++ b/src/Runner.Worker/ActionManifestManager.cs
@@ -31,7 +31,7 @@ namespace GitHub.Runner.Worker
string EvaluateDefaultInput(IExecutionContext executionContext, string inputName, TemplateToken token);
- string EvaluateDefaultInputInsideComposite(IExecutionContext executionContext, string inputName, TemplateToken token);
+ // string EvaluateDefaultInputInsideComposite(IExecutionContext executionContext, string inputName, TemplateToken token);
}
public sealed class ActionManifestManager : RunnerService, IActionManifestManager
@@ -107,12 +107,7 @@ namespace GitHub.Runner.Worker
break;
case "outputs":
- if (!string.IsNullOrEmpty(Environment.GetEnvironmentVariable("TESTING_COMPOSITE_ACTIONS_ALPHA")))
- {
- actionOutputs = actionPair.Value.AssertMapping("outputs");
- break;
- }
- Trace.Info($"Ignore action property outputs. Outputs for a whole action is not supported yet.");
+ actionOutputs = actionPair.Value.AssertMapping("outputs");
break;
case "description":
@@ -311,80 +306,82 @@ namespace GitHub.Runner.Worker
return result;
}
- public string EvaluateDefaultInputInsideComposite(
- IExecutionContext executionContext,
- string inputName,
- TemplateToken token)
- {
- string result = "";
- if (token != null)
- {
- // Add GitHub Expression Values
- var githubContext = executionContext.ExpressionValues["github"];
- Trace.Info($"GitHub Context EvaluateDefaultInputInsideComposite: {StringUtil.ConvertToJson(githubContext)}");
+ // public string EvaluateDefaultInputInsideComposite(
+ // IExecutionContext executionContext,
+ // string inputName,
+ // TemplateToken token)
+ // {
+ // string result = "";
+ // if (token != null)
+ // {
+ // // Add GitHub Expression Values
+ // var githubContext = executionContext.ExpressionValues["github"];
+ // Trace.Info($"GitHub Context EvaluateDefaultInputInsideComposite: {StringUtil.ConvertToJson(githubContext)}");
- var temp = new Dictionary();
- temp["github"] = githubContext;
+ // var temp = new Dictionary();
+ // temp["github"] = githubContext;
- var templateContext = CreateTemplateContext(executionContext, temp);
- try
- {
+ // // Trace.Info($"Token: {StringUtil.ConvertToJson(token)}");
- var evaluateResult = TemplateEvaluator.Evaluate(templateContext, "step-with", token, 0, null, omitHeader: true);
+ // var templateContext = CreateTemplateContext(executionContext, temp);
+ // try
+ // {
- Trace.Info($"Input '{inputName}': default value evaluate result: {StringUtil.ConvertToJson(evaluateResult)}");
- templateContext.Errors.Check();
+ // var evaluateResult = TemplateEvaluator.Evaluate(templateContext, "uses-input", token, 0, null, omitHeader: true);
- // Can't evaluate the default github.respository, etc.
+ // Trace.Info($"Input '{inputName}': default value evaluate result: {StringUtil.ConvertToJson(evaluateResult)}");
+ // templateContext.Errors.Check();
+
+ // // Can't evaluate the default github.respository, etc.
- // TODO: restrict to only be used for composite "uses" steps
- // Find better way to isolate only
- // We could create a whitelist for just checkout?
- // (ex: "repo", "token", etc.)
- // if (evaluateResult is BasicExpressionToken)
- // {
+ // // TODO: restrict to only be used for composite "uses" steps
+ // // Find better way to isolate only
+ // // We could create a whitelist for just checkout?
+ // // (ex: "repo", "token", etc.)
+ // // if (evaluateResult is BasicExpressionToken)
+ // // {
- // // var evaluateResult2 = TemplateEvaluator.Evaluate(templateContext, "step-with", token, 0, null, omitHeader: true);
- // // templateContext.Errors.Check();
+ // // // var evaluateResult2 = TemplateEvaluator.Evaluate(templateContext, "step-with", token, 0, null, omitHeader: true);
+ // // // templateContext.Errors.Check();
- // // Trace.Info($"Test2 Input '{inputName}': default value evaluate result: {StringUtil.ConvertToJson(evaluateResult2)}");
- // // var result2 = evaluateResult2.AssertString($"default value for input '{inputName}'").Value;
+ // // // Trace.Info($"Test2 Input '{inputName}': default value evaluate result: {StringUtil.ConvertToJson(evaluateResult2)}");
+ // // // var result2 = evaluateResult2.AssertString($"default value for input '{inputName}'").Value;
- // // TODO 6/28 => Try just getting it from the getgithubcontext lmao.
+ // // // TODO 6/28 => Try just getting it from the getgithubcontext lmao.
- // // Trace.Info($"Basic expr token: {evaluateResult}");
+ // // // Trace.Info($"Basic expr token: {evaluateResult}");
- // var stringVersion = evaluateResult.AssertString($"default value for input '{inputName}'").Value;
+ // // var stringVersion = evaluateResult.AssertString($"default value for input '{inputName}'").Value;
- // // no we have to use the template evaluator since it's a
+ // // // no we have to use the template evaluator since it's a
- // // var githubTokenSplit =
+ // // // var githubTokenSplit =
- // // // Evaluate it
- // // var evaluateResult = executionContext.GetGitHubContext("");
+ // // // // Evaluate it
+ // // // var evaluateResult = executionContext.GetGitHubContext("");
- // return result2;
- // }
+ // // return result2;
+ // // }
- // Trace.Info($"Input '{inputName}': default value evaluate result: {StringUtil.ConvertToJson(evaluateResult)}");
+ // // Trace.Info($"Input '{inputName}': default value evaluate result: {StringUtil.ConvertToJson(evaluateResult)}");
- // String
- result = evaluateResult.AssertString($"default value for input '{inputName}'").Value;
- }
- catch (Exception ex) when (!(ex is TemplateValidationException))
- {
- Trace.Error(ex);
- templateContext.Errors.Add(ex);
- }
+ // // String
+ // result = evaluateResult.AssertString($"default value for input '{inputName}'").Value;
+ // }
+ // catch (Exception ex) when (!(ex is TemplateValidationException))
+ // {
+ // Trace.Error(ex);
+ // templateContext.Errors.Add(ex);
+ // }
- templateContext.Errors.Check();
- }
+ // templateContext.Errors.Check();
+ // }
- return result;
+ // return result;
- }
+ // }
private TemplateContext CreateTemplateContext(
IExecutionContext executionContext,
@@ -500,14 +497,10 @@ namespace GitHub.Runner.Worker
preIfToken = run.Value.AssertString("pre-if");
break;
case "steps":
- if (!string.IsNullOrEmpty(Environment.GetEnvironmentVariable("TESTING_COMPOSITE_ACTIONS_ALPHA")))
- {
- var stepsToken = run.Value.AssertSequence("steps");
- steps = PipelineTemplateConverter.ConvertToSteps(templateContext, stepsToken);
- templateContext.Errors.Check();
- break;
- }
- throw new Exception("You aren't supposed to be using Composite Actions yet!");
+ var stepsToken = run.Value.AssertSequence("steps");
+ steps = PipelineTemplateConverter.ConvertToSteps(templateContext, stepsToken);
+ templateContext.Errors.Check();
+ break;
default:
Trace.Info($"Ignore run property {runsKey}.");
break;
@@ -555,7 +548,7 @@ namespace GitHub.Runner.Worker
};
}
}
- else if (string.Equals(usingToken.Value, "composite", StringComparison.OrdinalIgnoreCase) && !string.IsNullOrEmpty(Environment.GetEnvironmentVariable("TESTING_COMPOSITE_ACTIONS_ALPHA")))
+ else if (string.Equals(usingToken.Value, "composite", StringComparison.OrdinalIgnoreCase))
{
if (steps == null)
{
diff --git a/src/Runner.Worker/ActionRunner.cs b/src/Runner.Worker/ActionRunner.cs
index b10681013..8adf1c52d 100644
--- a/src/Runner.Worker/ActionRunner.cs
+++ b/src/Runner.Worker/ActionRunner.cs
@@ -192,14 +192,15 @@ namespace GitHub.Runner.Worker
if (!inputs.ContainsKey(key))
{
Trace.Info($"Definition Input Key: {key}");
- if (ExecutionContext.InsideComposite)
- {
- inputs[key] = manifestManager.EvaluateDefaultInputInsideComposite(ExecutionContext, key, input.Value);
- }
- else
- {
- inputs[key] = manifestManager.EvaluateDefaultInput(ExecutionContext, key, input.Value);
- }
+ // if (ExecutionContext.InsideComposite)
+ // {
+ // inputs[key] = manifestManager.EvaluateDefaultInputInsideComposite(ExecutionContext, key, input.Value);
+ // }
+ // else
+ // {
+ // inputs[key] = manifestManager.EvaluateDefaultInput(ExecutionContext, key, input.Value);
+ // }
+ inputs[key] = manifestManager.EvaluateDefaultInput(ExecutionContext, key, input.Value);
Trace.Info($"Definition Input Value: {inputs[key]}");
}
}
diff --git a/src/Runner.Worker/ExecutionContext.cs b/src/Runner.Worker/ExecutionContext.cs
index 1aad95c9c..f5211f523 100644
--- a/src/Runner.Worker/ExecutionContext.cs
+++ b/src/Runner.Worker/ExecutionContext.cs
@@ -53,7 +53,7 @@ namespace GitHub.Runner.Worker
JobContext JobContext { get; }
// Only job level ExecutionContext has JobSteps
- List JobSteps { get; }
+ Queue JobSteps { get; }
// Only job level ExecutionContext has PostJobSteps
Stack PostJobSteps { get; }
@@ -144,7 +144,7 @@ namespace GitHub.Runner.Worker
public GlobalContext Global { get; private set; }
// Only job level ExecutionContext has JobSteps
- public List JobSteps { get; private set; }
+ public Queue JobSteps { get; private set; }
// Only job level ExecutionContext has PostJobSteps
public Stack PostJobSteps { get; private set; }
@@ -663,7 +663,7 @@ namespace GitHub.Runner.Worker
Global.PrependPath = new List();
// JobSteps for job ExecutionContext
- JobSteps = new List();
+ JobSteps = new Queue();
// PostJobSteps for job ExecutionContext
PostJobSteps = new Stack();
diff --git a/src/Runner.Worker/GitHubContext.cs b/src/Runner.Worker/GitHubContext.cs
index ac6566ad9..1ecca19f0 100644
--- a/src/Runner.Worker/GitHubContext.cs
+++ b/src/Runner.Worker/GitHubContext.cs
@@ -9,6 +9,7 @@ namespace GitHub.Runner.Worker
private readonly HashSet _contextEnvWhitelist = new HashSet(StringComparer.OrdinalIgnoreCase)
{
"action",
+ "action_path",
"actor",
"api_url",
"base_ref",
diff --git a/src/Runner.Worker/Handlers/CompositeActionHandler.cs b/src/Runner.Worker/Handlers/CompositeActionHandler.cs
index d451ec13e..96e4ef4d5 100644
--- a/src/Runner.Worker/Handlers/CompositeActionHandler.cs
+++ b/src/Runner.Worker/Handlers/CompositeActionHandler.cs
@@ -58,6 +58,14 @@ namespace GitHub.Runner.Worker.Handlers
childScopeName = $"__{Guid.NewGuid()}";
}
+ // Copy the github context so that we don't modify the original pointer
+ // We can't use PipelineContextData.Clone() since that creates a null pointer exception for copying a GitHubContext
+ var compositeGitHubContext = new GitHubContext();
+ foreach (var pair in githubContext)
+ {
+ compositeGitHubContext[pair.Key] = pair.Value;
+ }
+
foreach (Pipelines.ActionStep actionStep in actionSteps)
{
var actionRunner = HostContext.CreateService();
@@ -67,9 +75,9 @@ namespace GitHub.Runner.Worker.Handlers
var step = ExecutionContext.CreateCompositeStep(childScopeName, actionRunner, inputsData, Environment);
- // TESTING: Blatantly pass github object so that we have access to it for checking out
- // (Later, we can just do this for the checkout step!)
- step.ExecutionContext.ExpressionValues["github"] = githubContext;
+ // Set GITHUB_ACTION_PATH
+ step.ExecutionContext.ExpressionValues["github"] = compositeGitHubContext;
+ step.ExecutionContext.SetGitHubContext("action_path", ActionDirectory);
compositeSteps.Add(step);
}
@@ -183,9 +191,6 @@ namespace GitHub.Runner.Worker.Handlers
var actionStep = step as IActionRunner;
- // Set GITHUB_ACTION
- step.ExecutionContext.SetGitHubContext("action", step.ExecutionContext.GetFullyQualifiedContextName());
-
try
{
// Evaluate and merge action's env block to env context
diff --git a/src/Runner.Worker/JobRunner.cs b/src/Runner.Worker/JobRunner.cs
index 3ea9e0e04..4fb6662eb 100644
--- a/src/Runner.Worker/JobRunner.cs
+++ b/src/Runner.Worker/JobRunner.cs
@@ -152,7 +152,7 @@ namespace GitHub.Runner.Worker
{
foreach (var step in jobSteps)
{
- jobContext.JobSteps.Add(step);
+ jobContext.JobSteps.Enqueue(step);
}
await stepsRunner.RunAsync(jobContext);
diff --git a/src/Runner.Worker/StepsRunner.cs b/src/Runner.Worker/StepsRunner.cs
index 7877ae6a7..40430b694 100644
--- a/src/Runner.Worker/StepsRunner.cs
+++ b/src/Runner.Worker/StepsRunner.cs
@@ -59,14 +59,13 @@ namespace GitHub.Runner.Worker
checkPostJobActions = true;
while (jobContext.PostJobSteps.TryPop(out var postStep))
{
- jobContext.JobSteps.Add(postStep);
+ jobContext.JobSteps.Enqueue(postStep);
}
continue;
}
- var step = jobContext.JobSteps[0];
- jobContext.JobSteps.RemoveAt(0);
+ var step = jobContext.JobSteps.Dequeue();
Trace.Info($"Processing step: DisplayName='{step.DisplayName}'");
ArgUtil.NotNull(step.ExecutionContext, nameof(step.ExecutionContext));
diff --git a/src/Runner.Worker/action_yaml.json b/src/Runner.Worker/action_yaml.json
index eb143457e..2e129a7b0 100644
--- a/src/Runner.Worker/action_yaml.json
+++ b/src/Runner.Worker/action_yaml.json
@@ -232,6 +232,20 @@
"loose-key-type": "non-empty-string",
"loose-value-type": "string"
}
+ },
+ "uses-input": {
+ "context": [
+ "github",
+ "inputs",
+ "strategy",
+ "matrix",
+ "steps",
+ "job",
+ "runner",
+ "env",
+ "hashFiles(1,255)"
+ ],
+ "string": {}
}
}
}
\ No newline at end of file
diff --git a/src/Test/L0/Worker/StepsRunnerL0.cs b/src/Test/L0/Worker/StepsRunnerL0.cs
index 87ef812c3..3d97b0110 100644
--- a/src/Test/L0/Worker/StepsRunnerL0.cs
+++ b/src/Test/L0/Worker/StepsRunnerL0.cs
@@ -82,7 +82,7 @@ namespace GitHub.Runner.Common.Tests.Worker
{
_ec.Object.Result = null;
- _ec.Setup(x => x.JobSteps).Returns(new List(variableSet.Select(x => x.Object).ToList()));
+ _ec.Setup(x => x.JobSteps).Returns(new Queue(variableSet.Select(x => x.Object).ToList()));
// Act.
await _stepsRunner.RunAsync(jobContext: _ec.Object);
@@ -117,7 +117,7 @@ namespace GitHub.Runner.Common.Tests.Worker
{
_ec.Object.Result = null;
- _ec.Setup(x => x.JobSteps).Returns(new List(variableSet.Select(x => x.Object).ToList()));
+ _ec.Setup(x => x.JobSteps).Returns(new Queue(variableSet.Select(x => x.Object).ToList()));
// Act.
await _stepsRunner.RunAsync(jobContext: _ec.Object);
@@ -156,7 +156,7 @@ namespace GitHub.Runner.Common.Tests.Worker
{
_ec.Object.Result = null;
- _ec.Setup(x => x.JobSteps).Returns(new List(variableSet.Steps.Select(x => x.Object).ToList()));
+ _ec.Setup(x => x.JobSteps).Returns(new Queue(variableSet.Steps.Select(x => x.Object).ToList()));
// Act.
await _stepsRunner.RunAsync(jobContext: _ec.Object);
@@ -210,7 +210,7 @@ namespace GitHub.Runner.Common.Tests.Worker
{
_ec.Object.Result = null;
- _ec.Setup(x => x.JobSteps).Returns(new List(variableSet.Steps.Select(x => x.Object).ToList()));
+ _ec.Setup(x => x.JobSteps).Returns(new Queue(variableSet.Steps.Select(x => x.Object).ToList()));
// Act.
await _stepsRunner.RunAsync(jobContext: _ec.Object);
@@ -289,7 +289,7 @@ namespace GitHub.Runner.Common.Tests.Worker
{
_ec.Object.Result = null;
- _ec.Setup(x => x.JobSteps).Returns(new List(variableSet.Steps.Select(x => x.Object).ToList()));
+ _ec.Setup(x => x.JobSteps).Returns(new Queue(variableSet.Steps.Select(x => x.Object).ToList()));
// Act.
await _stepsRunner.RunAsync(jobContext: _ec.Object);
@@ -332,7 +332,7 @@ namespace GitHub.Runner.Common.Tests.Worker
{
_ec.Object.Result = null;
- _ec.Setup(x => x.JobSteps).Returns(new List(variableSet.Step.Select(x => x.Object).ToList()));
+ _ec.Setup(x => x.JobSteps).Returns(new Queue(variableSet.Step.Select(x => x.Object).ToList()));
// Act.
await _stepsRunner.RunAsync(jobContext: _ec.Object);
@@ -363,7 +363,7 @@ namespace GitHub.Runner.Common.Tests.Worker
{
_ec.Object.Result = null;
- _ec.Setup(x => x.JobSteps).Returns(new List(variableSet.Select(x => x.Object).ToList()));
+ _ec.Setup(x => x.JobSteps).Returns(new Queue(variableSet.Select(x => x.Object).ToList()));
// Act.
await _stepsRunner.RunAsync(jobContext: _ec.Object);
@@ -393,7 +393,7 @@ namespace GitHub.Runner.Common.Tests.Worker
{
_ec.Object.Result = null;
- _ec.Setup(x => x.JobSteps).Returns(new List(variableSet.Select(x => x.Object).ToList()));
+ _ec.Setup(x => x.JobSteps).Returns(new Queue(variableSet.Select(x => x.Object).ToList()));
// Act.
await _stepsRunner.RunAsync(jobContext: _ec.Object);
@@ -419,7 +419,7 @@ namespace GitHub.Runner.Common.Tests.Worker
_ec.Object.Result = null;
- _ec.Setup(x => x.JobSteps).Returns(new List(new[] { step1.Object }));
+ _ec.Setup(x => x.JobSteps).Returns(new Queue(new[] { step1.Object }));
// Act.
await _stepsRunner.RunAsync(jobContext: _ec.Object);
@@ -457,7 +457,7 @@ namespace GitHub.Runner.Common.Tests.Worker
_ec.Object.Result = null;
- _ec.Setup(x => x.JobSteps).Returns(new List(new[] { step1.Object, step2.Object }));
+ _ec.Setup(x => x.JobSteps).Returns(new Queue(new[] { step1.Object, step2.Object }));
// Act.
await _stepsRunner.RunAsync(jobContext: _ec.Object);
@@ -495,7 +495,7 @@ namespace GitHub.Runner.Common.Tests.Worker
_ec.Object.Result = null;
- _ec.Setup(x => x.JobSteps).Returns(new List(new[] { step1.Object, step2.Object }));
+ _ec.Setup(x => x.JobSteps).Returns(new Queue(new[] { step1.Object, step2.Object }));
// Act.
await _stepsRunner.RunAsync(jobContext: _ec.Object);
@@ -526,7 +526,7 @@ namespace GitHub.Runner.Common.Tests.Worker
_ec.Object.Result = null;
- _ec.Setup(x => x.JobSteps).Returns(new List(new[] { step1.Object, step2.Object, step3.Object }));
+ _ec.Setup(x => x.JobSteps).Returns(new Queue(new[] { step1.Object, step2.Object, step3.Object }));
// Act.
await _stepsRunner.RunAsync(jobContext: _ec.Object);
@@ -562,7 +562,7 @@ namespace GitHub.Runner.Common.Tests.Worker
_ec.Object.Result = null;
- _ec.Setup(x => x.JobSteps).Returns(new List(new[] { step1.Object, step2.Object, step3.Object }));
+ _ec.Setup(x => x.JobSteps).Returns(new Queue(new[] { step1.Object, step2.Object, step3.Object }));
// Act.
await _stepsRunner.RunAsync(jobContext: _ec.Object);
diff --git a/src/runnerversion b/src/runnerversion
index 58301aa10..08b78dcc6 100644
--- a/src/runnerversion
+++ b/src/runnerversion
@@ -1 +1 @@
-2.267.0
+2.274.0