add buildx plugin to e2e configuration directory

Signed-off-by: Guillaume Lours <705411+glours@users.noreply.github.com>
This commit is contained in:
Guillaume Lours 2022-12-21 15:20:39 +01:00
parent 91371fef7a
commit 935968fe2c
No known key found for this signature in database
1 changed files with 26 additions and 1 deletions

View File

@ -44,9 +44,12 @@ var (
// DockerComposeExecutableName is the OS dependent Docker CLI binary name
DockerComposeExecutableName = "docker-" + compose.PluginName
// DockerScanExecutableName is the OS dependent Docker CLI binary name
// DockerScanExecutableName is the OS dependent Docker Scan plugin binary name
DockerScanExecutableName = "docker-scan"
// DockerBuildxExecutableName is the Os dependent Buildx plugin binary name
DockerBuildxExecutableName = "docker-buildx"
// WindowsExecutableSuffix is the Windows executable suffix
WindowsExecutableSuffix = ".exe"
)
@ -56,6 +59,7 @@ func init() {
DockerExecutableName += WindowsExecutableSuffix
DockerComposeExecutableName += WindowsExecutableSuffix
DockerScanExecutableName += WindowsExecutableSuffix
DockerBuildxExecutableName += WindowsExecutableSuffix
}
}
@ -133,8 +137,13 @@ func initializePlugins(t testing.TB, configDir string) {
if os.IsNotExist(err) {
t.Logf("WARNING: docker-compose cli-plugin not found")
}
buildxPlugin, err := findPluginExecutable(DockerBuildxExecutableName)
if os.IsNotExist(err) {
t.Logf("WARNING: docker-buildx cli-plugin not found")
}
if err == nil {
CopyFile(t, composePlugin, filepath.Join(configDir, "cli-plugins", DockerComposeExecutableName))
CopyFile(t, buildxPlugin, filepath.Join(configDir, "cli-plugins", DockerBuildxExecutableName))
// We don't need a functional scan plugin, but a valid plugin binary
CopyFile(t, composePlugin, filepath.Join(configDir, "cli-plugins", DockerScanExecutableName))
}
@ -166,6 +175,22 @@ func findExecutable(executableName string) (string, error) {
return "", errors.Wrap(os.ErrNotExist, "executable not found")
}
func findPluginExecutable(pluginExecutableName string) (string, error) {
dockerUserDir := ".docker/cli-plugins"
userDir, err := os.UserHomeDir()
if err != nil {
return "", err
}
bin, err := filepath.Abs(filepath.Join(userDir, dockerUserDir, pluginExecutableName))
if err != nil {
return "", err
}
if _, err := os.Stat(bin); err == nil {
return bin, nil
}
return "", errors.Wrap(os.ErrNotExist, fmt.Sprintf("plugin not found %s", pluginExecutableName))
}
// CopyFile copies a file from a sourceFile to a destinationFile setting permissions to 0755
func CopyFile(t testing.TB, sourceFile string, destinationFile string) {
t.Helper()