update multiarch build
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
2025-03-26 23:52:43 +01:00
parent c4bec8ef22
commit 7da161ce64
4 changed files with 139 additions and 30 deletions

View File

@@ -1,26 +1,70 @@
---
kind: pipeline
type: kubernetes
name: build
name: linux-amd64
platform:
os: linux
arch: amd64
# arch: arm64
trigger:
event:
- push
steps:
- name: docker
image: plugins/docker
settings:
dockerfile: docker/Dockerfile.amd64
username:
from_secret: docker_username
password:
from_secret: docker_password
repo: bottledpills/deluge-openvpn
tags:
- dev
auto_tag: true
auto_tag_suffix: linux-amd64
---
kind: pipeline
type: kubernetes
name: linux-arm64
platform:
- linux/amd64
- linux/arm64
os: linux
arch: arm64
trigger:
event:
- push
steps:
- name: docker
image: plugins/docker
settings:
dockerfile: docker/Dockerfile.arm64
username:
from_secret: docker_username
password:
from_secret: docker_password
repo: bottledpills/deluge-openvpn
auto_tag: true
auto_tag_suffix: linux-arm64
---
kind: pipeline
type: kubernetes
name: manifest
platform:
os: linux
arch: amd64
trigger:
event:
- push
steps:
- name: manifest
image: plugins/manifest
settings:
spec: docker/manifest.tmpl
username:
from_secret: docker_username
password:
from_secret: docker_password
auto_tag: true
ignore_missing: true
depends_on:
- linux-amd64
- linux-arm64

View File

@@ -9,28 +9,12 @@ RUN apt-get update && apt-get -y install curl software-properties-common
# Step 2: Add the Deluge PPA and update apt cache
RUN add-apt-repository -u ppa:deluge-team/stable && apt-get update
# Step 3: Download dumb-init asset based on architecture
RUN arch=$(dpkg --print-architecture) && \
if [ "$arch" = "arm64" ]; then \
asset="dumb-init_1.2.5_aarch64"; \
elif [ "$arch" = "amd64" ]; then \
asset="dumb-init_1.2.5_amd64.deb"; \
else \
echo "Unsupported architecture: $arch" && exit 1; \
fi && \
echo "Downloading dumb-init asset: $asset" && \
curl -Lo /tmp/dumb-init "$DUMB_INIT_BASE_URL/$asset"
# Step 3: Download dumb-init asset for amd64
RUN curl -Lo /tmp/dumb-init "$DUMB_INIT_BASE_URL/dumb-init_1.2.5_amd64.deb"
# Step 4: Install dumb-init based on asset type
RUN arch=$(dpkg --print-architecture) && \
if [ "$arch" = "amd64" ]; then \
dpkg-deb -x /tmp/dumb-init /tmp/dumb-init-dir && \
cp /tmp/dumb-init-dir/usr/bin/dumb-init /usr/local/bin/dumb-init; \
elif [ "$arch" = "arm64" ]; then \
cp /tmp/dumb-init /usr/local/bin/dumb-init; \
else \
echo "Unsupported architecture: $arch" && exit 1; \
fi && \
# Step 4: Install dumb-init for amd64
RUN dpkg-deb -x /tmp/dumb-init /tmp/dumb-init-dir && \
cp /tmp/dumb-init-dir/usr/bin/dumb-init /usr/local/bin/dumb-init && \
chmod +x /usr/local/bin/dumb-init && \
rm -rf /tmp/dumb-init /tmp/dumb-init-dir

69
docker/Dockerfile.arm64 Normal file
View File

@@ -0,0 +1,69 @@
FROM ubuntu:22.04
ARG DEBIAN_FRONTEND="noninteractive"
ENV DUMB_INIT_BASE_URL="https://github.com/Yelp/dumb-init/releases/download/v1.2.5"
# Step 1: Install prerequisites
RUN apt-get update && apt-get -y install curl software-properties-common
# Step 2: Add the Deluge PPA and update apt cache
RUN add-apt-repository -u ppa:deluge-team/stable && apt-get update
# Step 3: Download dumb-init asset for arm64
RUN curl -Lo /tmp/dumb-init "$DUMB_INIT_BASE_URL/dumb-init_1.2.5_aarch64"
# Step 4: Install dumb-init for arm64
RUN cp /tmp/dumb-init /usr/local/bin/dumb-init && \
chmod +x /usr/local/bin/dumb-init && \
rm -rf /tmp/dumb-init
# Step 5: Install other dependencies
RUN apt-get -y install iputils-ping dnsutils bash jq net-tools openvpn curl ufw deluged deluge-web p7zip-full unrar unzip
# Step 6: Clean up apt cache and temporary files
RUN rm -rf /tmp/* /var/lib/apt/lists/* /var/tmp/*
# Step 7: Add the user "abc"
RUN groupmod -g 1000 users && \
useradd -u 911 -U -d /config -s /bin/false abc && \
usermod -G users abc
# Step 8: Copy configuration and scripts
COPY root/ /
# Step 9: Set environment variables
ENV OPENVPN_USERNAME=**None** \
OPENVPN_PASSWORD=**None** \
OPENVPN_PROVIDER=**None** \
GLOBAL_APPLY_PERMISSIONS=true \
TZ=Europe/Berlin \
DELUGE_WEB_PORT=8112 \
DELUGE_DEAMON_PORT=58846 \
DELUGE_DOWNLOAD_DIR=/download/completed \
DELUGE_INCOMPLETE_DIR=/download/incomplete \
DELUGE_TORRENT_DIR=/download/torrents \
DELUGE_WATCH_DIR=/download/watch \
CREATE_TUN_DEVICE=true \
ENABLE_UFW=false \
UFW_ALLOW_GW_NET=false \
UFW_EXTRA_PORTS= \
UFW_DISABLE_IPTABLES_REJECT=false \
PUID= \
PGID= \
UMASK=022 \
PEER_DNS=true \
PEER_DNS_PIN_ROUTES=true \
DROP_DEFAULT_ROUTE= \
HEALTH_CHECK_HOST=google.com \
LOG_TO_STDOUT=false \
DELUGE_LISTEN_PORT_LOW=53394 \
DELUGE_LISTEN_PORT_HIGH=53404 \
DELUGE_OUTGOING_PORT_LOW=63394 \
DELUGE_OUTGOING_PORT_HIGH=63404
# Step 10: Configure health check and expose ports
HEALTHCHECK --interval=1m CMD /etc/scripts/healthcheck.sh
EXPOSE 8112 58846
# Step 11: Set default command
CMD ["/usr/local/bin/dumb-init", "/etc/openvpn/init.sh"]

12
docker/manifest.tmpl Normal file
View File

@@ -0,0 +1,12 @@
image: bottledpills/deluge-openvpn:{{#if build.tag}}{{trimPrefix "v" build.tag}}{{else}}latest{{/if}}
manifests:
-
image: bottledpills/deluge-openvpn:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}linux-amd64
platform:
architecture: amd64
os: linux
-
image: bottledpills/deluge-openvpn:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}linux-arm64
platform:
architecture: arm64
os: linux