diff --git a/contrib/Dockerfile.test b/contrib/Dockerfile.test new file mode 100644 index 000000000..e8e2fe1f7 --- /dev/null +++ b/contrib/Dockerfile.test @@ -0,0 +1,31 @@ +# This dockerfile is used to test containerd within a container +# +# usage: +# 1.) docker build -t containerd-test -f Dockerfile.test ../ +# 2.) docker run -it --privileged -v /tmp:/tmp --tmpfs /var/lib/containerd-test containerd-test bash +# 3.) $ make binaries install test +# + +# Install proto3 +FROM golang:1.9.3 AS proto3 +RUN apt-get update && apt-get install -y autoconf automake g++ libtool unzip +COPY script/setup/install-protobuf install-protobuf +RUN ./install-protobuf + +# Install runc +FROM golang:1.9.3 AS runc +RUN apt-get update && apt-get install -y curl libapparmor-dev libseccomp-dev +COPY vendor.conf /go/src/github.com/containerd/containerd/vendor.conf +COPY script/setup/install-runc install-runc +RUN ./install-runc + +FROM golang:1.9.3 +RUN apt-get update && apt-get install -y btrfs-tools gcc git libapparmor-dev libseccomp-dev make xfsprogs + +COPY --from=proto3 /usr/local/bin/protoc /usr/local/bin/protoc +COPY --from=proto3 /usr/local/include/google /usr/local/include/google + +COPY --from=runc /usr/local/sbin/runc /usr/local/go/bin/runc +COPY . /go/src/github.com/containerd/containerd + +WORKDIR /go/src/github.com/containerd/containerd diff --git a/fs/dtype_linux_test.go b/fs/dtype_linux_test.go index 23e796f0a..b702e3101 100644 --- a/fs/dtype_linux_test.go +++ b/fs/dtype_linux_test.go @@ -20,7 +20,7 @@ func testSupportsDType(t *testing.T, expected bool, mkfs ...string) { } defer os.RemoveAll(mnt) - deviceName, cleanupDevice, err := testutil.NewLoopback(100 << 20) // 100 MB + deviceName, cleanupDevice, err := testutil.NewLoopback(150 << 20) // 150 MB if err != nil { t.Fatal(err) } diff --git a/mount/lookup_test/lookup_linux_test.go b/mount/lookup_test/lookup_linux_test.go index 852053369..9ce14bfbb 100644 --- a/mount/lookup_test/lookup_linux_test.go +++ b/mount/lookup_test/lookup_linux_test.go @@ -39,7 +39,7 @@ func testLookup(t *testing.T, fsType string) { } defer os.RemoveAll(mnt) - deviceName, cleanupDevice, err := testutil.NewLoopback(100 << 20) // 100 MB + deviceName, cleanupDevice, err := testutil.NewLoopback(150 << 20) // 150 MB if err != nil { t.Fatal(err) } diff --git a/script/setup/install-protobuf b/script/setup/install-protobuf new file mode 100755 index 000000000..9e0413b13 --- /dev/null +++ b/script/setup/install-protobuf @@ -0,0 +1,40 @@ +#!/usr/bin/env bash +# +# Downloads and installs protobuf +# +set -eux -o pipefail + +PROTOBUF_VERSION=3.5.1 +GOARCH=$(go env GOARCH) +GOOS=$(go env GOOS) +PROTOBUF_DIR=$(mktemp -d) + +case $GOARCH in + +arm64) + wget -O $PROTOBUF_DIR/protobuf "https://github.com/google/protobuf/releases/download/v$PROTOBUF_VERSION/protoc-$PROTOBUF_VERSION-linux-aarch64.zip" + unzip $PROTOBUF_DIR/protobuf -d /usr/local + ;; + +amd64|386) + if [ $GOOS == "windows" ]; then + wget -O $PROTOBUF_DIR/protobuf "https://github.com/google/protobuf/releases/download/v$PROTOBUF_VERSION/protoc-$PROTOBUF_VERSION-win32.zip" + elif [ $GOOS == "linux" ]; then + wget -O $PROTOBUF_DIR/protobuf "https://github.com/google/protobuf/releases/download/v$PROTOBUF_VERSION/protoc-$PROTOBUF_VERSION-linux-x86_64.zip" + fi + unzip $PROTOBUF_DIR/protobuf -d /usr/local + ;; + +*) + wget -O $PROTOBUF_DIR/protobuf "https://github.com/google/protobuf/releases/download/v$PROTOBUF_VERSION/protobuf-cpp-$PROTOBUF_VERSION.zip" + unzip $PROTOBUF_DIR/protobuf -d /usr/src/protobuf + cd /usr/src/protobuf/protobuf-$PROTOBUF_VERSION + ./autogen.sh + ./configure --disable-shared + make + make check + make install + ldconfig + ;; +esac +rm -rf $PROTOBUF_DIR diff --git a/script/setup/install-runc b/script/setup/install-runc new file mode 100755 index 000000000..9c4eb5efd --- /dev/null +++ b/script/setup/install-runc @@ -0,0 +1,13 @@ +#!/usr/bin/env bash +# +# Builds and installs runc to /usr/local/go/bin based off +# the commit defined in vendor.conf +# +set -eux -o pipefail + +RUNC_COMMIT=$(grep opencontainers/runc ${GOPATH}/src/github.com/containerd/containerd/vendor.conf | cut -d " " -f 2) + +go get -u github.com/opencontainers/runc +cd $GOPATH/src/github.com/opencontainers/runc +git checkout $RUNC_COMMIT +make BUILDTAGS="apparmor seccomp" runc install diff --git a/snapshots/btrfs/btrfs_test.go b/snapshots/btrfs/btrfs_test.go index 6d3b44238..25954b23a 100644 --- a/snapshots/btrfs/btrfs_test.go +++ b/snapshots/btrfs/btrfs_test.go @@ -29,7 +29,7 @@ func boltSnapshotter(t *testing.T) func(context.Context, string) (snapshots.Snap return func(ctx context.Context, root string) (snapshots.Snapshotter, func() error, error) { - deviceName, cleanupDevice, err := testutil.NewLoopback(100 << 20) // 100 MB + deviceName, cleanupDevice, err := testutil.NewLoopback(150 << 20) // 150 MB if err != nil { return nil, nil, err }