diff --git a/.gitea/workflows/ci-cd.yaml b/.gitea/workflows/ci-cd.yaml index 5346ad6..216efe7 100644 --- a/.gitea/workflows/ci-cd.yaml +++ b/.gitea/workflows/ci-cd.yaml @@ -14,8 +14,24 @@ jobs: - name: Checkout code uses: actions/checkout@v4 - - name: Setup Bun - uses: oven-sh/setup-bun@v2 + - name: Install Bun + run: | + if ! command -v unzip >/dev/null; then + (command -v apt-get >/dev/null && apt-get update && apt-get install -y unzip) || \ + (command -v apk >/dev/null && apk add --no-cache unzip) + fi + arch=$(uname -m) + case "$arch" in x86_64) target=x64 ;; aarch64|arm64) target=aarch64 ;; *) echo "unsupported arch: $arch"; exit 1 ;; esac + # musl images (Alpine) need the -musl build; the glibc one fails with spawn ENOENT + libc="" + if ldd --version 2>&1 | grep -qi musl; then libc="-musl"; fi + curl -fsSL -o /tmp/bun.zip "https://github.com/oven-sh/bun/releases/latest/download/bun-linux-${target}${libc}.zip" + unzip -q -o /tmp/bun.zip -d /tmp/bun-extract + mkdir -p "$HOME/.bun/bin" + mv /tmp/bun-extract/bun-linux-*/bun "$HOME/.bun/bin/bun" + chmod +x "$HOME/.bun/bin/bun" + echo "$HOME/.bun/bin" >> $GITHUB_PATH + "$HOME/.bun/bin/bun" --version - name: Install dependencies run: bun install --frozen-lockfile