diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index e2a82a66..76eae2be 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -45,7 +45,7 @@ jobs: fail-fast: false matrix: TEST_USE_ROCKSDB: [0, 1] - COMPILER: [gcc, clang-6] + COMPILER: [gcc, clang] RELEASE: - ${{ startsWith(github.ref, 'refs/tags/') }} runs-on: ubuntu-20.04 diff --git a/ci/actions/linux/docker-impl/docker-common.sh b/ci/actions/linux/docker-impl/docker-common.sh index 3d47ecef..96475088 100755 --- a/ci/actions/linux/docker-impl/docker-common.sh +++ b/ci/actions/linux/docker-impl/docker-common.sh @@ -59,7 +59,7 @@ docker_deploy() if [[ "$GITHUB_WORKFLOW" = "Develop" ]]; then "$scripts"/custom-timeout.sh 30 docker push "nanocurrency/nano-env:base" "$scripts"/custom-timeout.sh 30 docker push "nanocurrency/nano-env:gcc" - "$scripts"/custom-timeout.sh 30 docker push "nanocurrency/nano-env:clang-6" + "$scripts"/custom-timeout.sh 30 docker push "nanocurrency/nano-env:clang" echo "Deployed nano-env" exit 0 else diff --git a/ci/actions/linux/ghcr_push.sh b/ci/actions/linux/ghcr_push.sh index 39074459..46af0760 100755 --- a/ci/actions/linux/ghcr_push.sh +++ b/ci/actions/linux/ghcr_push.sh @@ -5,7 +5,7 @@ scripts="$PWD/ci" if [[ "$GITHUB_WORKFLOW" = "Develop" ]]; then "$scripts"/custom-timeout.sh 30 docker push "ghcr.io/${GITHUB_REPOSITORY}/nano-env:base" "$scripts"/custom-timeout.sh 30 docker push "ghcr.io/${GITHUB_REPOSITORY}/nano-env:gcc" - "$scripts"/custom-timeout.sh 30 docker push "ghcr.io/${GITHUB_REPOSITORY}/nano-env:clang-6" + "$scripts"/custom-timeout.sh 30 docker push "ghcr.io/${GITHUB_REPOSITORY}/nano-env:clang" else tags=$(docker images --format '{{.Repository}}:{{.Tag }}' | grep "ghcr.io" | grep -vE "env|none") for a in $tags; do diff --git a/ci/actions/linux/install_deps.sh b/ci/actions/linux/install_deps.sh index 52a82a51..a78a5b4f 100755 --- a/ci/actions/linux/install_deps.sh +++ b/ci/actions/linux/install_deps.sh @@ -1,5 +1,6 @@ #!/bin/bash +# This enables IPv6 support in docker, needed to run node tests inside docker container sudo mkdir -p /etc/docker && echo '{"ipv6":true,"fixed-cidr-v6":"2001:db8:1::/64"}' | sudo tee /etc/docker/daemon.json && sudo service docker restart ci/build-docker-image.sh docker/ci/Dockerfile-base nanocurrency/nano-env:base @@ -7,6 +8,6 @@ if [[ "${COMPILER:-}" != "" ]]; then ci/build-docker-image.sh docker/ci/Dockerfile-gcc nanocurrency/nano-env:${COMPILER} else ci/build-docker-image.sh docker/ci/Dockerfile-gcc nanocurrency/nano-env:gcc - ci/build-docker-image.sh docker/ci/Dockerfile-clang-6 nanocurrency/nano-env:clang-6 + ci/build-docker-image.sh docker/ci/Dockerfile-clang nanocurrency/nano-env:clang ci/build-docker-image.sh docker/ci/Dockerfile-centos nanocurrency/nano-env:centos fi diff --git a/docker/ci/Dockerfile-base b/docker/ci/Dockerfile-base index d06e6d70..11e9fd63 100644 --- a/docker/ci/Dockerfile-base +++ b/docker/ci/Dockerfile-base @@ -1,4 +1,4 @@ -FROM ubuntu:18.04 +FROM ubuntu:20.04 ENV DEBIAN_FRONTEND=noninteractive @@ -7,11 +7,8 @@ build-essential \ g++ \ wget \ python \ -zlib1g-dev - -RUN wget -O cmake_install.sh https://github.com/Kitware/CMake/releases/download/v3.15.4/cmake-3.15.4-Linux-x86_64.sh && \ -chmod +x cmake_install.sh && \ -./cmake_install.sh --prefix=/usr --exclude-subdir --skip-license +zlib1g-dev \ +cmake RUN apt-get update -qq && apt-get install -yqq \ qt5-default \ diff --git a/docker/ci/Dockerfile-clang b/docker/ci/Dockerfile-clang index c6323a03..a2eb1fc1 100644 --- a/docker/ci/Dockerfile-clang +++ b/docker/ci/Dockerfile-clang @@ -1,23 +1,22 @@ -FROM nanocurrency/nano-env:base +ARG ENV_REPOSITORY=nanocurrency/nano-env +FROM ${ENV_REPOSITORY}:base RUN apt-get update -qq && apt-get install -yqq \ -clang-3.9 lldb-3.9 git +clang \ +lldb \ +git \ +libboost-all-dev ENV CXX=/usr/bin/clang++ ENV CC=/usr/bin/clang -RUN ln -s /usr/bin/clang-3.9 /usr/bin/clang -RUN ln -s /usr/bin/clang++-3.9 /usr/bin/clang++ RUN update-alternatives --install /usr/bin/cc cc /usr/bin/clang 100 RUN update-alternatives --install /usr/bin/c++ c++ /usr/bin/clang++ 100 -ENV BOOST_ROOT=/tmp/boost - -ADD util/build_prep/fetch_boost.sh fetch_boost.sh -RUN ./fetch_boost.sh # workaround to get a path that can be easily passed into cmake for # BOOST_STACKTRACE_BACKTRACE_INCLUDE_FILE # see https://www.boost.org/doc/libs/1_70_0/doc/html/stacktrace/configuration_and_build.html#stacktrace.configuration_and_build.f3 RUN ln -s /usr/lib/gcc/x86_64-linux-gnu/5/include/backtrace.h /tmp/backtrace.h + ARG REPOSITORY=nanocurrency/nano-node LABEL org.opencontainers.image.source https://github.com/$REPOSITORY diff --git a/docker/ci/Dockerfile-clang-6 b/docker/ci/Dockerfile-clang-6 deleted file mode 100644 index 8f16b548..00000000 --- a/docker/ci/Dockerfile-clang-6 +++ /dev/null @@ -1,29 +0,0 @@ -FROM nanocurrency/nano-env:base -# need https for llvm -RUN apt-get update && apt-get install apt-transport-https ca-certificates -yqq - -RUN apt-get update && apt-get install -yqq software-properties-common && \ -wget -O - 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 -qq && apt-get install -yqq \ -clang-6.0 lldb-6.0 libfuzzer-6.0-dev git - -ENV CXX=/usr/bin/clang++ -ENV CC=/usr/bin/clang -RUN ln -s /usr/bin/clang-6.0 /usr/bin/clang -RUN ln -s /usr/bin/clang++-6.0 /usr/bin/clang++ -RUN update-alternatives --install /usr/bin/cc cc /usr/bin/clang 100 -RUN update-alternatives --install /usr/bin/c++ c++ /usr/bin/clang++ 100 -ENV BOOST_ROOT=/tmp/boost - -ADD util/build_prep/fetch_boost.sh fetch_boost.sh - -RUN COMPILER=clang-6 ./fetch_boost.sh - -# workaround to get a path that can be easily passed into cmake for -# BOOST_STACKTRACE_BACKTRACE_INCLUDE_FILE -# see https://www.boost.org/doc/libs/1_70_0/doc/html/stacktrace/configuration_and_build.html#stacktrace.configuration_and_build.f3 - -RUN ln -s /usr/lib/gcc/x86_64-linux-gnu/5/include/backtrace.h /tmp/backtrace.h -ARG REPOSITORY=nanocurrency/nano-node -LABEL org.opencontainers.image.source https://github.com/$REPOSITORY diff --git a/docker/ci/Dockerfile-gcc b/docker/ci/Dockerfile-gcc index 65960198..7e3b786f 100644 --- a/docker/ci/Dockerfile-gcc +++ b/docker/ci/Dockerfile-gcc @@ -1,11 +1,9 @@ -FROM nanocurrency/nano-env:base +ARG ENV_REPOSITORY=nanocurrency/nano-env +FROM ${ENV_REPOSITORY}:base -RUN apt update -qq && apt-get install -yqq git +RUN apt-get update -qq && apt-get install -yqq \ +git \ +libboost-all-dev -ENV BOOST_ROOT=/tmp/boost - -ADD util/build_prep/fetch_boost.sh fetch_boost.sh - -RUN COMPILER=gcc ./fetch_boost.sh ARG REPOSITORY=nanocurrency/nano-node LABEL org.opencontainers.image.source https://github.com/$REPOSITORY diff --git a/docker/node/Dockerfile b/docker/node/Dockerfile index 825364cb..50a054fc 100644 --- a/docker/node/Dockerfile +++ b/docker/node/Dockerfile @@ -1,23 +1,29 @@ -FROM nanocurrency/nano-env:gcc +ARG ENV_REPOSITORY=nanocurrency/nano-env +ARG COMPILER=gcc +FROM ${ENV_REPOSITORY}:${COMPILER} ARG NETWORK=live ARG CI_TAG=DEV_BUILD ARG CI_BUILD=OFF ADD ./ /tmp/src -RUN mkdir /tmp/build && \ -cd /tmp/build && \ -cmake /tmp/src -DCI_BUILD=${CI_BUILD} \ --DBOOST_ROOT=${BOOST_ROOT} -DPORTABLE=1 \ +WORKDIR /tmp/build + +RUN \ +cmake /tmp/src \ +-DCI_BUILD=${CI_BUILD} \ +-DPORTABLE=1 \ -DACTIVE_NETWORK=nano_${NETWORK}_network \ --DNANO_POW_SERVER=ON -DNANO_SHARED_BOOST=ON && \ +-DNANO_POW_SERVER=ON + +RUN \ make nano_node -j $(nproc) && \ make nano_rpc -j $(nproc) && \ make nano_pow_server -j $(nproc) && \ cd .. && \ echo ${NETWORK} >/etc/nano-network -FROM ubuntu:18.04 +FROM ubuntu:20.04 RUN groupadd --gid 1000 nanocurrency && \ useradd --uid 1000 --gid nanocurrency --shell /bin/bash --create-home nanocurrency @@ -29,7 +35,6 @@ COPY --from=0 /tmp/src/api/ /usr/bin/api/ COPY --from=0 /etc/nano-network /etc COPY docker/node/entry.sh /usr/bin/entry.sh COPY docker/node/config /usr/share/nano/config -COPY --from=0 /tmp/boost/lib/* /usr/local/lib/ RUN chmod +x /usr/bin/entry.sh RUN ln -s /usr/bin/nano_node /usr/bin/rai_node RUN ldconfig