mirror of
https://github.com/genuinetools/reg.git
synced 2024-05-20 03:58:32 -04:00
fix docker in docker tests
Signed-off-by: Jess Frazelle <acidburn@google.com>
This commit is contained in:
parent
aa124e3ecb
commit
5f516001b0
|
@ -2,4 +2,22 @@ FROM golang:alpine
|
|||
|
||||
RUN apk add --no-cache \
|
||||
build-base \
|
||||
ca-certificates \
|
||||
git
|
||||
|
||||
ENV DOCKER_BUCKET get.docker.com
|
||||
ENV DOCKER_VERSION 1.11.1
|
||||
ENV DOCKER_SHA256 893e3c6e89c0cd2c5f1e51ea41bc2dd97f5e791fcfa3cee28445df277836339d
|
||||
|
||||
RUN set -x \
|
||||
&& apk add --no-cache --virtual .build-deps \
|
||||
curl \
|
||||
&& curl -fSL "https://${DOCKER_BUCKET}/builds/Linux/x86_64/docker-$DOCKER_VERSION.tgz" -o docker.tgz \
|
||||
&& echo "${DOCKER_SHA256} *docker.tgz" | sha256sum -c - \
|
||||
&& tar -xzvf docker.tgz \
|
||||
&& mv docker/docker /usr/local/bin/ \
|
||||
&& rm -rf docker \
|
||||
&& rm docker.tgz \
|
||||
&& docker -v \
|
||||
&& apk del .build-deps
|
||||
|
||||
|
|
57
main_test.go
57
main_test.go
|
@ -14,8 +14,24 @@ import (
|
|||
)
|
||||
|
||||
var (
|
||||
exeSuffix string // ".exe" on Windows
|
||||
registryAddr string
|
||||
exeSuffix string // ".exe" on Windows
|
||||
|
||||
registryConfigs = []struct {
|
||||
config string
|
||||
username string
|
||||
password string
|
||||
}{
|
||||
{
|
||||
config: "noauth.yml",
|
||||
username: "blah",
|
||||
password: "blah",
|
||||
},
|
||||
{
|
||||
config: "basicauth.yml",
|
||||
username: "admin",
|
||||
password: "testing",
|
||||
},
|
||||
}
|
||||
)
|
||||
|
||||
func init() {
|
||||
|
@ -37,6 +53,8 @@ func TestMain(m *testing.M) {
|
|||
fmt.Fprintf(os.Stderr, "building testreg failed: %v\n%s", err, out)
|
||||
os.Exit(2)
|
||||
}
|
||||
// remove test binary
|
||||
defer os.Remove("testreg" + exeSuffix)
|
||||
|
||||
// create the docker client
|
||||
dcli, err := client.NewEnvClient()
|
||||
|
@ -44,26 +62,29 @@ func TestMain(m *testing.M) {
|
|||
panic(fmt.Errorf("could not connect to docker: %v", err))
|
||||
}
|
||||
|
||||
// start registry
|
||||
regID, addr, err := testutils.StartRegistry(dcli, "basicauth.yml", "admin", "testing")
|
||||
if err != nil {
|
||||
testutils.RemoveContainer(dcli, regID)
|
||||
panic(fmt.Errorf("starting registry container failed: %v", err))
|
||||
}
|
||||
registryAddr = addr
|
||||
for _, regConfig := range registryConfigs {
|
||||
// start each registry
|
||||
regID, _, err := testutils.StartRegistry(dcli, regConfig.config, regConfig.username, regConfig.password)
|
||||
if err != nil {
|
||||
testutils.RemoveContainer(dcli, regID)
|
||||
panic(fmt.Errorf("starting registry container %s failed: %v", regConfig.config, err))
|
||||
}
|
||||
|
||||
flag.Parse()
|
||||
merr := m.Run()
|
||||
flag.Parse()
|
||||
merr := m.Run()
|
||||
|
||||
// remove registry
|
||||
if err := testutils.RemoveContainer(dcli, regID); err != nil {
|
||||
log.Printf("couldn't remove registry container: %v", err)
|
||||
// remove registry
|
||||
if err := testutils.RemoveContainer(dcli, regID); err != nil {
|
||||
log.Printf("couldn't remove registry container %s: %v", regConfig.config, err)
|
||||
}
|
||||
|
||||
if merr != 0 {
|
||||
fmt.Printf("testing config %s failed\n", regConfig.config)
|
||||
os.Exit(merr)
|
||||
}
|
||||
}
|
||||
|
||||
// remove test binary
|
||||
os.Remove("testreg" + exeSuffix)
|
||||
|
||||
os.Exit(merr)
|
||||
os.Exit(0)
|
||||
}
|
||||
|
||||
func run(args ...string) (string, error) {
|
||||
|
|
|
@ -15,6 +15,7 @@ import (
|
|||
"os/exec"
|
||||
"path/filepath"
|
||||
"runtime"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/docker/docker/api/types"
|
||||
|
@ -93,10 +94,10 @@ func RemoveContainer(dcli *client.Client, ctrID string) error {
|
|||
|
||||
// dockerLogin logins via the command line to a docker registry
|
||||
func dockerLogin(addr, username, password string) error {
|
||||
cmd := exec.Command("docker", "login", addr, "--username", username, "--password", password)
|
||||
cmd := exec.Command("docker", "login", "--username", username, "--password", password, addr)
|
||||
out, err := cmd.CombinedOutput()
|
||||
if err != nil {
|
||||
return fmt.Errorf("docker login failed with output %q and error: %v", string(out), err)
|
||||
return fmt.Errorf("docker login [%s] failed with output %q and error: %v", strings.Join(cmd.Args, " "), string(out), err)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue