From 8fc3f4bc719edd212c86646c4bb7fa967e86d122 Mon Sep 17 00:00:00 2001 From: Prasanna Bhat Date: Sun, 12 Apr 2020 11:23:22 +0530 Subject: [PATCH] Add build scripts & docker scripts Signed-off-by: Prasanna Bhat --- scripts/build.sh | 15 ++++++ scripts/docker/Dockerfile | 9 ++++ scripts/docker/DockerfileCycloneDds | 8 ++++ scripts/docker/README.md | 7 +++ scripts/docker/build_cyclonedds.sh | 16 +++++++ scripts/docker/build_docker_image.sh | 72 ++++++++++++++++++++++++++++ 6 files changed, 127 insertions(+) create mode 100755 scripts/build.sh create mode 100644 scripts/docker/Dockerfile create mode 100644 scripts/docker/DockerfileCycloneDds create mode 100644 scripts/docker/README.md create mode 100755 scripts/docker/build_cyclonedds.sh create mode 100755 scripts/docker/build_docker_image.sh diff --git a/scripts/build.sh b/scripts/build.sh new file mode 100755 index 0000000..60b0b63 --- /dev/null +++ b/scripts/build.sh @@ -0,0 +1,15 @@ +#!/bin/bash +set -e + +# It is assumed that this script is called from the root of the project +WORKSPACE=$(pwd) +echo "WORKSPACE is $WORKSPACE" + +CYCLONEDDS_INSTALL_PREFIX=$WORKSPACE/build/install/ + +rm -rf build/ +mkdir build +cd build +cmake -DCMAKE_INSTALL_PREFIX=$CYCLONEDDS_INSTALL_PREFIX -DBUILD_IDLC=ON .. +cmake --build . +cmake --build . --target install diff --git a/scripts/docker/Dockerfile b/scripts/docker/Dockerfile new file mode 100644 index 0000000..3c23983 --- /dev/null +++ b/scripts/docker/Dockerfile @@ -0,0 +1,9 @@ +FROM ubuntu:bionic + +# Dependencies required to build cyclonedds +RUN apt update && apt install -y \ + cmake \ + default-jdk \ + maven \ + g++ + diff --git a/scripts/docker/DockerfileCycloneDds b/scripts/docker/DockerfileCycloneDds new file mode 100644 index 0000000..1881c04 --- /dev/null +++ b/scripts/docker/DockerfileCycloneDds @@ -0,0 +1,8 @@ +# Build a docker image with pre-built cyclonedds core & examples +FROM ubuntu:cyclonedds + +ADD . /cyclonedds + +WORKDIR /cyclonedds + +RUN ./scripts/build.sh \ No newline at end of file diff --git a/scripts/docker/README.md b/scripts/docker/README.md new file mode 100644 index 0000000..07aedeb --- /dev/null +++ b/scripts/docker/README.md @@ -0,0 +1,7 @@ +# Overview + +This contains helper scripts (Linux) to +- Build docker image (this contains the dependencies of cyclonedds build & can be used to build cyclonedds) +- Build docker image with pre-built cyclonedds (can be used for quick testing) + + diff --git a/scripts/docker/build_cyclonedds.sh b/scripts/docker/build_cyclonedds.sh new file mode 100755 index 0000000..0130335 --- /dev/null +++ b/scripts/docker/build_cyclonedds.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +set -e + +# It is assumed that this script is run from root of the project +WORKSPACE=$(pwd) +IMAGE_NAME="ubuntu:cyclonedds" +CONTAINER_NAME="cyclonedds" + +echo "WORKSPACE is $WORKSPACE" + +docker run -it --rm -v $WORKSPACE/:/cyclonedds --workdir /cyclonedds $IMAGE_NAME /bin/bash -c "./scripts/build.sh" +# Launch the docker after build +docker run --name $CONTAINER_NAME -it -v $WORKSPACE/:/cyclonedds --workdir /cyclonedds $IMAGE_NAME /bin/bash +# If you want to connect to the above docker to run cyclonedds examples (multiple apps in separate terminals) , use the below command +docker exec -it cyclonedds /bin/bash \ No newline at end of file diff --git a/scripts/docker/build_docker_image.sh b/scripts/docker/build_docker_image.sh new file mode 100755 index 0000000..f0d0a08 --- /dev/null +++ b/scripts/docker/build_docker_image.sh @@ -0,0 +1,72 @@ +#!/bin/bash + +set -e + +BUILD_UBUNTU=false +BUILD_CYCLONEDDS=false + +usage() { + echo "" + echo "Helper script to build docker images for cyclonedds" + echo "Usage : " + echo "/scripts/docker/build_docker_image.sh [images]" + echo "Supported images are " + echo "ubuntu : ubuntu based image to build cyclone dds. Contains dependencies to build cyclonedds." + echo "cyclonedds : pre-built cyclonedds core libs & example applications. Can be quickly used to test cyclonedds apps." + echo "" +} + +parse_args() { + for arg in "$@" + do + case $arg in + -h | --help) + usage + exit 0 + ;; + ubuntu) + BUILD_UBUNTU=true + ;; + cyclonedds) + BUILD_CYCLONEDDS=true + ;; + *) + echo "ERROR : unknown parameter $arg" + usage + exit 1 + ;; + esac + done +} + + + +if [ "$#" -eq 0 ] +then + echo "Supply at least one argument" + echo "Run with -h/--help for usage" + exit 1 +fi +parse_args $@ + + +DOCKERFILE_DIR="$(dirname "$(readlink -fm "$0")")" +WORKSPACE="$(dirname "$(dirname "${DOCKERFILE_DIR}")")" +echo "WORKSPACE is $WORKSPACE" +cd "$WORKSPACE" + +if [ $BUILD_UBUNTU == true ] +then + UBUNTU_IMAGE="ubuntu:cyclonedds" + docker build --file "${DOCKERFILE_DIR}/Dockerfile" . --tag "${UBUNTU_IMAGE}" +fi + +if [ $BUILD_CYCLONEDDS == true ] +then + CYCLONEDDS_IMAGE="cyclonedds:latest" + docker build --file "${DOCKERFILE_DIR}/DockerfileCycloneDds" . --tag "${CYCLONEDDS_IMAGE}" +fi + + + +