You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
boundary/e2e/docker.go

109 lines
2.0 KiB

// +build integration
package e2e
import (
"bufio"
"fmt"
"os/exec"
"strings"
)
const dockerContainerName = "test"
var dockerTag = "boundary"
func build() error {
p, err := rootPath()
if err != nil {
return err
}
rev, err := rev()
if err != nil {
return err
}
dockerTag = dockerTag + ":" + rev
cmdStr := fmt.Sprintf("docker build -t %s -f %s/Dockerfile %s/", dockerTag, p, p)
fmt.Printf("building boundary ... %s", cmdStr)
cmd := exec.Command("/bin/sh", "-c", cmdStr)
pipe, _ := cmd.StdoutPipe()
if err := cmd.Start(); err != nil {
return err
}
reader := bufio.NewReader(pipe)
line, err := reader.ReadString('\n')
for err == nil {
fmt.Println(line)
line, err = reader.ReadString('\n')
}
cmd.Wait()
return nil
}
func copyToHost() error {
p, err := rootPath()
if err != nil {
return err
}
cmd := []string{"cp", "test:/go/bin/boundary", fmt.Sprintf("%s/bin/boundary", p)}
fmt.Printf("copying binary from docker to host: %v\n", cmd)
r, err := exec.Command("docker", cmd...).CombinedOutput()
if len(r) != 0 {
fmt.Printf("result: %s\n", r)
}
return err
}
func createContainer() error {
cmd := []string{"create", "-it", "--name", dockerContainerName, dockerTag}
fmt.Printf("creating container for copy operation: %v\n", cmd)
r, err := exec.Command("docker", cmd...).CombinedOutput()
if len(r) != 0 {
fmt.Printf("result: %s\n", r)
}
return err
}
func removeContainer() error {
cmd := []string{"container", "rm", dockerContainerName}
fmt.Printf("removing container: %v\n", cmd)
r, err := exec.Command("docker", cmd...).CombinedOutput()
if len(r) != 0 {
fmt.Printf("result: %s\n", r)
}
return err
}
func rev() (string, error) {
r, err := exec.Command("git", "rev-parse", "HEAD").Output()
if err != nil {
return "", err
}
return strings.TrimSpace(string(r)), nil
}
func rootPath() (string, error) {
path, err := exec.Command("git", "rev-parse", "--show-toplevel").Output()
if err != nil {
return "", err
}
return strings.TrimSpace(string(path)), nil
}