diff --git a/.travis.scripts/install_deps.sh b/.travis.scripts/install_deps.sh new file mode 100755 index 0000000..ae0cd24 --- /dev/null +++ b/.travis.scripts/install_deps.sh @@ -0,0 +1,24 @@ +#!/bin/bash + +set -o errexit +set -o verbose + +scriptdir=`dirname "${0}"` + +source /opt/ros/${ROS_DISTRO}/setup.bash +source /catkin_ws/devel/setup.bash + +cd /catkin_ws + +SKIP_KEYS= +if [ -f $scriptdir/rosdepkeys.skip ]; +then + SKIP_KEYS="--skip-keys=\"$(cat $scriptdir/rosdepkeys.skip | tr '\n' ' ' | sed 's/\s*$//g')\"" +fi + +echo $SKIP_KEYS + +apt-get -qq update +eval rosdep install --from-paths src --ignore-src $SKIP_KEYS --rosdistro=${ROS_DISTRO} -y +apt-get clean +rm -rf /var/lib/apt/lists/* diff --git a/.travis.scripts/load_cache.sh b/.travis.scripts/load_cache.sh index f2bc21c..4024e5b 100755 --- a/.travis.scripts/load_cache.sh +++ b/.travis.scripts/load_cache.sh @@ -3,12 +3,4 @@ set -o errexit set -o verbose -sudo apt-get -qq update -sudo apt-get install -y liblz4-tool - -echo ${DOCKER_CACHE_FILE} - -if [ -f ${DOCKER_CACHE_FILE} ]; then - lz4 -dc ${DOCKER_CACHE_FILE} | docker load || true -fi - +docker pull ${DOCKER_CACHE_REGISTRY}:${ROS_DISTRO_TARGET} || true diff --git a/.travis.scripts/rosdepkeys.skip b/.travis.scripts/rosdepkeys.skip new file mode 100644 index 0000000..f1f1b3f --- /dev/null +++ b/.travis.scripts/rosdepkeys.skip @@ -0,0 +1,3 @@ +ypspur +ros-kinetic-ypspur +ros-indigo-ypspur diff --git a/.travis.scripts/save_cache.sh b/.travis.scripts/save_cache.sh index d413ceb..1e46fd4 100755 --- a/.travis.scripts/save_cache.sh +++ b/.travis.scripts/save_cache.sh @@ -5,11 +5,7 @@ set -o verbose if [[ ${TRAVIS_BRANCH} == "master" ]] && [[ ${TRAVIS_PULL_REQUEST} == "false" ]]; then - mkdir -p $(dirname ${DOCKER_CACHE_FILE}) - docker save $(echo ${DOCKER_CACHE_TARGETS} | xargs -n1 docker history -q | grep -v '' | sort | uniq) | lz4 -zcf - > ${DOCKER_CACHE_FILE} - - echo "------------" - ls -lh $(dirname ${DOCKER_CACHE_FILE}) - echo "------------" + docker tag ${DOCKER_CACHE_TARGET}:${ROS_DISTRO_TARGET} ${DOCKER_CACHE_REGISTRY}:${ROS_DISTRO_TARGET} + docker login -u ${DOCKER_HUB_USER} -p ${DOCKER_HUB_TOKEN} + docker push ${DOCKER_CACHE_REGISTRY}:${ROS_DISTRO_TARGET} fi - diff --git a/.travis.scripts/setup_docker.sh b/.travis.scripts/setup_docker.sh deleted file mode 100755 index c04ca6c..0000000 --- a/.travis.scripts/setup_docker.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash - -set -o errexit -set -o verbose - -echo 'DOCKER_OPTS="-H tcp://127.0.0.1:2375 -H unix:///var/run/docker.sock -s overlay2"' \ - | sudo tee /etc/default/docker > /dev/null -sudo service docker restart - -sleep 5 -docker info - diff --git a/.travis.scripts/test.sh b/.travis.scripts/test.sh index e9ca528..228f43c 100755 --- a/.travis.scripts/test.sh +++ b/.travis.scripts/test.sh @@ -5,8 +5,7 @@ set -o verbose scriptdir=`dirname "${0}"` -wget -q -P /tmp https://raw.githubusercontent.com/at-wat/gh-pr-comment/master/gh-pr-comment.sh -source /tmp/gh-pr-comment.sh +pip install gh-pr-comment source /opt/ros/${ROS_DISTRO}/setup.bash @@ -25,10 +24,10 @@ fi echo $SKIP_KEYS -apt-get -qq update && \ -apt-get install libxml2-utils && \ -rosdep install --from-paths src --ignore-src $SKIP_KEYS --rosdistro=${ROS_DISTRO} -y && \ -apt-get clean && \ +apt-get -qq update +apt-get install libxml2-utils +eval rosdep install --from-paths src --ignore-src $SKIP_KEYS --rosdistro=${ROS_DISTRO} -y +apt-get clean rm -rf /var/lib/apt/lists/* CMI_OPTION="--install-space /opt/ros/${ROS_DISTRO} --install" @@ -62,4 +61,3 @@ gh-pr-comment "PASSED on ${ROS_DISTRO}" "All tests passed$result_text" cd .. rm -rf /catkin_ws || true - diff --git a/.travis.yml b/.travis.yml index 9925a67..52695b9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,20 +7,21 @@ cache: env: global: - PACKAGE_NAME=ypspur_ros - - DOCKER_CACHE_FILE=/home/travis/docker/cache.tar.lz4 - - DOCKER_CACHE_TARGETS="${PACKAGE_NAME}:latest ${PACKAGE_NAME}:indigo" + - DOCKER_CACHE_TARGET=ypspurros + - DOCKER_CACHE_REGISTRY=atwat/ros-ypspurros-cache + matrix: + - ROS_DISTRO_TARGET=kinetic + - ROS_DISTRO_TARGET=indigo branches: only: - master before_install: - - .travis.scripts/setup_docker.sh - .travis.scripts/load_cache.sh install: true script: - - docker build -t ${PACKAGE_NAME}:latest --pull=true ${TRAVIS_BUILD_DIR} --build-arg TRAVIS_PULL_REQUEST=${TRAVIS_PULL_REQUEST} --build-arg TRAVIS_REPO_SLUG=${TRAVIS_REPO_SLUG} --build-arg TRAVIS_BOT_GITHUB_TOKEN=${TRAVIS_BOT_GITHUB_TOKEN} --build-arg PACKAGE_NAME=${PACKAGE_NAME} - - docker build -t ${PACKAGE_NAME}:indigo -f Dockerfile.indigo --pull=true ${TRAVIS_BUILD_DIR} --build-arg TRAVIS_PULL_REQUEST=${TRAVIS_PULL_REQUEST} --build-arg TRAVIS_REPO_SLUG=${TRAVIS_REPO_SLUG} --build-arg TRAVIS_BOT_GITHUB_TOKEN=${TRAVIS_BOT_GITHUB_TOKEN} --build-arg PACKAGE_NAME=${PACKAGE_NAME} + - docker build --cache-from ${DOCKER_CACHE_REGISTRY}:${ROS_DISTRO_TARGET} -t ${DOCKER_CACHE_TARGET}:${ROS_DISTRO_TARGET} -f Dockerfile.${ROS_DISTRO_TARGET} --pull=true ${TRAVIS_BUILD_DIR} + - docker run --rm -it -e TRAVIS_PULL_REQUEST=${TRAVIS_PULL_REQUEST} -e TRAVIS_PULL_REQUEST_SLUG=${TRAVIS_PULL_REQUEST_SLUG} -e TRAVIS_BOT_GITHUB_TOKEN=${TRAVIS_BOT_GITHUB_TOKEN} -e PACKAGE_NAME=${PACKAGE_NAME} ${DOCKER_CACHE_TARGET}:${ROS_DISTRO_TARGET} /catkin_ws/src/${PACKAGE_NAME}/.travis.scripts/test.sh - .travis.scripts/save_cache.sh - diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index 8d59fae..0000000 --- a/Dockerfile +++ /dev/null @@ -1,19 +0,0 @@ -FROM ros:kinetic - -RUN apt-get -qq update && \ - apt-get install -y --no-install-recommends sudo wget curl && \ - apt-get clean && \ - rm -rf /var/lib/apt/lists/* - -ARG TRAVIS_PULL_REQUEST=false -ARG TRAVIS_REPO_SLUG="" -ARG TRAVIS_BOT_GITHUB_TOKEN="" -ARG PACKAGE_NAME="" - -ENV TRAVIS_PULL_REQUEST=$TRAVIS_PULL_REQUEST -ENV TRAVIS_REPO_SLUG=$TRAVIS_REPO_SLUG -ENV TRAVIS_BOT_GITHUB_TOKEN=$TRAVIS_BOT_GITHUB_TOKEN -ENV PACKAGE_NAME=$PACKAGE_NAME - -COPY ./ /catkin_ws/src/${PACKAGE_NAME} -RUN /catkin_ws/src/${PACKAGE_NAME}/.travis.scripts/test.sh diff --git a/Dockerfile.indigo b/Dockerfile.indigo index a506d82..a2ccb17 100644 --- a/Dockerfile.indigo +++ b/Dockerfile.indigo @@ -1,19 +1,22 @@ FROM ros:indigo -RUN apt-get -qq update && \ - apt-get install -y --no-install-recommends sudo wget curl build-essential && \ - apt-get clean && \ - rm -rf /var/lib/apt/lists/* +RUN apt-get -qq update \ + && apt-get install -y --no-install-recommends \ + build-essential \ + curl \ + python-pip \ + sudo \ + wget \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* -ARG TRAVIS_PULL_REQUEST=false -ARG TRAVIS_REPO_SLUG="" -ARG TRAVIS_BOT_GITHUB_TOKEN="" -ARG PACKAGE_NAME="" +RUN rosdep update \ + && mkdir -p /catkin_ws/src \ + && cd /catkin_ws/src \ + && bash -c ". /opt/ros/${ROS_DISTRO}/setup.bash && catkin_init_workspace && cd .. && catkin_make" -ENV TRAVIS_PULL_REQUEST=$TRAVIS_PULL_REQUEST -ENV TRAVIS_REPO_SLUG=$TRAVIS_REPO_SLUG -ENV TRAVIS_BOT_GITHUB_TOKEN=$TRAVIS_BOT_GITHUB_TOKEN -ENV PACKAGE_NAME=$PACKAGE_NAME +COPY ./.travis.scripts /catkin_ws/src/ypspur_ros/.travis.scripts +COPY ./package.xml /catkin_ws/src/ypspur_ros/package.xml +RUN /catkin_ws/src/ypspur_ros/.travis.scripts/install_deps.sh -COPY ./ /catkin_ws/src/${PACKAGE_NAME} -RUN /catkin_ws/src/${PACKAGE_NAME}/.travis.scripts/test.sh +COPY ./ /catkin_ws/src/ypspur_ros diff --git a/Dockerfile.kinetic b/Dockerfile.kinetic new file mode 100644 index 0000000..308fdaa --- /dev/null +++ b/Dockerfile.kinetic @@ -0,0 +1,21 @@ +FROM ros:kinetic + +RUN apt-get -qq update \ + && apt-get install -y --no-install-recommends \ + curl \ + python-pip \ + sudo \ + wget \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* + +RUN rosdep update \ + && mkdir -p /catkin_ws/src \ + && cd /catkin_ws/src \ + && bash -c ". /opt/ros/${ROS_DISTRO}/setup.bash && catkin_init_workspace && cd .. && catkin_make" + +COPY ./.travis.scripts /catkin_ws/src/ypspur_ros/.travis.scripts +COPY ./package.xml /catkin_ws/src/ypspur_ros/package.xml +RUN /catkin_ws/src/ypspur_ros/.travis.scripts/install_deps.sh + +COPY ./ /catkin_ws/src/ypspur_ros