From 05d70a5fe6f019b2bec31b54882e9c7de7dd8cce Mon Sep 17 00:00:00 2001 From: Aidan Jensen Date: Fri, 3 Feb 2023 07:11:36 -0800 Subject: [PATCH 1/2] Pass dockerfile to build executor This allows testing actions with non standard dockerfile names Signed-off-by: Aidan Jensen --- pkg/container/container_types.go | 1 + pkg/container/docker_build.go | 3 ++- pkg/runner/action.go | 3 ++- .../testdata/actions-environment-and-context-tests/push.yml | 2 ++ 4 files changed, 7 insertions(+), 2 deletions(-) diff --git a/pkg/container/container_types.go b/pkg/container/container_types.go index c83ec35b4c7..6b3fc860875 100644 --- a/pkg/container/container_types.go +++ b/pkg/container/container_types.go @@ -55,6 +55,7 @@ type Container interface { // NewDockerBuildExecutorInput the input for the NewDockerBuildExecutor function type NewDockerBuildExecutorInput struct { ContextDir string + Dockerfile string Container Container ImageTag string Platform string diff --git a/pkg/container/docker_build.go b/pkg/container/docker_build.go index 0c87cfdfd8c..39d3454ef7f 100644 --- a/pkg/container/docker_build.go +++ b/pkg/container/docker_build.go @@ -50,7 +50,8 @@ func NewDockerBuildExecutor(input NewDockerBuildExecutorInput) common.Executor { if input.Container != nil { buildContext, err = input.Container.GetContainerArchive(ctx, input.ContextDir+"/.") } else { - buildContext, err = createBuildContext(ctx, input.ContextDir, "Dockerfile") + buildContext, err = createBuildContext(ctx, input.ContextDir, input.Dockerfile) + options.Dockerfile = input.Dockerfile } if err != nil { return err diff --git a/pkg/runner/action.go b/pkg/runner/action.go index 01e56f1bd5a..c3223c28b70 100644 --- a/pkg/runner/action.go +++ b/pkg/runner/action.go @@ -231,7 +231,7 @@ func execAsDocker(ctx context.Context, step actionStep, actionName string, based image = fmt.Sprintf("%s-dockeraction:%s", regexp.MustCompile("[^a-zA-Z0-9]").ReplaceAllString(actionName, "-"), "latest") image = fmt.Sprintf("act-%s", strings.TrimLeft(image, "-")) image = strings.ToLower(image) - contextDir, _ := filepath.Split(filepath.Join(basedir, action.Runs.Image)) + contextDir, fileName := filepath.Split(filepath.Join(basedir, action.Runs.Image)) anyArchExists, err := container.ImageExistsLocally(ctx, image, "any") if err != nil { @@ -261,6 +261,7 @@ func execAsDocker(ctx context.Context, step actionStep, actionName string, based } prepImage = container.NewDockerBuildExecutor(container.NewDockerBuildExecutorInput{ ContextDir: contextDir, + Dockerfile: fileName, ImageTag: image, Container: actionContainer, Platform: rc.Config.ContainerArchitecture, diff --git a/pkg/runner/testdata/actions-environment-and-context-tests/push.yml b/pkg/runner/testdata/actions-environment-and-context-tests/push.yml index db3c3413a70..19b8658d028 100644 --- a/pkg/runner/testdata/actions-environment-and-context-tests/push.yml +++ b/pkg/runner/testdata/actions-environment-and-context-tests/push.yml @@ -11,3 +11,5 @@ jobs: - uses: './actions-environment-and-context-tests/docker' - uses: 'nektos/act-test-actions/js@main' - uses: 'nektos/act-test-actions/docker@main' + - uses: 'artificial-aidan/act-test-actions/docker-file@6e10d41bbdb0919d19847350a7763a580cfa41c8' + - uses: 'artificial-aidan/act-test-actions/docker-relative-context/action@6e10d41bbdb0919d19847350a7763a580cfa41c8' From cca821ea45310ba753cf44571360aecb6216b1e2 Mon Sep 17 00:00:00 2001 From: Aidan Jensen Date: Fri, 3 Feb 2023 08:16:37 -0800 Subject: [PATCH 2/2] use nektos test actions. Move dockerfile option Signed-off-by: Aidan Jensen --- pkg/container/docker_build.go | 2 +- .../testdata/actions-environment-and-context-tests/push.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pkg/container/docker_build.go b/pkg/container/docker_build.go index 39d3454ef7f..72150234649 100644 --- a/pkg/container/docker_build.go +++ b/pkg/container/docker_build.go @@ -45,13 +45,13 @@ func NewDockerBuildExecutor(input NewDockerBuildExecutorInput) common.Executor { Remove: true, Platform: input.Platform, AuthConfigs: LoadDockerAuthConfigs(ctx), + Dockerfile: input.Dockerfile, } var buildContext io.ReadCloser if input.Container != nil { buildContext, err = input.Container.GetContainerArchive(ctx, input.ContextDir+"/.") } else { buildContext, err = createBuildContext(ctx, input.ContextDir, input.Dockerfile) - options.Dockerfile = input.Dockerfile } if err != nil { return err diff --git a/pkg/runner/testdata/actions-environment-and-context-tests/push.yml b/pkg/runner/testdata/actions-environment-and-context-tests/push.yml index 19b8658d028..1d799d57245 100644 --- a/pkg/runner/testdata/actions-environment-and-context-tests/push.yml +++ b/pkg/runner/testdata/actions-environment-and-context-tests/push.yml @@ -11,5 +11,5 @@ jobs: - uses: './actions-environment-and-context-tests/docker' - uses: 'nektos/act-test-actions/js@main' - uses: 'nektos/act-test-actions/docker@main' - - uses: 'artificial-aidan/act-test-actions/docker-file@6e10d41bbdb0919d19847350a7763a580cfa41c8' - - uses: 'artificial-aidan/act-test-actions/docker-relative-context/action@6e10d41bbdb0919d19847350a7763a580cfa41c8' + - uses: 'nektos/act-test-actions/docker-file@main' + - uses: 'nektos/act-test-actions/docker-relative-context/action@main'