Skip to content

Commit 3d535b7

Browse files
authored
Merge pull request #38 from willcl-ark/v29.0rc2
add v29.0rc2
2 parents 79c9717 + 6871cb5 commit 3d535b7

File tree

8 files changed

+1676
-0
lines changed

8 files changed

+1676
-0
lines changed

.github/workflows/build.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ on:
77
- '26.2/**'
88
- '27.1/**'
99
- '28.1/**'
10+
- '29.0rc2/**'
1011

1112
jobs:
1213
build:
@@ -21,6 +22,8 @@ jobs:
2122
- '27.1'
2223
- '28.1/alpine'
2324
- '28.1'
25+
- '29.0rc2/alpine'
26+
- '29.0rc2'
2427
fail-fast: true
2528
steps:
2629
- name: Checkout

29.0rc2/Dockerfile

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
FROM debian:bookworm-slim AS builder
2+
3+
LABEL maintainer.0="Will Clark (@willcl-ark)"
4+
5+
RUN apt-get update -y \
6+
&& apt-get install -y ca-certificates curl git gnupg gosu python3 wget --no-install-recommends \
7+
&& apt-get clean \
8+
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
9+
10+
ARG TARGETPLATFORM
11+
ENV BITCOIN_VERSION=29.0rc2
12+
ENV SIGS_REPO_URL="https://github.com/bitcoin-core/guix.sigs.git"
13+
ENV SIGS_CLONE_DIR="guix.sigs"
14+
ENV TMPDIR="/tmp/bitcoin_verify_binaries"
15+
16+
COPY verify-${BITCOIN_VERSION}.py .
17+
18+
RUN set -ex \
19+
&& if echo $BITCOIN_VERSION | grep -q "rc" ; then \
20+
VERIFY_VERSION=$(echo $BITCOIN_VERSION | sed 's/\(.*\)rc\([0-9]*\)/\1-rc\2/'); \
21+
else \
22+
VERIFY_VERSION=$BITCOIN_VERSION; \
23+
fi \
24+
&& echo "$VERIFY_VERSION" \
25+
&& if [ "${TARGETPLATFORM}" = "linux/amd64" ]; then export TARGETPLATFORM=x86_64-linux-gnu; fi \
26+
&& if [ "${TARGETPLATFORM}" = "linux/arm64" ]; then export TARGETPLATFORM=aarch64-linux-gnu; fi \
27+
&& if [ "${TARGETPLATFORM}" = "linux/arm/v7" ]; then export TARGETPLATFORM=arm-linux-gnueabihf; fi \
28+
&& git clone ${SIGS_REPO_URL} ${SIGS_CLONE_DIR} \
29+
&& gpg --import "${SIGS_CLONE_DIR}"/builder-keys/* \
30+
&& ./verify-${BITCOIN_VERSION}.py \
31+
--min-good-sigs 6 pub "${VERIFY_VERSION}-linux" \
32+
&& tar -xzf "${TMPDIR}.${VERIFY_VERSION}-linux/bitcoin-${BITCOIN_VERSION}-${TARGETPLATFORM}.tar.gz" -C /opt \
33+
&& rm -rf ${SIGS_CLONE_DIR} \
34+
&& rm -rf ${TMPDIR} \
35+
&& rm -rf /opt/bitcoin-${BITCOIN_VERSION}/bin/bitcoin-qt
36+
37+
# Second stage
38+
FROM debian:bookworm-slim
39+
40+
ARG UID=101
41+
ARG GID=101
42+
43+
ENV BITCOIN_DATA=/home/bitcoin/.bitcoin
44+
ENV BITCOIN_VERSION=29.0rc2
45+
ENV PATH=/opt/bitcoin-${BITCOIN_VERSION}/bin:$PATH
46+
47+
RUN groupadd --gid ${GID} bitcoin \
48+
&& if echo "$BITCOIN_VERSION" | grep -q "rc"; then \
49+
PADDED_VERSION=$(echo $BITCOIN_VERSION | sed 's/\([0-9]\+\)\.\([0-9]\+\)rc/\1.\2.0rc/'); \
50+
else \
51+
PADDED_VERSION=$BITCOIN_VERSION; \
52+
fi \
53+
&& echo "Padded version: $PADDED_VERSION" \
54+
&& useradd --create-home --no-log-init -u ${UID} -g ${GID} bitcoin \
55+
&& apt-get update -y \
56+
&& apt-get install -y gosu --no-install-recommends \
57+
&& apt-get clean \
58+
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
59+
60+
COPY --from=builder /opt/bitcoin-${BITCOIN_VERSION} /opt/bitcoin-${BITCOIN_VERSION}
61+
62+
COPY docker-entrypoint.sh /entrypoint.sh
63+
64+
VOLUME ["/home/bitcoin/.bitcoin"]
65+
EXPOSE 8332 8333 18332 18333 18443 18444 38333 38332
66+
67+
ENTRYPOINT ["/entrypoint.sh"]
68+
RUN bitcoind -version | grep "Bitcoin Core daemon version v${PADDED_VERSION}"
69+
CMD ["bitcoind"]

29.0rc2/alpine/Dockerfile

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
# Build stage for Bitcoin Core
2+
FROM alpine:3.21 AS build
3+
4+
RUN apk --no-cache add \
5+
boost-dev \
6+
build-base \
7+
ccache \
8+
chrpath \
9+
clang18 \
10+
cmake \
11+
file \
12+
gnupg \
13+
git \
14+
libevent-dev \
15+
libressl \
16+
libtool \
17+
linux-headers \
18+
sqlite-dev \
19+
zeromq-dev
20+
21+
ENV BITCOIN_VERSION=29.0rc2
22+
ENV BITCOIN_PREFIX=/opt/bitcoin-${BITCOIN_VERSION}
23+
ENV BITCOIN_SOURCE_DIR=/bitcoin/src
24+
ENV SIGS_REPO_URL="https://github.com/bitcoin-core/guix.sigs.git"
25+
ENV SIGS_CLONE_DIR="guix.sigs"
26+
ENV VERIFY_SCRIPT_URL="https://raw.githubusercontent.com/bitcoin/bitcoin/v${BITCOIN_VERSION}/contrib/verify-binaries/verify.py"
27+
28+
WORKDIR /bitcoin
29+
COPY verify-${BITCOIN_VERSION}.py .
30+
31+
RUN set -ex \
32+
&& if echo $BITCOIN_VERSION | grep -q "rc" ; then \
33+
VERIFY_VERSION=$(echo $BITCOIN_VERSION | sed 's/\(.*\)rc\([0-9]*\)/\1-rc\2/'); \
34+
ADDRESS="https://bitcoincore.org/bin/bitcoin-core-${BITCOIN_VERSION%%rc*}/test.rc${BITCOIN_VERSION##*rc}"; \
35+
else \
36+
VERIFY_VERSION=$BITCOIN_VERSION; \
37+
ADDRESS="https://bitcoincore.org/bin/bitcoin-core-${VERIFY_VERSION}"; \
38+
fi \
39+
&& echo "$VERIFY_VERSION" \
40+
&& wget ${ADDRESS}/bitcoin-${BITCOIN_VERSION}.tar.gz \
41+
&& wget ${ADDRESS}/SHA256SUMS \
42+
&& wget ${ADDRESS}/SHA256SUMS.asc \
43+
&& git clone ${SIGS_REPO_URL} ${SIGS_CLONE_DIR} \
44+
&& gpg --import "${SIGS_CLONE_DIR}"/builder-keys/* \
45+
&& ./verify-${BITCOIN_VERSION}.py bin SHA256SUMS \
46+
"bitcoin-${BITCOIN_VERSION}.tar.gz" \
47+
&& mkdir -p ${BITCOIN_SOURCE_DIR} \
48+
&& tar -xzf "bitcoin-${BITCOIN_VERSION}.tar.gz" -C ${BITCOIN_SOURCE_DIR} \
49+
&& rm -rf ${SIGS_CLONE_DIR}
50+
51+
WORKDIR "${BITCOIN_SOURCE_DIR}/bitcoin-${BITCOIN_VERSION}"
52+
53+
RUN cmake -B build \
54+
-DBUILD_TESTS=OFF \
55+
-DBUILD_TX=ON \
56+
-DBUILD_UTIL=OFF \
57+
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
58+
-DCMAKE_CXX_COMPILER=clang++-18 \
59+
-DCMAKE_C_COMPILER=clang-18 \
60+
-DCMAKE_INSTALL_PREFIX:PATH="${BITCOIN_PREFIX}" \
61+
-DWITH_CCACHE=ON && \
62+
cmake --build build -j$(nproc) && \
63+
strip build/bin/bitcoin-cli build/bin/bitcoin-tx build/bin/bitcoind && \
64+
cmake --install build
65+
66+
# Build stage for compiled artifacts
67+
FROM alpine:3.21
68+
69+
ARG UID=100
70+
ARG GID=101
71+
72+
LABEL maintainer.0="Will Clark (@willcl-ark)"
73+
74+
RUN addgroup bitcoin --gid ${GID} --system
75+
RUN adduser --uid ${UID} --system bitcoin --ingroup bitcoin
76+
RUN apk --no-cache add \
77+
libevent \
78+
libzmq \
79+
shadow \
80+
sqlite-libs \
81+
su-exec
82+
83+
ENV BITCOIN_DATA=/home/bitcoin/.bitcoin
84+
ENV BITCOIN_VERSION=29.0rc2
85+
ENV BITCOIN_PREFIX=/opt/bitcoin-${BITCOIN_VERSION}
86+
ENV PATH=/opt/bin:$PATH
87+
88+
COPY --from=build ${BITCOIN_PREFIX} /opt
89+
COPY docker-entrypoint.sh /entrypoint.sh
90+
91+
RUN if echo "$BITCOIN_VERSION" | grep -q "rc"; then \
92+
PADDED_VERSION=$(echo $BITCOIN_VERSION | sed 's/\([0-9]\+\)\.\([0-9]\+\)rc/\1.\2.0rc/'); \
93+
else \
94+
PADDED_VERSION=$BITCOIN_VERSION; \
95+
fi
96+
97+
VOLUME ["/home/bitcoin/.bitcoin"]
98+
99+
EXPOSE 8332 8333 18332 18333 18444
100+
101+
ENTRYPOINT ["/entrypoint.sh"]
102+
103+
RUN bitcoind -version | grep "Bitcoin Core daemon version v${PADDED_VERSION}"
104+
105+
CMD ["bitcoind"]
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
#!/bin/sh
2+
set -e
3+
4+
if [ -n "${UID+x}" ] && [ "${UID}" != "0" ]; then
5+
usermod -u "$UID" bitcoin
6+
fi
7+
8+
if [ -n "${GID+x}" ] && [ "${GID}" != "0" ]; then
9+
groupmod -g "$GID" bitcoin
10+
fi
11+
12+
echo "$0: assuming uid:gid for bitcoin:bitcoin of $(id -u bitcoin):$(id -g bitcoin)"
13+
14+
if [ "$(echo "$1" | cut -c1)" = "-" ]; then
15+
echo "$0: assuming arguments for bitcoind"
16+
17+
set -- bitcoind "$@"
18+
fi
19+
20+
if [ "$(echo "$1" | cut -c1)" = "-" ] || [ "$1" = "bitcoind" ]; then
21+
mkdir -p "$BITCOIN_DATA"
22+
chmod 700 "$BITCOIN_DATA"
23+
# Fix permissions for home dir.
24+
chown -R bitcoin:bitcoin "$(getent passwd bitcoin | cut -d: -f6)"
25+
# Fix permissions for bitcoin data dir.
26+
chown -R bitcoin:bitcoin "$BITCOIN_DATA"
27+
28+
echo "$0: setting data directory to $BITCOIN_DATA"
29+
30+
set -- "$@" -datadir="$BITCOIN_DATA"
31+
fi
32+
33+
if [ "$1" = "bitcoind" ] || [ "$1" = "bitcoin-cli" ] || [ "$1" = "bitcoin-tx" ]; then
34+
echo
35+
exec su-exec bitcoin "$@"
36+
fi
37+
38+
echo
39+
exec "$@"

0 commit comments

Comments
 (0)