Skip to content

Commit f1414e6

Browse files
author
ImageManager Bot
committed
fix(arm): target generic ARM64 runners, not the single ella-n003 host
Runner selection now emits [self-hosted, ARM64] for arm (mirrors x86's [self-hosted, X64]) so any ARM64 self-hosted runner picks up the work instead of pinning to ella-n003. Also made setup-rclone arch-portable: added a static rclone-download fallback (arch-detected, via downloads.rclone.org, persisted to $GITHUB_PATH) after the Setonix-module / spack methods, so ARM64 rclone no longer depends on Ella's spack. Singularity availability stays a runner-provisioning expectation (no simple static install).
1 parent 1baaca1 commit f1414e6

2 files changed

Lines changed: 50 additions & 7 deletions

File tree

.github/actions/setup-rclone/action.yml

Lines changed: 46 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -109,8 +109,8 @@ runs:
109109
fi
110110
fi
111111
112-
# Method 3: Try Ella/ARM spack method (module load spack + spack load rclone)
113-
echo "Trying Ella/ARM spack method..."
112+
# Method 3: spack (e.g. Ella) — module load spack + spack load rclone
113+
echo "Trying spack (module load spack + spack load rclone)..."
114114
if module load spack 2>/dev/null; then
115115
if spack load rclone 2>/dev/null; then
116116
if command -v rclone >/dev/null 2>&1; then
@@ -122,12 +122,40 @@ runs:
122122
fi
123123
fi
124124
125+
# Method 4: static rclone binary for this architecture. Works on ANY
126+
# self-hosted runner with outbound internet — no Setonix module / Ella
127+
# spack required, so ARM64 work isn't tied to one host. Persisted via
128+
# $GITHUB_PATH so later steps find it in PATH.
129+
echo "Trying static rclone download..."
130+
case "$(uname -m)" in
131+
aarch64|arm64) RARCH=arm64 ;;
132+
x86_64|amd64) RARCH=amd64 ;;
133+
*) RARCH="" ;;
134+
esac
135+
if [ -n "$RARCH" ]; then
136+
RBIN="${RUNNER_TEMP:-/tmp}/rclone-bin"
137+
mkdir -p "$RBIN"
138+
if curl -fsSL "https://downloads.rclone.org/rclone-current-linux-${RARCH}.zip" -o "$RBIN/rclone.zip" 2>/dev/null \
139+
&& unzip -o -j "$RBIN/rclone.zip" '*/rclone' -d "$RBIN" >/dev/null 2>&1 \
140+
&& chmod +x "$RBIN/rclone"; then
141+
echo "$RBIN" >> "$GITHUB_PATH"
142+
export PATH="$RBIN:$PATH"
143+
if command -v rclone >/dev/null 2>&1; then
144+
echo "✓ rclone installed via static download ($RARCH)"
145+
rclone version
146+
echo "loaded=true" >> $GITHUB_OUTPUT
147+
exit 0
148+
fi
149+
fi
150+
fi
151+
125152
# All methods failed
126153
echo "✗ Failed to load rclone using any available method"
127154
echo "Tried:"
128155
echo " 1. Direct PATH lookup"
129156
echo " 2. module load rclone/1.68.1 (Setonix)"
130-
echo " 3. module load spack && spack load rclone (Ella/ARM)"
157+
echo " 3. module load spack && spack load rclone"
158+
echo " 4. static download from downloads.rclone.org"
131159
exit 1
132160
133161
- name: Configure rclone (local config)
@@ -140,14 +168,27 @@ runs:
140168
if command -v rclone >/dev/null 2>&1; then
141169
return 0
142170
fi
143-
# Try Setonix method
171+
# Setonix module
144172
if module load rclone/1.68.1 2>/dev/null && command -v rclone >/dev/null 2>&1; then
145173
return 0
146174
fi
147-
# Try Ella/ARM spack method
175+
# spack (e.g. Ella)
148176
if module load spack 2>/dev/null && spack load rclone 2>/dev/null && command -v rclone >/dev/null 2>&1; then
149177
return 0
150178
fi
179+
# static download fallback (any runner with outbound internet)
180+
local rarch=""
181+
case "$(uname -m)" in aarch64|arm64) rarch=arm64 ;; x86_64|amd64) rarch=amd64 ;; esac
182+
if [ -n "$rarch" ]; then
183+
local rbin="${RUNNER_TEMP:-/tmp}/rclone-bin"
184+
mkdir -p "$rbin"
185+
if [ ! -x "$rbin/rclone" ]; then
186+
curl -fsSL "https://downloads.rclone.org/rclone-current-linux-${rarch}.zip" -o "$rbin/rclone.zip" 2>/dev/null \
187+
&& unzip -o -j "$rbin/rclone.zip" '*/rclone' -d "$rbin" >/dev/null 2>&1 && chmod +x "$rbin/rclone" || true
188+
fi
189+
export PATH="$rbin:$PATH"
190+
command -v rclone >/dev/null 2>&1 && return 0
191+
fi
151192
echo "✗ rclone not available"
152193
return 1
153194
}

.github/workflows/reusable-prepare.yml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -422,12 +422,14 @@ jobs:
422422
if: steps.validate_manifest.outputs.proceed_valid == 'true'
423423
run: |
424424
platform="${{ steps.validate_manifest.outputs.platform }}"
425+
# Generic architecture labels — any self-hosted runner of the right arch
426+
# picks up the work (no per-host pinning like the old 'ella-n003').
425427
if [ "$platform" = "arm" ]; then
426-
echo 'runner_label=["ella-n003"]' >> $GITHUB_OUTPUT
428+
echo 'runner_label=["self-hosted","ARM64"]' >> $GITHUB_OUTPUT
427429
else
428430
echo 'runner_label=["self-hosted","X64"]' >> $GITHUB_OUTPUT
429431
fi
430-
echo "Selected runner: $([ "$platform" = "arm" ] && echo "ella-n003" || echo "setonix-podman02") for platform: $platform"
432+
echo "Selected runner: self-hosted/$([ "$platform" = "arm" ] && echo ARM64 || echo X64) for platform: $platform"
431433
432434
- name: Generate date tag
433435
if: steps.validate_manifest.outputs.proceed_valid == 'true'

0 commit comments

Comments
 (0)