Skip to content

Commit 2cf5ad6

Browse files
committed
switch to multi-arch
1 parent 8a76313 commit 2cf5ad6

File tree

3 files changed

+31
-18
lines changed

3 files changed

+31
-18
lines changed

.github/workflows/BuildImage.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ env:
77
ENDPOINT: "linuxserver/mods" #don't modify
88
BASEIMAGE: "universal" #replace
99
MODNAME: "cloudflared" #replace
10+
MULTI_ARCH: "true" #set to true if needed
1011

1112
jobs:
1213
set-vars:
@@ -19,6 +20,7 @@ jobs:
1920
echo "ENDPOINT=${{ env.ENDPOINT }}" >> $GITHUB_OUTPUT
2021
echo "BASEIMAGE=${{ env.BASEIMAGE }}" >> $GITHUB_OUTPUT
2122
echo "MODNAME=${{ env.MODNAME }}" >> $GITHUB_OUTPUT
23+
echo "MULTI_ARCH=${{ env.MULTI_ARCH }}" >> $GITHUB_OUTPUT
2224
# **** If the mod needs to be versioned, set the versioning logic below. Otherwise leave as is. ****
2325
MOD_VERSION=$(curl -s https://api.github.com/repos/cloudflare/cloudflared/releases/latest | jq -rc ".tag_name")
2426
echo "MOD_VERSION=${MOD_VERSION}" >> $GITHUB_OUTPUT
@@ -27,6 +29,7 @@ jobs:
2729
ENDPOINT: ${{ steps.outputs.outputs.ENDPOINT }}
2830
BASEIMAGE: ${{ steps.outputs.outputs.BASEIMAGE }}
2931
MODNAME: ${{ steps.outputs.outputs.MODNAME }}
32+
MULTI_ARCH: ${{ steps.outputs.outputs.MULTI_ARCH }}
3033
MOD_VERSION: ${{ steps.outputs.outputs.MOD_VERSION }}
3134

3235
build:
@@ -42,4 +45,5 @@ jobs:
4245
ENDPOINT: ${{ needs.set-vars.outputs.ENDPOINT }}
4346
BASEIMAGE: ${{ needs.set-vars.outputs.BASEIMAGE }}
4447
MODNAME: ${{ needs.set-vars.outputs.MODNAME }}
48+
MULTI_ARCH: ${{ needs.set-vars.outputs.MULTI_ARCH }}
4549
MOD_VERSION: ${{ needs.set-vars.outputs.MOD_VERSION }}

Dockerfile

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# syntax=docker/dockerfile:1
22

33
# Build container
4-
FROM ghcr.io/linuxserver/baseimage-alpine:3.18 AS buildstage
4+
FROM ghcr.io/linuxserver/baseimage-alpine:3.19 AS buildstage
55

66
ARG MOD_VERSION
77

@@ -11,14 +11,24 @@ RUN \
1111
MOD_VERSION=$(curl -s https://api.github.com/repos/cloudflare/cloudflared/releases/latest \
1212
| jq -rc ".tag_name"); \
1313
fi && \
14-
echo "**** grab binaries ****" && \
1514
mkdir -p /root-layer/cloudflared && \
16-
curl -fo \
17-
/root-layer/cloudflared/cloudflared-amd64 -L \
18-
"https://github.com/cloudflare/cloudflared/releases/download/${MOD_VERSION}/cloudflared-linux-amd64" && \
19-
curl -fo \
20-
/root-layer/cloudflared/cloudflared-arm64 -L \
21-
"https://github.com/cloudflare/cloudflared/releases/download/${MOD_VERSION}/cloudflared-linux-arm64" && \
15+
if [ $(uname -m) = "x86_64" ]; then \
16+
echo "**** Downloading x86_64 binaries ****" && \
17+
curl -fo \
18+
/root-layer/cloudflared/cloudflared -L \
19+
"https://github.com/cloudflare/cloudflared/releases/download/${MOD_VERSION}/cloudflared-linux-amd64" && \
20+
curl -fo \
21+
/root-layer/cloudflared/yq -L \
22+
"https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64"; \
23+
elif [ $(uname -m) = "aarch64" ]; then \
24+
echo "**** Downloading aarch64 binaries ****" && \
25+
curl -fo \
26+
/root-layer/cloudflared/cloudflared -L \
27+
"https://github.com/cloudflare/cloudflared/releases/download/${MOD_VERSION}/cloudflared-linux-arm64" && \
28+
curl -fo \
29+
/root-layer/cloudflared/yq -L \
30+
"https://github.com/mikefarah/yq/releases/latest/download/yq_linux_arm64"; \
31+
fi && \
2232
chmod +x /root-layer/cloudflared/*
2333

2434
COPY root/ /root-layer/

root/etc/s6-overlay/s6-rc.d/init-mod-universal-cloudflared-setup/run

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,15 @@ else
1717
fi
1818
echo "**** Linux architecture found: ${ARCH} ****"
1919

20-
echo "**** Checking for cloudflared setup script dependencies... ****"
21-
YQARCH="${ARCH}"
22-
echo "**** Temporarily installing /tmp/yq... ****"
23-
curl -sLo /tmp/yq https://github.com/mikefarah/yq/releases/latest/download/yq_linux_${YQARCH}
24-
chmod +x /tmp/yq
25-
2620
echo "**** Installing cloudflared...****"
2721
if [ -d "/cloudflared/" ]; then
28-
echo "**** Moving /cloudflared/cloudflared-${ARCH} to /usr/local/bin/cloudflared... ****"
29-
mv /cloudflared/cloudflared-${ARCH} /usr/local/bin/cloudflared
22+
if ! command -v yq || ! yq --help | grep -q 'mikefarah'; then
23+
echo "**** Installing yq ****"
24+
mv /cloudflared/yq /usr/local/bin/yq
25+
fi
26+
27+
echo "**** Moving /cloudflared/cloudflared to /usr/local/bin/cloudflared... ****"
28+
mv /cloudflared/cloudflared /usr/local/bin/cloudflared
3029

3130
echo "**** Deleting tmp /cloudflared dir... ****"
3231
rm -rf /cloudflared
@@ -92,14 +91,14 @@ if [[ ${#CF_ZONE_ID} -gt 0 ]] && [[ ${#CF_ACCOUNT_ID} -gt 0 ]] && [[ ${#CF_API_T
9291
printf "credentials-file: /etc/cloudflared/${CF_TUNNEL_ID}.json\n" >> "/etc/cloudflared/config.yml"
9392
printf "no-autoupdate: true\n\n" >> "/etc/cloudflared/config.yml"
9493
printf "${CF_TUNNEL_CONFIG}" >> "/etc/cloudflared/config.yml"
95-
/tmp/yq e /etc/cloudflared/config.yml
94+
yq e /etc/cloudflared/config.yml
9695
echo "**** Config for cloudflare tunnel (${CF_TUNNEL_NAME}) saved to /etc/cloudflared/config.yml ****"
9796

9897
echo "**** Validating cloudflared tunnel rules... ****"
9998
cloudflared tunnel ingress validate
10099

101100
echo "**** Updating cloudflare zone... ****"
102-
for HOSTNAME in $(/tmp/yq e ".ingress.[].hostname" /etc/cloudflared/config.yml); do
101+
for HOSTNAME in $(yq e ".ingress.[].hostname" /etc/cloudflared/config.yml); do
103102
if [ ! "${HOSTNAME}" = "null" ]; then
104103
echo "**** Searching zone for hostname (${HOSTNAME}) via API... ****"
105104
JSON_RESULT=$(curl -sX \

0 commit comments

Comments
 (0)