Skip to content

Commit b932680

Browse files
committed
Merge remote-tracking branch 'steemit/dev' into 0.23.2
2 parents 95acd53 + 496cb88 commit b932680

16 files changed

Lines changed: 749 additions & 66 deletions

File tree

.github/workflows/build-steemd.yml

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
name: Build All steemd Dockerfiles
2+
3+
on:
4+
push:
5+
paths:
6+
- "deploy/**"
7+
- ".github/workflows/build-steemd.yml"
8+
9+
pull_request:
10+
11+
workflow_dispatch:
12+
13+
jobs:
14+
build-steemd:
15+
runs-on: ubuntu-latest
16+
17+
strategy:
18+
fail-fast: true
19+
matrix:
20+
dockerfile:
21+
- Dockerfile.azurelinux3.0
22+
- Dockerfile.debian13
23+
- Dockerfile.ubuntu20.04
24+
- Dockerfile.ubuntu22.04
25+
- Dockerfile.ubuntu24.04
26+
27+
steps:
28+
- name: Checkout code
29+
uses: actions/checkout@v4
30+
31+
- name: Build Docker image
32+
run: |
33+
set -ex
34+
35+
FILE="deploy/${{ matrix.dockerfile }}"
36+
NAME="${{ matrix.dockerfile }}"
37+
TAG="steem:${NAME#Dockerfile.}"
38+
39+
echo "Building Dockerfile: $FILE"
40+
echo "Tag: $TAG"
41+
42+
sudo -E docker build \
43+
--no-cache \
44+
--build-arg NUMBER_BUILD_THREADS=4 \
45+
--build-arg UNIT_TEST=ON \
46+
-t "$TAG" \
47+
-f "$FILE" \
48+
.

