Pass dockerfile to build executor (#1606)

This allows testing actions with non standard dockerfile names

Signed-off-by: Aidan Jensen <aidan@artificial.com>
This commit is contained in:
Aidan 2023-02-08 09:14:43 -08:00 committed by GitHub
parent 36dbbc1dfa
commit 44333c758a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 7 additions and 2 deletions

View File

@ -55,6 +55,7 @@ type Container interface {
// NewDockerBuildExecutorInput the input for the NewDockerBuildExecutor function // NewDockerBuildExecutorInput the input for the NewDockerBuildExecutor function
type NewDockerBuildExecutorInput struct { type NewDockerBuildExecutorInput struct {
ContextDir string ContextDir string
Dockerfile string
Container Container Container Container
ImageTag string ImageTag string
Platform string Platform string

View File

@ -45,12 +45,13 @@ func NewDockerBuildExecutor(input NewDockerBuildExecutorInput) common.Executor {
Remove: true, Remove: true,
Platform: input.Platform, Platform: input.Platform,
AuthConfigs: LoadDockerAuthConfigs(ctx), AuthConfigs: LoadDockerAuthConfigs(ctx),
Dockerfile: input.Dockerfile,
} }
var buildContext io.ReadCloser var buildContext io.ReadCloser
if input.Container != nil { if input.Container != nil {
buildContext, err = input.Container.GetContainerArchive(ctx, input.ContextDir+"/.") buildContext, err = input.Container.GetContainerArchive(ctx, input.ContextDir+"/.")
} else { } else {
buildContext, err = createBuildContext(ctx, input.ContextDir, "Dockerfile") buildContext, err = createBuildContext(ctx, input.ContextDir, input.Dockerfile)
} }
if err != nil { if err != nil {
return err return err

View File

@ -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("%s-dockeraction:%s", regexp.MustCompile("[^a-zA-Z0-9]").ReplaceAllString(actionName, "-"), "latest")
image = fmt.Sprintf("act-%s", strings.TrimLeft(image, "-")) image = fmt.Sprintf("act-%s", strings.TrimLeft(image, "-"))
image = strings.ToLower(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") anyArchExists, err := container.ImageExistsLocally(ctx, image, "any")
if err != nil { if err != nil {
@ -261,6 +261,7 @@ func execAsDocker(ctx context.Context, step actionStep, actionName string, based
} }
prepImage = container.NewDockerBuildExecutor(container.NewDockerBuildExecutorInput{ prepImage = container.NewDockerBuildExecutor(container.NewDockerBuildExecutorInput{
ContextDir: contextDir, ContextDir: contextDir,
Dockerfile: fileName,
ImageTag: image, ImageTag: image,
Container: actionContainer, Container: actionContainer,
Platform: rc.Config.ContainerArchitecture, Platform: rc.Config.ContainerArchitecture,

View File

@ -11,3 +11,5 @@ jobs:
- uses: './actions-environment-and-context-tests/docker' - uses: './actions-environment-and-context-tests/docker'
- uses: 'nektos/act-test-actions/js@main' - uses: 'nektos/act-test-actions/js@main'
- uses: 'nektos/act-test-actions/docker@main' - uses: 'nektos/act-test-actions/docker@main'
- uses: 'nektos/act-test-actions/docker-file@main'
- uses: 'nektos/act-test-actions/docker-relative-context/action@main'