#!/usr/bin/env bash # Подготовка Linux-раннера Gitea Actions для сборки BiLauncher (Ubuntu 22.04). # # Qt (~/Qt/6.11.1/gcc_64 с WebEngine), CMake и Ninja (~/Qt/Tools) ставятся заранее # через Qt Online Installer — скрипт их не трогает, а докачивает только то, чего Qt # не даёт: компилятор, системные библиотеки для сборки и деплоя, Node.js (для # actions/checkout), appimagetool и сам gitea-runner. Повторный запуск безопасен. # # Запуск от пользователя, которому принадлежит Qt (нужен sudo без пароля): # ./setup-runner-linux.sh [токен регистрации] set -euo pipefail TOKEN="${1:-}" INSTANCE="${INSTANCE:-https://projects-live.galeonworx.com}" RUNNER_NAME="${RUNNER_NAME:-linux-vm}" RUNNER_VERSION="${RUNNER_VERSION:-4.1.0}" QT_ROOT="${QT_ROOT:-$HOME/Qt/6.11.1/gcc_64}" QT_TOOLS="${QT_TOOLS:-$HOME/Qt/Tools}" RDIR="$HOME/act_runner" [ -d "$QT_ROOT/lib/cmake/Qt6WebEngineQuick" ] || { echo "Нет Qt с WebEngine в $QT_ROOT" >&2; exit 1; } # --- Компилятор и библиотеки --------------------------------------------------- # libgl1-mesa-dev — заголовки OpenGL для Qt6::Gui; xcb-* и прочие — то, что # Linux-деплой Qt и плагин xcb ищут при упаковке и запуске; libfuse2 — для # запуска самого appimagetool (он тоже AppImage). sudo apt-get update -q sudo DEBIAN_FRONTEND=noninteractive apt-get install -y -q \ build-essential patchelf file curl git xz-utils \ libgl1-mesa-dev libfuse2 libfontconfig1 libdbus-1-3 \ libxkbcommon-x11-0 libxcb-cursor0 libxcb-icccm4 libxcb-image0 libxcb-keysyms1 \ libxcb-render-util0 libxcb-shape0 libxcb-xinerama0 libxcb-xkb1 \ libnss3 libxcomposite1 libxdamage1 libxrandr2 libxtst6 libxkbfile1 libxshmfence1 libasound2 # --- Node.js LTS --------------------------------------------------------------- if ! command -v node >/dev/null; then NODE_VER=$(curl -fsSL https://nodejs.org/dist/index.json \ | python3 -c 'import json,sys; print(next(r["version"] for r in json.load(sys.stdin) if r["lts"]))') curl -fsSL "https://nodejs.org/dist/$NODE_VER/node-$NODE_VER-linux-x64.tar.xz" -o /tmp/node.tar.xz sudo rm -rf /opt/node && sudo mkdir -p /opt/node sudo tar -xJf /tmp/node.tar.xz -C /opt/node --strip-components=1 sudo ln -sf /opt/node/bin/node /opt/node/bin/npm /opt/node/bin/npx /usr/local/bin/ fi # --- appimagetool ---------------------------------------------------------------- if ! command -v appimagetool >/dev/null; then sudo curl -fsSL -o /usr/local/bin/appimagetool \ https://github.com/AppImage/appimagetool/releases/download/continuous/appimagetool-x86_64.AppImage sudo chmod +x /usr/local/bin/appimagetool fi # --- gitea-runner ------------------------------------------------------------------ mkdir -p "$RDIR/work" if [ ! -x "$RDIR/gitea-runner" ]; then curl -fsSL -o "$RDIR/gitea-runner" \ "https://gitea.com/gitea/runner/releases/download/v$RUNNER_VERSION/gitea-runner-$RUNNER_VERSION-linux-amd64" chmod +x "$RDIR/gitea-runner" fi cat > "$RDIR/config.yaml" </dev/null <