From 78970a5ca1378714519cf135ead57f5f30294e99 Mon Sep 17 00:00:00 2001 From: Plamen Petrov Date: Thu, 12 Nov 2020 15:00:16 +0200 Subject: [PATCH] cri in travis Signed-off-by: Plamen Petrov --- .travis.yml | 9 +-- Makefile | 3 + cri/Makefile | 9 +++ scripts/cri/full.sh | 2 +- scripts/travis/full.sh | 140 +++++++++++++++++++++++++++++++++++++++++ 5 files changed, 158 insertions(+), 5 deletions(-) create mode 100644 cri/Makefile create mode 100755 scripts/travis/full.sh diff --git a/.travis.yml b/.travis.yml index f97a545d1..fc542495e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -11,12 +11,13 @@ env: - GO111MODULE=on - GOPRIVATE=github.com/ustiugov/fccd-orchestrator jobs: - - TEST=test-subdirs - - TEST=test - - TEST=test-man-bench + - TEST=test-cri + #- TEST=test-subdirs + #- TEST=test + #- TEST=test-man-bench before_script: - curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin v1.25.0 - - source ./scripts/setup_ctrd.sh + - source ./scripts/travis/full.sh script: - go build ./... diff --git a/Makefile b/Makefile index 3cb426f87..cae330a2a 100644 --- a/Makefile +++ b/Makefile @@ -96,4 +96,7 @@ $(SUBDIRS): test-subdirs: $(SUBDIRS) +test-cri: + $(MAKE) -C cri test + .PHONY: test-orch $(SUBDIRS) test-subdirs diff --git a/cri/Makefile b/cri/Makefile new file mode 100644 index 000000000..0ecdb6321 --- /dev/null +++ b/cri/Makefile @@ -0,0 +1,9 @@ +EXTRAGOARGS:=-v -race -cover + +test: + sudo env "PATH=$(PATH)" go test ./ $(EXTRAGOARGS) + +test-man: + echo "Nothing to test manually" + +.PHONY: test test-man diff --git a/scripts/cri/full.sh b/scripts/cri/full.sh index f0e15257b..e226f8362 100755 --- a/scripts/cri/full.sh +++ b/scripts/cri/full.sh @@ -7,7 +7,7 @@ apt-get install -y btrfs-tools pkg-config libseccomp-dev unzip tar libseccomp2 s pushd $DIR git lfs pull -pop +popd wget -c https://github.com/google/protobuf/releases/download/v3.11.4/protoc-3.11.4-linux-x86_64.zip sudo unzip protoc-3.11.4-linux-x86_64.zip -d /usr/local diff --git a/scripts/travis/full.sh b/scripts/travis/full.sh new file mode 100755 index 000000000..fe8fdbd01 --- /dev/null +++ b/scripts/travis/full.sh @@ -0,0 +1,140 @@ +#!/bin/bash +sudo apt-get update 1>/dev/null + +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" + +sudo apt-get install -y btrfs-tools pkg-config libseccomp-dev unzip tar libseccomp2 socat util-linux apt-transport-https curl ipvsadm git-lfs 1>/dev/null + +pushd $DIR +git lfs pull 1>/dev/null +popd + +wget -c https://github.com/google/protobuf/releases/download/v3.11.4/protoc-3.11.4-linux-x86_64.zip 1>/dev/null +sudo unzip protoc-3.11.4-linux-x86_64.zip -d /usr/local 1>/dev/null + + +export KUBECONFIG=/etc/kubernetes/admin.conf +echo 'export KUBECONFIG=/etc/kubernetes/admin.conf' >> /etc/profile + +# Build and install runc and containerd +GOGITHUB=${HOME}/go/src/github.com/ +RUNC_ROOT=${GOGITHUB}/opencontainers/runc +CONTAINERD_ROOT=${GOGITHUB}/containerd/containerd +mkdir -p $RUNC_ROOT +mkdir -p $CONTAINERD_ROOT + +git clone https://github.com/opencontainers/runc.git $RUNC_ROOT 1>/dev/null +git clone -b cri_logging https://github.com/plamenmpetrov/containerd.git $CONTAINERD_ROOT 1>/dev/null + +cd $RUNC_ROOT +sudo make && sudo make install 1>/dev/null + +cd $CONTAINERD_ROOT +sudo make && sudo make install 1>/dev/null + +containerd --version || echo "failed to build containerd" + + +# Install k8s +curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add - +echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" > /etc/apt/sources.list.d/kubernetes.list 1>/dev/null +sudo apt install -y cri-tools ebtables ethtool kubeadm kubectl kubelet kubernetes-cni 1>/dev/null + + +# Install knative CLI +git clone https://github.com/knative/client.git $HOME/client 1>/dev/null +cd $HOME/client +sudo hack/build.sh -f 1>/dev/null +sudo mv kn /usr/local/bin + + +# Necessary for containerd as container runtime but not docker +sudo modprobe overlay +sudo modprobe br_netfilter + +# Set up required sysctl params, these persist across reboots. +cat </dev/null + +mkdir -p /etc/firecracker-containerd + +sudo tee /etc/firecracker-containerd/config.toml </dev/null + +BINS=../../bin/ +DST=/usr/local/bin + +pushd $BINS + +cp firecracker $DST +cp jailer $DST +cp containerd-shim-aws-firecracker $DST +cp firecracker-containerd $DST +cp firecracker-ctr $DST +cp default-rootfs.img /var/lib/firecracker-containerd/runtime/ + +popd + +sudo env PATH=$PATH containerd 1>/dev/null 2>/dev/null & +sudo PATH=$PATH /usr/local/bin/firecracker-containerd --config /etc/firecracker-containerd/config.toml 1>/dev/null 2>/dev/null & + +cd $DIR + +cd ../../../ +go build ./... + +cd $DIR +./../../fccd-orchestrator & + +./../cri/create_kubeadm_cluster.sh + +sleep 2m + +sudo env PATH=$PATH kubectl apply -f ../../knative_workloads/helloworld.yaml +sudo env PATH=$PATH kubectl apply -f ../../knative_workloads/pyaes.yaml +sudo env PATH=$PATH kubectl apply -f ../../knative_workloads/rnn_serving.yaml +