Fetch dependencies from APT repository when building Linux version of the node (#3896)

* Dockerfiles: use `ubuntu:20.04` as base image and install all dependencies with default system package manager

* Bring back backtrace workaround

Co-authored-by: Piotr Wójcik <3044353+fikumikudev@users.noreply.github.com>
This commit is contained in:
Piotr Wójcik 2022-09-28 21:03:49 +02:00 committed by GitHub
commit e1d9cb0ba4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
9 changed files with 33 additions and 62 deletions

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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 \

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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