README.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
# Steem - The Blockchain That Will Tokenize The Web
2+
[![Build All steemd Dockerfiles](https://github.com/steemit/steem/actions/workflows/build-steemd.yml/badge.svg?branch=dev)](https://github.com/steemit/steem/actions/workflows/build-steemd.yml)
23

34
Welcome to the official repository for Steem, the blockchain that will revolutionize the web, and soon the blockchain for Smart Media Tokens!
45

5-
6-
76
Steem is the first blockchain which introduced the "Proof of Brain" social consensus algorithm for token allocation.
87

98
Being one of the most actively developed blockchain projects currently in existence, it's become fertile soil for entrepreneurial pursuits. It has also become home for many cryptocurrency centric projects.

deploy/Dockerfile.azurelinux3.0

Lines changed: 180 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,180 @@
1+
FROM mcr.microsoft.com/azurelinux/base/core:3.0 AS builder
2+
3+
# The default build params are for low memory mira version.
4+
# This usually are used as a witness node.
5+
ARG CMAKE_BUILD_TYPE=Release
6+
ARG STEEM_STATIC_BUILD=ON
7+
ARG ENABLE_MIRA=ON
8+
ARG LOW_MEMORY_MODE=ON
9+
ARG CLEAR_VOTES=ON
10+
ARG SKIP_BY_TX_ID=ON
11+
ARG BUILD_STEEM_TESTNET=OFF
12+
ARG ENABLE_COVERAGE_TESTING=OFF
13+
ARG CHAINBASE_CHECK_LOCKING=OFF
14+
ARG UNIT_TEST=OFF
15+
ARG DOXYGEN=OFF
16+
ARG BUILD_TESTING=ON
17+
ARG NUMBER_BUILD_THREADS
18+
19+
RUN echo "CMAKE_BUILD_TYPE: ${CMAKE_BUILD_TYPE}" >> /etc/build_info && \
20+
echo "STEEM_STATIC_BUILD: ${STEEM_STATIC_BUILD}" >> /etc/build_info && \
21+
echo "ENABLE_MIRA: ${ENABLE_MIRA}" >> /etc/build_info && \
22+
echo "LOW_MEMORY_MODE: ${LOW_MEMORY_MODE}" >> /etc/build_info && \
23+
echo "CLEAR_VOTES: ${CLEAR_VOTES}" >> /etc/build_info && \
24+
echo "SKIP_BY_TX_ID: ${SKIP_BY_TX_ID}" >> /etc/build_info && \
25+
echo "BUILD_STEEM_TESTNET: ${BUILD_STEEM_TESTNET}" >> /etc/build_info && \
26+
echo "ENABLE_COVERAGE_TESTING: ${ENABLE_COVERAGE_TESTING}" >> /etc/build_info && \
27+
echo "CHAINBASE_CHECK_LOCKING: ${CHAINBASE_CHECK_LOCKING}" >> /etc/build_info && \
28+
echo "UNIT_TEST: ${UNIT_TEST}" >> /etc/build_info && \
29+
echo "DOXYGEN: ${DOXYGEN}" >> /etc/build_info && \
30+
echo "NUMBER_BUILD_THREADS: ${THREADS}" >> /etc/build_info
31+
32+
ENV DEBIAN_FRONTEND=noninteractive
33+
34+
RUN tdnf update -y && \
35+
tdnf install -y \
36+
git \
37+
jq \
38+
gcc \
39+
gcc-c++ \
40+
make \
41+
cmake \
42+
openssl-devel \
43+
snappy-devel \
44+
python3 \
45+
python3-jinja2 \
46+
python3-devel \
47+
doxygen \
48+
autoconf \
49+
automake \
50+
util-linux \
51+
yajl-devel \
52+
readline-devel \
53+
libtool \
54+
lz4-devel \
55+
xz-devel \
56+
ncurses-devel \
57+
gflags-devel \
58+
zlib-devel \
59+
bzip2-devel \
60+
zstd-devel \
61+
ncurses-compat \
62+
wget \
63+
gcc \
64+
g++ \
65+
glibc \
66+
binutils \
67+
glibc-devel \
68+
perl \
69+
which \
70+
tar \
71+
findutils \
72+
diffutils \
73+
gawk \
74+
kernel-headers \
75+
ncurses-compat \
76+
patch && \
77+
tdnf install -y ca-certificates curl && \
78+
update-ca-trust
79+
80+
## Build Boost 1.78 (required by Steem)
81+
## Azure Linux 3.0 does not have a fixed default version of the Boost C++ Libraries.
82+
RUN set -e && \
83+
BOOST_VERSION_DOT=1.78.0 && \
84+
BOOST_VERSION_UNDERSCORE=1_78_0 && \
85+
BOOST_URL="https://archives.boost.io/release/${BOOST_VERSION_DOT}/source/boost_${BOOST_VERSION_UNDERSCORE}.tar.gz" && \
86+
BOOST_SHA256="94ced8b72956591c4775ae2207a9763d3600b30d9d7446562c552f0a14a63be7" && \
87+
wget -q "${BOOST_URL}" -O boost_${BOOST_VERSION_UNDERSCORE}.tar.gz && \
88+
echo "${BOOST_SHA256} boost_${BOOST_VERSION_UNDERSCORE}.tar.gz" | sha256sum -c - && \
89+
tar -xvzf boost_${BOOST_VERSION_UNDERSCORE}.tar.gz && \
90+
cd boost_${BOOST_VERSION_UNDERSCORE} && \
91+
./bootstrap.sh --prefix=/usr/local --with-toolset=gcc || { cat bootstrap.log; exit 1; } && \
92+
./b2 -j"$(nproc)" toolset=gcc install || { cat bootstrap.log; exit 1; } && \
93+
cd .. && rm -rf boost_${BOOST_VERSION_UNDERSCORE} boost_${BOOST_VERSION_UNDERSCORE}.tar.gz
94+
95+
# Ensure make is available as gmake if needed
96+
RUN ln -s /usr/bin/make /usr/bin/gmake
97+
98+
WORKDIR /usr/local/src
99+
ADD . /usr/local/src
100+
101+
RUN pwd && \
102+
git submodule update --init --recursive && \
103+
cd libraries/fc/vendor/websocketpp && \
104+
(git apply /usr/local/src/patches/websocketpp-patch-ini-asio.patch || echo "Patch already applied or failed")
105+
106+
RUN cd libraries/vendor/rocksdb && \
107+
(git apply /usr/local/src/patches/rocksdb-cmake.patch || echo "Patch already applied or cannot apply")
108+
109+
RUN mkdir -p build && \
110+
cd build && \
111+
cmake \
112+
-DCMAKE_INSTALL_PREFIX=/usr/local/steemd \
113+
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} \
114+
-DLOW_MEMORY_NODE=${LOW_MEMORY_MODE} \
115+
-DBUILD_TESTING=${BUILD_TESTING} \
116+
-DCLEAR_VOTES=${CLEAR_VOTES} \
117+
-DSKIP_BY_TX_ID=${SKIP_BY_TX_ID} \
118+
-DBUILD_STEEM_TESTNET=${BUILD_STEEM_TESTNET} \
119+
-DENABLE_COVERAGE_TESTING=${ENABLE_COVERAGE_TESTING} \
120+
-DCHAINBASE_CHECK_LOCKING=${CHAINBASE_CHECK_LOCKING} \
121+
-DENABLE_MIRA=${ENABLE_MIRA} \
122+
-DSTEEM_STATIC_BUILD=${STEEM_STATIC_BUILD} \
123+
..
124+
125+
RUN cd build && \
126+
make -j$( [ -n "$NUMBER_BUILD_THREADS" ] \
127+
&& echo "$NUMBER_BUILD_THREADS" \
128+
|| echo $(( $(nproc) > 1 ? $(nproc) - 1 : 1 )) )
129+
130+
RUN cd build && \
131+
make install
132+
133+
RUN if [ "${UNIT_TEST}" = "ON" ] ; then \
134+
./tests/scripts/run_unit_tests.sh ; \
135+
else \
136+
echo "Skipping unit tests as UNIT_TEST is set to OFF" ; \
137+
fi
138+
139+
RUN if [ "${DOXYGEN}" = "ON" ] ; then \
140+
doxygen && \
141+
PYTHONPATH=programs/build_helpers \
142+
python3 -m steem_build_helpers.check_reflect && \
143+
programs/build_helpers/get_config_check.sh; \
144+
fi
145+
146+
FROM mcr.microsoft.com/azurelinux/base/core:3.0
147+
148+
ARG CMAKE_BUILD_TYPE=Release
149+
ARG STEEM_STATIC_BUILD=ON
150+
ARG ENABLE_MIRA=ON
151+
ARG LOW_MEMORY_MODE=ON
152+
ARG CLEAR_VOTES=ON
153+
ARG SKIP_BY_TX_ID=ON
154+
ARG BUILD_STEEM_TESTNET=OFF
155+
ARG ENABLE_COVERAGE_TESTING=OFF
156+
ARG CHAINBASE_CHECK_LOCKING=OFF
157+
ARG DOXYGEN=OFF
158+
159+
RUN echo "CMAKE_BUILD_TYPE: ${CMAKE_BUILD_TYPE}" >> /etc/build_info && \
160+
echo "STEEM_STATIC_BUILD: ${STEEM_STATIC_BUILD}" >> /etc/build_info && \
161+
echo "ENABLE_MIRA: ${ENABLE_MIRA}" >> /etc/build_info && \
162+
echo "LOW_MEMORY_MODE: ${LOW_MEMORY_MODE}" >> /etc/build_info && \
163+
echo "CLEAR_VOTES: ${CLEAR_VOTES}" >> /etc/build_info && \
164+
echo "SKIP_BY_TX_ID: ${SKIP_BY_TX_ID}" >> /etc/build_info && \
165+
echo "BUILD_STEEM_TESTNET: ${BUILD_STEEM_TESTNET}" >> /etc/build_info && \
166+
echo "ENABLE_COVERAGE_TESTING: ${ENABLE_COVERAGE_TESTING}" >> /etc/build_info && \
167+
echo "DOXYGEN: ${DOXYGEN}" >> /etc/build_info
168+
169+
COPY --from=builder /usr/local/steemd /usr/local/steemd
170+
WORKDIR /var/steem
171+
VOLUME [ "/var/steem" ]
172+
RUN tdnf update -y && \
173+
tdnf install -y snappy-devel ncurses-compat readline-devel && \
174+
tdnf autoremove -y && \
175+
tdnf clean all
176+
177+
## make steemd available on $PATH
178+
ENV PATH="/usr/local/steemd/bin:${PATH}"
179+
180+
CMD ["cat", "/etc/build_info"]

deploy/Dockerfile.debian13

Lines changed: 147 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,147 @@
1+
## Trixie see https://www.debian.org/releases/
2+
FROM debian:13 AS builder
3+
4+
# The default build params are for low memory mira version.
5+
# This usually are used as a witness node.
6+
ARG CMAKE_BUILD_TYPE=Release
7+
ARG STEEM_STATIC_BUILD=ON
8+
ARG ENABLE_MIRA=ON
9+
ARG LOW_MEMORY_MODE=ON
10+
ARG CLEAR_VOTES=ON
11+
ARG SKIP_BY_TX_ID=ON
12+
ARG BUILD_STEEM_TESTNET=OFF
13+
ARG ENABLE_COVERAGE_TESTING=OFF
14+
ARG CHAINBASE_CHECK_LOCKING=OFF
15+
ARG UNIT_TEST=OFF
16+
ARG DOXYGEN=OFF
17+
ARG BUILD_TESTING=ON
18+
ARG NUMBER_BUILD_THREADS
19+
20+
RUN echo "CMAKE_BUILD_TYPE: ${CMAKE_BUILD_TYPE}" >> /etc/build_info && \
21+
echo "STEEM_STATIC_BUILD: ${STEEM_STATIC_BUILD}" >> /etc/build_info && \
22+
echo "ENABLE_MIRA: ${ENABLE_MIRA}" >> /etc/build_info && \
23+
echo "LOW_MEMORY_MODE: ${LOW_MEMORY_MODE}" >> /etc/build_info && \
24+
echo "CLEAR_VOTES: ${CLEAR_VOTES}" >> /etc/build_info && \
25+
echo "SKIP_BY_TX_ID: ${SKIP_BY_TX_ID}" >> /etc/build_info && \
26+
echo "BUILD_STEEM_TESTNET: ${BUILD_STEEM_TESTNET}" >> /etc/build_info && \
27+
echo "ENABLE_COVERAGE_TESTING: ${ENABLE_COVERAGE_TESTING}" >> /etc/build_info && \
28+
echo "CHAINBASE_CHECK_LOCKING: ${CHAINBASE_CHECK_LOCKING}" >> /etc/build_info && \
29+
echo "UNIT_TEST: ${UNIT_TEST}" >> /etc/build_info && \
30+
echo "DOXYGEN: ${DOXYGEN}" >> /etc/build_info && \
31+
echo "NUMBER_BUILD_THREADS: ${THREADS}" >> /etc/build_info
32+
33+
ENV DEBIAN_FRONTEND=noninteractive
34+
35+
RUN apt-get update && \
36+
apt-get install -y \
37+
git \
38+
jq \
39+
libboost-all-dev \
40+
build-essential \
41+
cmake \
42+
libssl-dev \
43+
libsnappy-dev \
44+
python3-jinja2 \
45+
doxygen \
46+
autoconf \
47+
automake \
48+
autotools-dev \
49+
bsdmainutils \
50+
libyajl-dev \
51+
libreadline-dev \
52+
libtool \
53+
lz4 \
54+
liblzma-dev \
55+
ncurses-dev \
56+
libgflags-dev \
57+
zlib1g-dev \
58+
libbz2-dev \
59+
liblz4-dev \
60+
libzstd-dev \
61+
wget
62+
63+
WORKDIR /usr/local/src
64+
ADD . /usr/local/src
65+
66+
RUN pwd && \
67+
git submodule update --init --recursive
68+
69+
RUN cd libraries/vendor/rocksdb && \
70+
(git apply /usr/local/src/patches/rocksdb-cmake.patch || echo "Patch already applied or cannot apply")
71+
72+
RUN pwd && \
73+
cd libraries/fc/vendor/websocketpp && \
74+
(git apply /usr/local/src/patches/websocketpp-cx20-fix.patch || echo "Patch already applied or failed")
75+
76+
RUN mkdir -p build && \
77+
cd build && \
78+
cmake \
79+
-DCMAKE_INSTALL_PREFIX=/usr/local/steemd \
80+
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} \
81+
-DLOW_MEMORY_NODE=${LOW_MEMORY_MODE} \
82+
-DBUILD_TESTING=${BUILD_TESTING} \
83+
-DCLEAR_VOTES=${CLEAR_VOTES} \
84+
-DSKIP_BY_TX_ID=${SKIP_BY_TX_ID} \
85+
-DBUILD_STEEM_TESTNET=${BUILD_STEEM_TESTNET} \
86+
-DENABLE_COVERAGE_TESTING=${ENABLE_COVERAGE_TESTING} \
87+
-DCHAINBASE_CHECK_LOCKING=${CHAINBASE_CHECK_LOCKING} \
88+
-DENABLE_MIRA=${ENABLE_MIRA} \
89+
-DSTEEM_STATIC_BUILD=${STEEM_STATIC_BUILD} \
90+
..
91+
92+
RUN cd build && \
93+
make -j$( [ -n "$NUMBER_BUILD_THREADS" ] \
94+
&& echo "$NUMBER_BUILD_THREADS" \
95+
|| echo $(( $(nproc) > 1 ? $(nproc) - 1 : 1 )) )
96+
97+
RUN cd build && \
98+
make install
99+
100+
RUN if [ "${UNIT_TEST}" = "ON" ] ; then \
101+
./tests/scripts/run_unit_tests.sh ; \
102+
else \
103+
echo "Skipping unit tests as UNIT_TEST is set to OFF" ; \
104+
fi
105+
106+
RUN if [ "${DOXYGEN}" = "ON" ] ; then \
107+
doxygen && \
108+
PYTHONPATH=programs/build_helpers \
109+
python3 -m steem_build_helpers.check_reflect && \
110+
programs/build_helpers/get_config_check.sh; \
111+
fi
112+
113+
FROM debian:13 AS final
114+
115+
ARG CMAKE_BUILD_TYPE=Release
116+
ARG STEEM_STATIC_BUILD=ON
117+
ARG ENABLE_MIRA=ON
118+
ARG LOW_MEMORY_MODE=ON
119+
ARG CLEAR_VOTES=ON
120+
ARG SKIP_BY_TX_ID=ON
121+
ARG BUILD_STEEM_TESTNET=OFF
122+
ARG ENABLE_COVERAGE_TESTING=OFF
123+
ARG CHAINBASE_CHECK_LOCKING=OFF
124+
ARG DOXYGEN=OFF
125+
126+
RUN echo "CMAKE_BUILD_TYPE: ${CMAKE_BUILD_TYPE}" >> /etc/build_info && \
127+
echo "STEEM_STATIC_BUILD: ${STEEM_STATIC_BUILD}" >> /etc/build_info && \
128+
echo "ENABLE_MIRA: ${ENABLE_MIRA}" >> /etc/build_info && \
129+
echo "LOW_MEMORY_MODE: ${LOW_MEMORY_MODE}" >> /etc/build_info && \
130+
echo "CLEAR_VOTES: ${CLEAR_VOTES}" >> /etc/build_info && \
131+
echo "SKIP_BY_TX_ID: ${SKIP_BY_TX_ID}" >> /etc/build_info && \
132+
echo "BUILD_STEEM_TESTNET: ${BUILD_STEEM_TESTNET}" >> /etc/build_info && \
133+
echo "ENABLE_COVERAGE_TESTING: ${ENABLE_COVERAGE_TESTING}" >> /etc/build_info && \
134+
echo "DOXYGEN: ${DOXYGEN}" >> /etc/build_info
135+
136+
COPY --from=builder /usr/local/steemd /usr/local/steemd
137+
WORKDIR /var/steem
138+
VOLUME [ "/var/steem" ]
139+
RUN apt-get update && \
140+
apt-get install -y libsnappy-dev libreadline-dev && \
141+
apt-get autoremove -y && \
142+
rm -rf /var/lib/apt/lists
143+
144+
## make steemd available on $PATH
145+
ENV PATH="/usr/local/steemd/bin:${PATH}"
146+
147+
CMD ["cat", "/etc/build_info"]

0 commit comments

Comments
 (0)