From e4f80dcc1f7b3dd8f00f9b96844495c9a22fbc11 Mon Sep 17 00:00:00 2001 From: Aitor Martinez Date: Wed, 26 Jul 2017 18:55:07 +0200 Subject: [PATCH 1/2] [issue #884] Updated Dockerfiles --- .../docker/jderobot/dev-only-ice/Dockerfile | 2 + scripts/docker/jderobot/dev-only-ice/testPR | 41 +++++++++++++++++++ scripts/docker/jderobot/dev/Dockerfile | 1 + scripts/docker/jenkins/dev/Dockerfile | 26 ++++++++++++ scripts/docker/jenkins/dev/compile.sh | 29 +++++++++++++ 5 files changed, 99 insertions(+) create mode 100755 scripts/docker/jderobot/dev-only-ice/testPR create mode 100644 scripts/docker/jenkins/dev/Dockerfile create mode 100755 scripts/docker/jenkins/dev/compile.sh diff --git a/scripts/docker/jderobot/dev-only-ice/Dockerfile b/scripts/docker/jderobot/dev-only-ice/Dockerfile index f63e3c1d5..7b74f0048 100644 --- a/scripts/docker/jderobot/dev-only-ice/Dockerfile +++ b/scripts/docker/jderobot/dev-only-ice/Dockerfile @@ -161,8 +161,10 @@ RUN apt update && apt install -q -y \ && rm -rf /var/lib/apt/lists/* +COPY ./testPR /bin/ +WORKDIR /root RUN echo "source /opt/ros/kinetic/setup.bash" >> /root/.bashrc diff --git a/scripts/docker/jderobot/dev-only-ice/testPR b/scripts/docker/jderobot/dev-only-ice/testPR new file mode 100755 index 000000000..f70fb8561 --- /dev/null +++ b/scripts/docker/jderobot/dev-only-ice/testPR @@ -0,0 +1,41 @@ +#!/bin/bash + +function usage { + echo "usage: testPR remote branch directory MakeJobs" + exit +} + + +if [ "$1" == "-h" ]; then + usage +fi + +if (($# < 3)); then + usage +fi + + +local=jderobot +remote=$1 +branch=$2 +directory=$3 +makejob=$4 + +if [ -z "$makejob" ] +then + makejob=1 +fi + + +git clone https://github.com/$local/JdeRobot.git $directory +cd $directory + +git remote add $remote https://github.com/$remote/JdeRobot.git +git fetch $remote +git merge --no-edit $remote/$branch + +mkdir build && cd build + +cmake .. +make install -j$makejob + diff --git a/scripts/docker/jderobot/dev/Dockerfile b/scripts/docker/jderobot/dev/Dockerfile index 397b02d01..582843117 100644 --- a/scripts/docker/jderobot/dev/Dockerfile +++ b/scripts/docker/jderobot/dev/Dockerfile @@ -8,6 +8,7 @@ LABEL manteiner Aitor Martínez Fernández+aitor.martinez.fernandez@gmail.com RUN apt update && apt install -q -y \ ros-kinetic-roscpp ros-kinetic-std-msgs ros-kinetic-cv-bridge ros-kinetic-image-transport \ ros-kinetic-roscpp-core ros-kinetic-rospy ros-kinetic-nav-msgs ros-kinetic-geometry-msgs \ + ros-kinetic-kobuki-gazebo \ && rm -rf /var/lib/apt/lists/* diff --git a/scripts/docker/jenkins/dev/Dockerfile b/scripts/docker/jenkins/dev/Dockerfile new file mode 100644 index 000000000..d61a92ada --- /dev/null +++ b/scripts/docker/jenkins/dev/Dockerfile @@ -0,0 +1,26 @@ +# Own Ubuntu base +FROM jderobot/jderobot:dev + +LABEL manteiner Aitor Martínez Fernández+aitor.martinez.fernandez@gmail.com + + +# install basic packages +RUN apt update && apt install -q -y \ + whois \ + openssh-server \ + openjdk-8-jdk \ + && rm -rf /var/lib/apt/lists/* + +RUN mkdir /var/run/sshd + +RUN useradd -p `mkpasswd jenkins` -d /home/jenkins -m -g users -s /bin/bash jenkins + +RUN echo "source /opt/ros/kinetic/setup.bash" >> /home/jenkins/.bashrc + +RUN /usr/sbin/sshd + +COPY ./compile.sh /bin/ + + + + diff --git a/scripts/docker/jenkins/dev/compile.sh b/scripts/docker/jenkins/dev/compile.sh new file mode 100755 index 000000000..d2a18d425 --- /dev/null +++ b/scripts/docker/jenkins/dev/compile.sh @@ -0,0 +1,29 @@ +#!/bin/bash + +function check_result { + + if [ "$?" != "0" ]; then + echo "Error" + clear + exit -1 + else + echo "OK" + fi +} + +source /opt/ros/kinetic/setup.bash + +mkdir build && cd build +cmake .. $* +check_result + +make -j6 +check_result + +# Package Debian +#cmake . +#cpack . +#check_result + +#sudo chown jenkins -R /jenkins/ws/JdeRobot + From a550aeb69a042f5ba5fd2a25460ab9835f2dc0a4 Mon Sep 17 00:00:00 2001 From: Aitor Martinez Date: Thu, 27 Jul 2017 08:29:38 +0200 Subject: [PATCH 2/2] [issue #884] Added python script to generate all docker containers --- scripts/docker/build_dockers.py | 48 +++++++++++++++++++ scripts/docker/docker_list.yaml | 37 ++++++++++++++ .../docker/jderobot/dev-only-ice/Dockerfile | 2 + 3 files changed, 87 insertions(+) create mode 100644 scripts/docker/build_dockers.py create mode 100644 scripts/docker/docker_list.yaml diff --git a/scripts/docker/build_dockers.py b/scripts/docker/build_dockers.py new file mode 100644 index 000000000..c858c0f0a --- /dev/null +++ b/scripts/docker/build_dockers.py @@ -0,0 +1,48 @@ +import docker +import yaml +import sys + + + + +yamlFile = sys.argv[1] +client = docker.from_env() +images={} + + +## Build Image ## +def build_image(ipath, itag): + try: + client.images.build(pull=True, path=ipath, tag=itag, rm=True, stream=True) + except docker.errors.BuildError as exc: + print(exc) + except docker.errors.APIError as exc: + print (exc) + +## Push Image ## +def push_image(itag): + try: + client.images.push(itag) + except docker.errors.APIError as exc: + print (exc) + + + + +## Open File ## +with open(yamlFile, 'r') as stream: + try: + images=yaml.load(stream) + except yaml.YAMLError as exc: + print(exc) + + +for image in images: + if images[image]["build"]: + build_image(images[image]["path"], images[image]["tag"]) + if images[image]["push"]: + push_image(images[image]["tag"]) + + + + diff --git a/scripts/docker/docker_list.yaml b/scripts/docker/docker_list.yaml new file mode 100644 index 000000000..4648f66cb --- /dev/null +++ b/scripts/docker/docker_list.yaml @@ -0,0 +1,37 @@ +ubuntu_base: + path: ubuntu/xenial/base + tag: "jderobot/ubuntu:base" + build: False + push: False + +official: + path: jderobot/official + tag: "jderobot/jderobot" + build: False + push: False + +###### DEVELOPMENT ####### +dev-only-ice: + path: jderobot/dev-only-ice + tag: "jderobot/jderobot:dev-only-ice" + build: False + push: False + +dev: + path: jderobot/dev + tag: "jderobot/jderobot:dev" + build: False + push: False + +jenkins: + path: jenkins/dev + tag: "jderobot/jenkins:dev" + build: False + push: False + +####### DEMOS ####### +cameraviewjs: + path: jderobot/demos/cameraviewjs + tag: "jderobot/demos:cameraviewjs" + build: False + push: False diff --git a/scripts/docker/jderobot/dev-only-ice/Dockerfile b/scripts/docker/jderobot/dev-only-ice/Dockerfile index 7b74f0048..16c1dd369 100644 --- a/scripts/docker/jderobot/dev-only-ice/Dockerfile +++ b/scripts/docker/jderobot/dev-only-ice/Dockerfile @@ -163,6 +163,8 @@ RUN apt update && apt install -q -y \ COPY ./testPR /bin/ +RUN git config --global user.name "JdeRobot" && git config --global user.email johndoe@example.com + WORKDIR /root