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:
79
release.sh
79
release.sh
@@ -1,43 +1,70 @@
|
||||
#!/bin/bash
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Build and tag container images for each service based upon passed argument; monerod, nodemapper, or exporter
|
||||
# All are manually tagged since some do not update as frequently as others. Bump the script
|
||||
# to bump the image stored on Dockerhub.
|
||||
# Build and tag container images for each service based upon the passed argument.
|
||||
# This version builds multi-arch images (linux/amd64 and linux/arm64) using Docker Buildx.
|
||||
# Make sure you have set up buildx and QEMU emulation (if building on a different arch).
|
||||
#
|
||||
# Example usage:
|
||||
# ./release.sh monero
|
||||
# ./release.sh exporter
|
||||
|
||||
set -ex
|
||||
|
||||
IMAGE=${1}
|
||||
DH_USER=lalanza808
|
||||
DH_USER=${2:-lalanza808}
|
||||
MONERO_VERSION=v0.18.3.4
|
||||
MONERO_BASE=${DH_USER}/monero
|
||||
EXPORTER_VERSION=1.0.0
|
||||
EXPORTER_BASE=${DH_USER}/exporter
|
||||
NODEMAPPER_VERSION=1.0.3
|
||||
NODEMAPPER_BASE=${DH_USER}/nodemapper
|
||||
TOR_VERSION=$(sed -n 's/^FROM ubuntu:\(.*\) *$/\1/p' dockerfiles/tor)
|
||||
TOR_BASE=${DH_USER}/tor
|
||||
I2P_VERSION=$(sed -n 's/^FROM ubuntu:\(.*\) *$/\1/p' dockerfiles/i2p)
|
||||
I2P_BASE=${DH_USER}/i2p
|
||||
|
||||
if [[ "${IMAGE}" == "nodemapper" ]]
|
||||
then
|
||||
echo -e "[+] Building nodemapper"
|
||||
docker build -t "${NODEMAPPER_BASE}:${NODEMAPPER_VERSION}" -f dockerfiles/nodemapper .
|
||||
docker tag "${NODEMAPPER_BASE}:${NODEMAPPER_VERSION}" "${NODEMAPPER_BASE}:latest"
|
||||
docker push "${NODEMAPPER_BASE}:${NODEMAPPER_VERSION}"
|
||||
docker push "${NODEMAPPER_BASE}:latest"
|
||||
if [[ "${IMAGE}" == "nodemapper" ]]; then
|
||||
echo -e "[+] Building nodemapper multi-arch (amd64 & arm64)"
|
||||
docker buildx build --platform linux/amd64,linux/arm64 \
|
||||
-t "${NODEMAPPER_BASE}:${NODEMAPPER_VERSION}" \
|
||||
-t "${NODEMAPPER_BASE}:latest" \
|
||||
-f dockerfiles/nodemapper . \
|
||||
--push
|
||||
fi
|
||||
|
||||
if [[ "${IMAGE}" == "exporter" ]]
|
||||
then
|
||||
echo -e "[+] Building exporter"
|
||||
docker build -t "${EXPORTER_BASE}:${EXPORTER_VERSION}" -f dockerfiles/exporter .
|
||||
docker tag "${EXPORTER_BASE}:${EXPORTER_VERSION}" "${EXPORTER_BASE}:latest"
|
||||
docker push "${EXPORTER_BASE}:${EXPORTER_VERSION}"
|
||||
docker push "${EXPORTER_BASE}:latest"
|
||||
if [[ "${IMAGE}" == "exporter" ]]; then
|
||||
echo -e "[+] Building exporter multi-arch (amd64 & arm64)"
|
||||
docker buildx build --platform linux/amd64,linux/arm64 \
|
||||
-t "${EXPORTER_BASE}:${EXPORTER_VERSION}" \
|
||||
-t "${EXPORTER_BASE}:latest" \
|
||||
-f dockerfiles/exporter . \
|
||||
--push
|
||||
fi
|
||||
|
||||
if [[ "${IMAGE}" == "monero" ]]
|
||||
then
|
||||
echo -e "[+] Building monero"
|
||||
docker build -t "${MONERO_BASE}:${MONERO_VERSION}" -f dockerfiles/monero .
|
||||
docker tag "${MONERO_BASE}:${MONERO_VERSION}" "${MONERO_BASE}:latest"
|
||||
docker push "${MONERO_BASE}:${MONERO_VERSION}"
|
||||
docker push "${MONERO_BASE}:latest"
|
||||
if [[ "${IMAGE}" == "monero" ]]; then
|
||||
echo -e "[+] Building monero multi-arch (amd64 & arm64)"
|
||||
docker buildx build --platform linux/amd64,linux/arm64 \
|
||||
-t "${MONERO_BASE}:${MONERO_VERSION}" \
|
||||
-t "${MONERO_BASE}:latest" \
|
||||
-f dockerfiles/monero . \
|
||||
--push
|
||||
fi
|
||||
|
||||
if [[ "${IMAGE}" == "tor" ]]; then
|
||||
echo -e "[+] Building tor multi-arch (amd64 & arm64)"
|
||||
docker buildx build --platform linux/amd64,linux/arm64 \
|
||||
-t "${TOR_BASE}:${TOR_VERSION}" \
|
||||
-t "${TOR_BASE}:latest" \
|
||||
-f dockerfiles/tor . \
|
||||
--push
|
||||
fi
|
||||
|
||||
if [[ "${IMAGE}" == "i2p" ]]; then
|
||||
echo -e "[+] Building i2p multi-arch (amd64 & arm64)"
|
||||
docker buildx build --platform linux/amd64,linux/arm64 \
|
||||
-t "${I2P_BASE}:${I2P_VERSION}" \
|
||||
-t "${I2P_BASE}:latest" \
|
||||
-f dockerfiles/i2p . \
|
||||
--push
|
||||
fi
|
||||
|
||||
|
||||
Reference in New Issue
Block a user