diff --git a/.hadolint.yaml b/.hadolint.yaml new file mode 100644 index 00000000..bc95a173 --- /dev/null +++ b/.hadolint.yaml @@ -0,0 +1,6 @@ +--- +ignored: + - DL3007 + - DL3008 + - DL3013 + - DL3018 diff --git a/other/docker/autotools/Dockerfile b/other/docker/autotools/Dockerfile new file mode 100644 index 00000000..9922a62b --- /dev/null +++ b/other/docker/autotools/Dockerfile @@ -0,0 +1,23 @@ +################################################ +# autotools-linux +FROM localbuild/travis:1.0.0 + +USER root +RUN apt-get update && apt-get install --no-install-recommends -y \ + autoconf \ + automake \ + libtool \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* +USER travis + +# Copy minimal files to run "autotools-linux install", so we can avoid +# rebuilding nacl and other things when only source files change. +RUN mkdir -p /home/travis/build/c-toxcore /home/travis/cache +WORKDIR /home/travis/build/c-toxcore +COPY --chown=travis:travis c-toxcore/.travis/ /home/travis/build/c-toxcore/.travis/ +RUN .travis/autotools-linux install + +# Now copy the rest of the sources and run the build. +COPY --chown=travis:travis . /home/travis/build/ +RUN .travis/autotools-linux script diff --git a/other/docker/cmake/Dockerfile b/other/docker/cmake/Dockerfile new file mode 100644 index 00000000..0b70a9f7 --- /dev/null +++ b/other/docker/cmake/Dockerfile @@ -0,0 +1,14 @@ +################################################ +# cmake-linux +FROM localbuild/travis:1.0.0 + +# Copy minimal files to run "cmake-linux install", so we can avoid rebuilding +# astyle and other things when only source files change. +RUN mkdir -p /home/travis/build/c-toxcore /home/travis/cache +WORKDIR /home/travis/build/c-toxcore +COPY --chown=travis:travis c-toxcore/.travis/ /home/travis/build/c-toxcore/.travis/ +RUN .travis/cmake-linux install + +# Now copy the rest of the sources and run the build. +COPY --chown=travis:travis . /home/travis/build/ +RUN .travis/cmake-linux script diff --git a/other/docker/run-ci b/other/docker/run-ci index 9005cfbd..a42c11eb 100755 --- a/other/docker/run-ci +++ b/other/docker/run-ci @@ -1,15 +1,21 @@ #!/bin/bash -set -eu +set -eux + +STAGE="${1-cmake}" readarray -t FILES <<<"$(git ls-files | sed -e 's,^,c-toxcore/,')" +FILES+=(c-toxcore/.git) + if [ -f .git ]; then - cd .. - tar -c "${FILES[@]}" "c-toxcore/.git" ".git/modules/c-toxcore" | - docker build -f c-toxcore/other/docker/Dockerfile.ci - -else - cd .. - tar -c "${FILES[@]}" "c-toxcore/.git" | - docker build -f c-toxcore/other/docker/Dockerfile.ci - + FILES+=(.git/modules/c-toxcore) fi + +cd .. +tar -c "${FILES[@]}" | + docker build -f "c-toxcore/other/docker/travis/Dockerfile" \ + -t localbuild/travis:1.0.0 - +tar -c "${FILES[@]}" | + docker build -f "c-toxcore/other/docker/$STAGE/Dockerfile" \ + -t "localbuild/$STAGE:1.0.0" - diff --git a/other/docker/Dockerfile.ci b/other/docker/travis/Dockerfile similarity index 80% rename from other/docker/Dockerfile.ci rename to other/docker/travis/Dockerfile index db7e5e2c..96bfdab4 100644 --- a/other/docker/Dockerfile.ci +++ b/other/docker/travis/Dockerfile @@ -22,6 +22,7 @@ RUN apt-get update && apt-get install --no-install-recommends -y \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* +SHELL ["/bin/bash", "-o", "pipefail", "-c"] RUN curl https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add - \ && apt-add-repository "deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-6.0 main" \ && apt-get update && apt-get install --no-install-recommends -y \ @@ -62,14 +63,3 @@ USER travis ENV CC=gcc CXX=g++ \ PATH=/home/travis/.local/bin:$PATH \ TRAVIS_REPO_SLUG=TokTok/c-toxcore - -# Copy minimal files to run "cmake-linux install", so we can avoid rebuilding -# astyle and other things when only source files change. -RUN mkdir -p /home/travis/build/c-toxcore /home/travis/cache -WORKDIR /home/travis/build/c-toxcore -COPY --chown=travis:travis c-toxcore/.travis/ /home/travis/build/c-toxcore/.travis/ -RUN .travis/cmake-linux install - -# Now copy the rest of the sources and run the build. -COPY --chown=travis:travis . /home/travis/build/ -RUN .travis/cmake-linux script