diff --git a/.ci/run.sh b/.ci/run.sh new file mode 100755 index 000000000..57448a434 --- /dev/null +++ b/.ci/run.sh @@ -0,0 +1,15 @@ +#!/bin/bash +# +# Copyright (c) 2018 Intel Corporation +# +# SPDX-License-Identifier: Apache-2.0 +# + + +set -e + +export GOPATH="${GOPATH:-/tmp/go}" + +script_dir="$(dirname $(readlink -f $0))" + +sudo -E PATH="$PATH" bats "${script_dir}/../tests/image_creation.bats" diff --git a/.ci/setup.sh b/.ci/setup.sh new file mode 100755 index 000000000..ec9b2fd97 --- /dev/null +++ b/.ci/setup.sh @@ -0,0 +1,20 @@ +#!/bin/bash +# +# Copyright (c) 2018 Intel Corporation +# +# SPDX-License-Identifier: Apache-2.0 +# + +#Note: If add clearlinux as supported CI use a stateless os-release file +source /etc/os-release + +if [ "$ID" == fedora ];then + sudo -E dnf -y install automake bats +elif [ "$ID" == ubuntu ];then + #bats isn't available for Ubuntu trusty, need for travis + sudo add-apt-repository -y ppa:duggan/bats + sudo apt-get -qq update + sudo apt-get install -y -qq automake bats qemu-utils +else + echo "Linux distribution not supported" +fi diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 000000000..b81698ebe --- /dev/null +++ b/.travis.yml @@ -0,0 +1,19 @@ +# +# Copyright (c) 2018 Intel Corporation +# +# SPDX-License-Identifier: Apache-2.0 +# + +sudo: required +dist: trusty + +language: bash + +services: + - docker + +before_script: + - ".ci/setup.sh" + +script: +- ".ci/run.sh" diff --git a/tests/image_creation.bats b/tests/image_creation.bats new file mode 100644 index 000000000..b6e38104a --- /dev/null +++ b/tests/image_creation.bats @@ -0,0 +1,49 @@ +#!/usr/bin/env bats +# +# Copyright (c) 2018 Intel Corporation +# +# SPDX-License-Identifier: Apache-2.0 + + +rootfs_sh="$BATS_TEST_DIRNAME/../rootfs-builder/rootfs.sh" +image_builder_sh="$BATS_TEST_DIRNAME/../image-builder/image_builder.sh" +readonly tmp_dir=$(mktemp -t -d osbuilder-test.XXXXXXX) +#FIXME: Remove image size after https://github.com/kata-containers/osbuilder/issues/25 is fixed +readonly image_size=400 + + +setup() +{ + export USE_DOCKER=true +} + +teardown(){ + # Rootfs is own by root change it to remove it + sudo rm -rf "${tmp_dir}/rootfs-osbuilder" + rm -rf "${tmp_dir}" +} + +function build_image() +{ + distro="$1" + [ -n "$distro" ] + local rootfs="${tmp_dir}/rootfs-osbuilder" + sudo -E ${rootfs_sh} -r "${rootfs}" fedora + sudo ${image_builder_sh} -s ${image_size} -o "${tmp_dir}/image.img" "${rootfs}" +} + +@test "Can create fedora image" { + build_image fedora +} + +@test "Can create clearlinux image" { + build_image clearlinux +} + +@test "Can create centos image" { + build_image centos +} + +@test "Can create euleros image" { + build_image euleros +}