Skip to content

Commit 462b511

Browse files
author
David Kale
authored
docker build using -f instead of implied default (#471)
* pass -f to docker build * Wrong place * build path * Also pass docker context path * Tidy up format * PR Feedback
1 parent 6922f3c commit 462b511

File tree

4 files changed

+16
-6
lines changed

4 files changed

+16
-6
lines changed

src/Runner.Worker/ActionManager.cs

+6-1
Original file line numberDiff line numberDiff line change
@@ -430,7 +430,12 @@ private async Task BuildActionContainerAsync(IExecutionContext executionContext,
430430
var imageName = $"{dockerManger.DockerInstanceLabel}:{Guid.NewGuid().ToString("N")}";
431431
while (retryCount < 3)
432432
{
433-
buildExitCode = await dockerManger.DockerBuild(executionContext, setupInfo.Container.WorkingDirectory, Directory.GetParent(setupInfo.Container.Dockerfile).FullName, imageName);
433+
buildExitCode = await dockerManger.DockerBuild(
434+
executionContext,
435+
setupInfo.Container.WorkingDirectory,
436+
setupInfo.Container.Dockerfile,
437+
Directory.GetParent(setupInfo.Container.Dockerfile).FullName,
438+
imageName);
434439
if (buildExitCode == 0)
435440
{
436441
break;

src/Runner.Worker/Container/DockerCommandManager.cs

+3-3
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ public interface IDockerCommandManager : IRunnerService
1717
string DockerInstanceLabel { get; }
1818
Task<DockerVersion> DockerVersion(IExecutionContext context);
1919
Task<int> DockerPull(IExecutionContext context, string image);
20-
Task<int> DockerBuild(IExecutionContext context, string workingDirectory, string dockerFile, string tag);
20+
Task<int> DockerBuild(IExecutionContext context, string workingDirectory, string dockerFile, string dockerContext, string tag);
2121
Task<string> DockerCreate(IExecutionContext context, ContainerInfo container);
2222
Task<int> DockerRun(IExecutionContext context, ContainerInfo container, EventHandler<ProcessDataReceivedEventArgs> stdoutDataReceived, EventHandler<ProcessDataReceivedEventArgs> stderrDataReceived);
2323
Task<int> DockerStart(IExecutionContext context, string containerId);
@@ -87,9 +87,9 @@ public async Task<int> DockerPull(IExecutionContext context, string image)
8787
return await ExecuteDockerCommandAsync(context, "pull", image, context.CancellationToken);
8888
}
8989

90-
public async Task<int> DockerBuild(IExecutionContext context, string workingDirectory, string dockerFile, string tag)
90+
public async Task<int> DockerBuild(IExecutionContext context, string workingDirectory, string dockerFile, string dockerContext, string tag)
9191
{
92-
return await ExecuteDockerCommandAsync(context, "build", $"-t {tag} \"{dockerFile}\"", workingDirectory, context.CancellationToken);
92+
return await ExecuteDockerCommandAsync(context, "build", $"-t {tag} -f \"{dockerFile}\" \"{dockerContext}\"", workingDirectory, context.CancellationToken);
9393
}
9494

9595
public async Task<string> DockerCreate(IExecutionContext context, ContainerInfo container)

src/Runner.Worker/Handlers/ContainerActionHandler.cs

+6-1
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,12 @@ public async Task RunAsync(ActionRunStage stage)
5252
ExecutionContext.Output($"Dockerfile for action: '{dockerFile}'.");
5353

5454
var imageName = $"{dockerManger.DockerInstanceLabel}:{ExecutionContext.Id.ToString("N")}";
55-
var buildExitCode = await dockerManger.DockerBuild(ExecutionContext, ExecutionContext.GetGitHubContext("workspace"), Directory.GetParent(dockerFile).FullName, imageName);
55+
var buildExitCode = await dockerManger.DockerBuild(
56+
ExecutionContext,
57+
ExecutionContext.GetGitHubContext("workspace"),
58+
dockerFile,
59+
Directory.GetParent(dockerFile).FullName,
60+
imageName);
5661
if (buildExitCode != 0)
5762
{
5863
throw new InvalidOperationException($"Docker build failed with exit code {buildExitCode}");

src/Test/L0/Worker/ActionManagerL0.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1966,7 +1966,7 @@ private void Setup([CallerMemberName] string name = "")
19661966
_dockerManager.Setup(x => x.DockerPull(_ec.Object, "ubuntu:16.04")).Returns(Task.FromResult(0));
19671967
_dockerManager.Setup(x => x.DockerPull(_ec.Object, "ubuntu:100.04")).Returns(Task.FromResult(1));
19681968

1969-
_dockerManager.Setup(x => x.DockerBuild(_ec.Object, It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>())).Returns(Task.FromResult(0));
1969+
_dockerManager.Setup(x => x.DockerBuild(_ec.Object, It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>())).Returns(Task.FromResult(0));
19701970

19711971
_pluginManager = new Mock<IRunnerPluginManager>();
19721972
_pluginManager.Setup(x => x.GetPluginAction(It.IsAny<string>())).Returns(new RunnerPluginActionInfo() { PluginTypeName = "plugin.class, plugin", PostPluginTypeName = "plugin.cleanup, plugin" });

0 commit comments

Comments
 (0)