Multi-arch builds (#32)

* feat: enable multi-arch builds and add tor and i2p images

This commit introduces multi-architecture support (amd64 & arm64)
for Docker image builds using Docker Buildx. It also adds new
images for tor and i2p services. The release script is updated to
handle these new images and to accept a Docker Hub username as an
argument. The publish workflow is updated to use the new release
script and to set up QEMU and Docker Buildx.

* feat(publish.yaml): add workflow_dispatch trigger to publish workflow
feat(publish.yaml): allow publish workflow to run when workflow_dispatch event is triggered

* feat(dockerfiles/monero): add support for ARM64 architecture

* build(dockerfiles/monero): remove duplicate FROM instruction

release(monero)
This commit is contained in:
José Luis
2025-04-06 05:40:32 +01:00
committed by GitHub
parent 6ac1b7fbe5
commit 9f68453bda
4 changed files with 206 additions and 60 deletions

View File

@@ -1,12 +1,23 @@
FROM ubuntu:22.04
ENV DEBIAN_FRONTEND noninteractive
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && \
apt-get install wget sudo -y
RUN wget https://github.com/PurpleI2P/i2pd/releases/download/2.54.0/i2pd_2.54.0-1jammy1_amd64.deb -O i2pd.deb -q
RUN apt install ./i2pd.deb -y
RUN rm -rf i2p.deb && \
RUN apt-get update && apt-get install -y wget sudo
# Detect architecture and use it immediately to download and install the corresponding i2pd package.
RUN set -ex; \
arch=$(uname -m); \
if [ "$arch" = "x86_64" ]; then \
ARCH="amd64"; \
elif [ "$arch" = "aarch64" ]; then \
ARCH="arm64"; \
else \
echo "Unsupported architecture: $arch" && exit 1; \
fi; \
echo "Using architecture: $ARCH"; \
wget "https://github.com/PurpleI2P/i2pd/releases/download/2.54.0/i2pd_2.54.0-1jammy1_${ARCH}.deb" -O i2pd.deb -q && \
apt install ./i2pd.deb -y && \
rm -rf i2pd.deb && \
apt clean all && \
apt autoremove -y

View File

@@ -1,9 +1,14 @@
FROM ubuntu:22.04 AS og
ENV MONERO_HASH 51ba03928d189c1c11b5379cab17dd9ae8d2230056dc05c872d0f8dba4a87f1d
ENV MONERO_DL_URL https://downloads.getmonero.org/cli/monero-linux-x64-v0.18.3.4.tar.bz2
ENV MONERO_DL_FILE monero.tar.bz2
ENV MONERO_SUMS_FILE sha256sums
# Define the Monero version
ENV MONERO_VERSION=0.18.3.4
ENV MONERO_HASH_X64=51ba03928d189c1c11b5379cab17dd9ae8d2230056dc05c872d0f8dba4a87f1d
ENV MONERO_DL_URL_X64=https://downloads.getmonero.org/cli/monero-linux-x64-v${MONERO_VERSION}.tar.bz2
ENV MONERO_HASH_ARMV8=33ca2f0055529d225b61314c56370e35606b40edad61c91c859f873ed67a1ea7
ENV MONERO_DL_URL_ARMV8=https://downloads.getmonero.org/cli/monero-linux-armv8-v${MONERO_VERSION}.tar.bz2
ENV MONERO_DL_FILE=monero.tar.bz2
ENV MONERO_SUMS_FILE=sha256sums
WORKDIR /opt/monero
@@ -16,20 +21,33 @@ RUN apt-get update \
# Confirm hashes match
# Install daemon binary
# Clean up
RUN wget -qO ${MONERO_DL_FILE} ${MONERO_DL_URL} \
&& echo "${MONERO_HASH} ${MONERO_DL_FILE}" > ${MONERO_SUMS_FILE} \
&& sha256sum -c ${MONERO_SUMS_FILE}; \
if [ "$?" -eq 0 ]; \
then \
RUN \
# Detect architecture and set URL/hash accordingly \
if [ "$(uname -m)" = "x86_64" ]; then \
echo "Architecture x86_64 detected"; \
export MONERO_DL_URL=${MONERO_DL_URL_X64}; \
export MONERO_HASH=${MONERO_HASH_X64}; \
elif [ "$(uname -m)" = "aarch64" ]; then \
echo "Architecture ARM64 detected"; \
export MONERO_DL_URL=${MONERO_DL_URL_ARMV8}; \
export MONERO_HASH=${MONERO_HASH_ARMV8}; \
else \
echo "Unsupported architecture: $(uname -m)"; exit 1; \
fi && \
echo "Using URL: ${MONERO_DL_URL}" && \
wget -qO ${MONERO_DL_FILE} ${MONERO_DL_URL} && \
echo "${MONERO_HASH} ${MONERO_DL_FILE}" > ${MONERO_SUMS_FILE} && \
sha256sum -c ${MONERO_SUMS_FILE}; \
if [ "$?" -eq 0 ]; then \
echo -e "[+] Hashes match - proceeding with container build"; \
else \
echo -e "[!] Hashes do not match - exiting"; \
exit 5; \
fi \
&& mkdir ./tmp \
&& tar xjf ${MONERO_DL_FILE} -C ./tmp --strip 1 \
&& mv ./tmp/* /usr/local/bin/ \
&& rm -rf ./tmp ${MONERO_SUMS_FILE} ${MONERO_DL_FILE}
fi && \
mkdir ./tmp && \
tar xjf ${MONERO_DL_FILE} -C ./tmp --strip 1 && \
mv ./tmp/* /usr/local/bin/ && \
rm -rf ./tmp ${MONERO_SUMS_FILE} ${MONERO_DL_FILE}
# Download ban list
RUN wget -qO /tmp/ban_list.txt "https://raw.githubusercontent.com/Boog900/monero-ban-list/main/ban_list.txt"