feat: Allow building without docker support (#1507)
* feat: Allow building without docker support * fix macos build tag Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
This commit is contained in:
parent
a53a1c2000
commit
7e8d070811
|
@ -0,0 +1,70 @@
|
||||||
|
package container
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"io"
|
||||||
|
|
||||||
|
"github.com/nektos/act/pkg/common"
|
||||||
|
)
|
||||||
|
|
||||||
|
// NewContainerInput the input for the New function
|
||||||
|
type NewContainerInput struct {
|
||||||
|
Image string
|
||||||
|
Username string
|
||||||
|
Password string
|
||||||
|
Entrypoint []string
|
||||||
|
Cmd []string
|
||||||
|
WorkingDir string
|
||||||
|
Env []string
|
||||||
|
Binds []string
|
||||||
|
Mounts map[string]string
|
||||||
|
Name string
|
||||||
|
Stdout io.Writer
|
||||||
|
Stderr io.Writer
|
||||||
|
NetworkMode string
|
||||||
|
Privileged bool
|
||||||
|
UsernsMode string
|
||||||
|
Platform string
|
||||||
|
Options string
|
||||||
|
}
|
||||||
|
|
||||||
|
// FileEntry is a file to copy to a container
|
||||||
|
type FileEntry struct {
|
||||||
|
Name string
|
||||||
|
Mode int64
|
||||||
|
Body string
|
||||||
|
}
|
||||||
|
|
||||||
|
// Container for managing docker run containers
|
||||||
|
type Container interface {
|
||||||
|
Create(capAdd []string, capDrop []string) common.Executor
|
||||||
|
Copy(destPath string, files ...*FileEntry) common.Executor
|
||||||
|
CopyDir(destPath string, srcPath string, useGitIgnore bool) common.Executor
|
||||||
|
GetContainerArchive(ctx context.Context, srcPath string) (io.ReadCloser, error)
|
||||||
|
Pull(forcePull bool) common.Executor
|
||||||
|
Start(attach bool) common.Executor
|
||||||
|
Exec(command []string, env map[string]string, user, workdir string) common.Executor
|
||||||
|
UpdateFromEnv(srcPath string, env *map[string]string) common.Executor
|
||||||
|
UpdateFromImageEnv(env *map[string]string) common.Executor
|
||||||
|
UpdateFromPath(env *map[string]string) common.Executor
|
||||||
|
Remove() common.Executor
|
||||||
|
Close() common.Executor
|
||||||
|
ReplaceLogWriter(io.Writer, io.Writer) (io.Writer, io.Writer)
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewDockerBuildExecutorInput the input for the NewDockerBuildExecutor function
|
||||||
|
type NewDockerBuildExecutorInput struct {
|
||||||
|
ContextDir string
|
||||||
|
Container Container
|
||||||
|
ImageTag string
|
||||||
|
Platform string
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewDockerPullExecutorInput the input for the NewDockerPullExecutor function
|
||||||
|
type NewDockerPullExecutorInput struct {
|
||||||
|
Image string
|
||||||
|
ForcePull bool
|
||||||
|
Platform string
|
||||||
|
Username string
|
||||||
|
Password string
|
||||||
|
}
|
|
@ -1,3 +1,5 @@
|
||||||
|
//go:build !(WITHOUT_DOCKER || !(linux || darwin || windows))
|
||||||
|
|
||||||
package container
|
package container
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
//go:build !(WITHOUT_DOCKER || !(linux || darwin || windows))
|
||||||
|
|
||||||
package container
|
package container
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
@ -16,14 +18,6 @@ import (
|
||||||
"github.com/nektos/act/pkg/common"
|
"github.com/nektos/act/pkg/common"
|
||||||
)
|
)
|
||||||
|
|
||||||
// NewDockerBuildExecutorInput the input for the NewDockerBuildExecutor function
|
|
||||||
type NewDockerBuildExecutorInput struct {
|
|
||||||
ContextDir string
|
|
||||||
Container Container
|
|
||||||
ImageTag string
|
|
||||||
Platform string
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewDockerBuildExecutor function to create a run executor for the container
|
// NewDockerBuildExecutor function to create a run executor for the container
|
||||||
func NewDockerBuildExecutor(input NewDockerBuildExecutorInput) common.Executor {
|
func NewDockerBuildExecutor(input NewDockerBuildExecutorInput) common.Executor {
|
||||||
return func(ctx context.Context) error {
|
return func(ctx context.Context) error {
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
//go:build !(WITHOUT_DOCKER || !(linux || darwin || windows))
|
||||||
|
|
||||||
// This file is exact copy of https://github.com/docker/cli/blob/9ac8584acfd501c3f4da0e845e3a40ed15c85041/cli/command/container/opts.go
|
// This file is exact copy of https://github.com/docker/cli/blob/9ac8584acfd501c3f4da0e845e3a40ed15c85041/cli/command/container/opts.go
|
||||||
// appended with license information.
|
// appended with license information.
|
||||||
//
|
//
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
//go:build !(WITHOUT_DOCKER || !(linux || darwin || windows))
|
||||||
|
|
||||||
package container
|
package container
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
//go:build !(WITHOUT_DOCKER || !(linux || darwin || windows))
|
||||||
|
|
||||||
package container
|
package container
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
//go:build !(WITHOUT_DOCKER || !(linux || darwin || windows))
|
||||||
|
|
||||||
package container
|
package container
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
@ -12,15 +14,6 @@ import (
|
||||||
"github.com/nektos/act/pkg/common"
|
"github.com/nektos/act/pkg/common"
|
||||||
)
|
)
|
||||||
|
|
||||||
// NewDockerPullExecutorInput the input for the NewDockerPullExecutor function
|
|
||||||
type NewDockerPullExecutorInput struct {
|
|
||||||
Image string
|
|
||||||
ForcePull bool
|
|
||||||
Platform string
|
|
||||||
Username string
|
|
||||||
Password string
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewDockerPullExecutor function to create a run executor for the container
|
// NewDockerPullExecutor function to create a run executor for the container
|
||||||
func NewDockerPullExecutor(input NewDockerPullExecutorInput) common.Executor {
|
func NewDockerPullExecutor(input NewDockerPullExecutorInput) common.Executor {
|
||||||
return func(ctx context.Context) error {
|
return func(ctx context.Context) error {
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
//go:build !(WITHOUT_DOCKER || !(linux || darwin || windows))
|
||||||
|
|
||||||
package container
|
package container
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
@ -38,51 +40,6 @@ import (
|
||||||
"github.com/nektos/act/pkg/common"
|
"github.com/nektos/act/pkg/common"
|
||||||
)
|
)
|
||||||
|
|
||||||
// NewContainerInput the input for the New function
|
|
||||||
type NewContainerInput struct {
|
|
||||||
Image string
|
|
||||||
Username string
|
|
||||||
Password string
|
|
||||||
Entrypoint []string
|
|
||||||
Cmd []string
|
|
||||||
WorkingDir string
|
|
||||||
Env []string
|
|
||||||
Binds []string
|
|
||||||
Mounts map[string]string
|
|
||||||
Name string
|
|
||||||
Stdout io.Writer
|
|
||||||
Stderr io.Writer
|
|
||||||
NetworkMode string
|
|
||||||
Privileged bool
|
|
||||||
UsernsMode string
|
|
||||||
Platform string
|
|
||||||
Options string
|
|
||||||
}
|
|
||||||
|
|
||||||
// FileEntry is a file to copy to a container
|
|
||||||
type FileEntry struct {
|
|
||||||
Name string
|
|
||||||
Mode int64
|
|
||||||
Body string
|
|
||||||
}
|
|
||||||
|
|
||||||
// Container for managing docker run containers
|
|
||||||
type Container interface {
|
|
||||||
Create(capAdd []string, capDrop []string) common.Executor
|
|
||||||
Copy(destPath string, files ...*FileEntry) common.Executor
|
|
||||||
CopyDir(destPath string, srcPath string, useGitIgnore bool) common.Executor
|
|
||||||
GetContainerArchive(ctx context.Context, srcPath string) (io.ReadCloser, error)
|
|
||||||
Pull(forcePull bool) common.Executor
|
|
||||||
Start(attach bool) common.Executor
|
|
||||||
Exec(command []string, env map[string]string, user, workdir string) common.Executor
|
|
||||||
UpdateFromEnv(srcPath string, env *map[string]string) common.Executor
|
|
||||||
UpdateFromImageEnv(env *map[string]string) common.Executor
|
|
||||||
UpdateFromPath(env *map[string]string) common.Executor
|
|
||||||
Remove() common.Executor
|
|
||||||
Close() common.Executor
|
|
||||||
ReplaceLogWriter(io.Writer, io.Writer) (io.Writer, io.Writer)
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewContainer creates a reference to a container
|
// NewContainer creates a reference to a container
|
||||||
func NewContainer(input *NewContainerInput) ExecutionsEnvironment {
|
func NewContainer(input *NewContainerInput) ExecutionsEnvironment {
|
||||||
cr := new(containerReference)
|
cr := new(containerReference)
|
||||||
|
|
|
@ -0,0 +1,57 @@
|
||||||
|
//go:build WITHOUT_DOCKER || !(linux || darwin || windows)
|
||||||
|
|
||||||
|
package container
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"runtime"
|
||||||
|
|
||||||
|
"github.com/docker/docker/api/types"
|
||||||
|
"github.com/nektos/act/pkg/common"
|
||||||
|
"github.com/pkg/errors"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ImageExistsLocally returns a boolean indicating if an image with the
|
||||||
|
// requested name, tag and architecture exists in the local docker image store
|
||||||
|
func ImageExistsLocally(ctx context.Context, imageName string, platform string) (bool, error) {
|
||||||
|
return false, errors.New("Unsupported Operation")
|
||||||
|
}
|
||||||
|
|
||||||
|
// RemoveImage removes image from local store, the function is used to run different
|
||||||
|
// container image architectures
|
||||||
|
func RemoveImage(ctx context.Context, imageName string, force bool, pruneChildren bool) (bool, error) {
|
||||||
|
return false, errors.New("Unsupported Operation")
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewDockerBuildExecutor function to create a run executor for the container
|
||||||
|
func NewDockerBuildExecutor(input NewDockerBuildExecutorInput) common.Executor {
|
||||||
|
return func(ctx context.Context) error {
|
||||||
|
return errors.New("Unsupported Operation")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewDockerPullExecutor function to create a run executor for the container
|
||||||
|
func NewDockerPullExecutor(input NewDockerPullExecutorInput) common.Executor {
|
||||||
|
return func(ctx context.Context) error {
|
||||||
|
return errors.New("Unsupported Operation")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewContainer creates a reference to a container
|
||||||
|
func NewContainer(input *NewContainerInput) ExecutionsEnvironment {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func RunnerArch(ctx context.Context) string {
|
||||||
|
return runtime.GOOS
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetHostInfo(ctx context.Context) (info types.Info, err error) {
|
||||||
|
return types.Info{}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewDockerVolumeRemoveExecutor(volume string, force bool) common.Executor {
|
||||||
|
return func(ctx context.Context) error {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,3 +1,5 @@
|
||||||
|
//go:build !(WITHOUT_DOCKER || !(linux || darwin || windows))
|
||||||
|
|
||||||
package container
|
package container
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
|
Loading…
Reference in New Issue