diff --git a/.gitea/workflows/docker.yml b/.gitea/workflows/docker.yml index 3cbfc8f..1372bd3 100644 --- a/.gitea/workflows/docker.yml +++ b/.gitea/workflows/docker.yml @@ -40,32 +40,49 @@ jobs: - name: Build dist in Node container run: | set -e - # ensure curl available - if ! command -v curl >/dev/null 2>&1; then + # ensure tools + install_pkgs() { + PKGS="$*" if command -v apt-get >/dev/null 2>&1; then apt-get update -y - apt-get install -y curl ca-certificates + apt-get install -y $PKGS elif command -v yum >/dev/null 2>&1; then - yum install -y curl ca-certificates + yum install -y $PKGS elif command -v dnf >/dev/null 2>&1; then - dnf install -y curl ca-certificates + dnf install -y $PKGS elif command -v apk >/dev/null 2>&1; then - apk add --no-cache curl ca-certificates + apk add --no-cache $PKGS elif command -v zypper >/dev/null 2>&1; then - zypper install -y curl ca-certificates + zypper install -y $PKGS else - echo "No known package manager found to install curl"; exit 1 + echo "No known package manager found to install: $PKGS"; exit 1 fi + } + if ! command -v curl >/dev/null 2>&1; then install_pkgs curl ca-certificates; fi + if ! command -v tar >/dev/null 2>&1; then install_pkgs tar; fi + # xz is needed to extract Node tar.xz + if ! command -v xz >/dev/null 2>&1 && ! command -v unxz >/dev/null 2>&1; then install_pkgs xz-utils || install_pkgs xz; fi + + # install Node by downloading official binary (avoid building from source) + if ! command -v node >/dev/null 2>&1; then + NODE_VER="v20.19.6" + ARCH="$(uname -m)" + case "$ARCH" in + x86_64) NODE_ARCH="linux-x64" ;; + aarch64) NODE_ARCH="linux-arm64" ;; + arm64) NODE_ARCH="linux-arm64" ;; + *) echo "Unsupported arch: $ARCH"; exit 1 ;; + esac + NODE_TARBALL="node-${NODE_VER}-${NODE_ARCH}.tar.xz" + URL="https://nodejs.org/dist/${NODE_VER}/${NODE_TARBALL}" + echo "Downloading Node from $URL" + curl -fsSL "$URL" -o "/tmp/${NODE_TARBALL}" + mkdir -p "$HOME/node" + tar -xJf "/tmp/${NODE_TARBALL}" -C "$HOME/node" + NODE_DIR="$HOME/node/node-${NODE_VER}-${NODE_ARCH}" + export PATH="$NODE_DIR/bin:$PATH" fi - export NVM_DIR="$HOME/.nvm" - if [ ! -d "$NVM_DIR" ]; then - curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash - fi - . "$NVM_DIR/nvm.sh" - nvm install 20 - nvm use 20 - node -v - npm -v + node -v && npm -v npm ci echo "VITE_APP_BASE_URL=${VITE_APP_BASE_URL}" > .env.pord npm run build:prod