From db75d0ebc57c925c06e2f1c1bc15ef6436def502 Mon Sep 17 00:00:00 2001 From: csh Date: Wed, 10 Dec 2025 14:42:20 +0800 Subject: [PATCH] =?UTF-8?q?:sparkles:=20`gitea`=E7=9A=84`runner`=E5=8F=82?= =?UTF-8?q?=E6=95=B0=E5=8C=96=EF=BC=8C=E5=8F=AF=E4=BB=A5=E9=80=9A=E8=BF=87?= =?UTF-8?q?`docker-compose.yml`=E8=BF=9B=E8=A1=8C=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit :bug: 修复`Dockerfile`缺少系统包 --- docker-runner/common/register.sh | 18 ++++++++++++++---- .../presets/buildx-archlinux/Dockerfile | 12 ++++++++++-- .../buildx-archlinux/docker-compose.yml | 3 +++ .../presets/buildx-ubuntu-22/Dockerfile | 18 +++++++++++++++--- .../buildx-ubuntu-22/docker-compose.yml | 4 +++- .../standard-ubuntu-22/docker-compose.yml | 3 +++ 6 files changed, 48 insertions(+), 10 deletions(-) diff --git a/docker-runner/common/register.sh b/docker-runner/common/register.sh index b49efef..860697e 100644 --- a/docker-runner/common/register.sh +++ b/docker-runner/common/register.sh @@ -20,12 +20,17 @@ echo "" # 获取注册信息并验证 while true; do - read -p "Enter Gitea instance URL (e.g., https://gitea.example.com): " GITEA_INSTANCE + if [ -n "${GITEA_INSTANCE:-}" ]; then + echo "Using Gitea instance from env: $GITEA_INSTANCE" + else + read -p "Enter Gitea instance URL (e.g., https://gitea.example.com): " GITEA_INSTANCE + fi # 验证 URL 格式 if [[ ! "$GITEA_INSTANCE" =~ ^https?:// ]]; then echo "✗ Error: URL must start with http:// or https://" echo "" + unset GITEA_INSTANCE continue fi @@ -35,15 +40,20 @@ while true; do break done -read -p "Enter registration token: " GITEA_TOKEN +if [ -n "${GITEA_TOKEN:-}" ]; then + echo "Using registration token from env." +else + read -p "Enter registration token: " GITEA_TOKEN +fi if [ -z "$GITEA_TOKEN" ]; then echo "✗ Error: Token cannot be empty!" exit 1 fi -read -p "Enter runner name (default: docker-runner): " RUNNER_NAME -RUNNER_NAME=${RUNNER_NAME:-docker-runner} +DEFAULT_NAME="${DEFAULT_RUNNER_NAME:-docker-runner}" +read -p "Enter runner name (default: $DEFAULT_NAME): " RUNNER_NAME +RUNNER_NAME=${RUNNER_NAME:-$DEFAULT_NAME} # 多个 label(逗号分隔,无空格) # ubuntu-22.04:host://ubuntu:22.04,ubuntu-20.04:host://ubuntu:20.04,node:docker://node:18 diff --git a/docker-runner/presets/buildx-archlinux/Dockerfile b/docker-runner/presets/buildx-archlinux/Dockerfile index 875778e..93e952b 100644 --- a/docker-runner/presets/buildx-archlinux/Dockerfile +++ b/docker-runner/presets/buildx-archlinux/Dockerfile @@ -23,16 +23,20 @@ RUN pacman -Syu --noconfirm && \ ninja \ curl \ git \ + nodejs \ + npm \ python \ python-pyyaml \ python-pip \ paru \ - conan \ sudo \ vim \ supervisor \ qemu-user-static \ qemu-user-static-binfmt \ + fakeroot \ + docker \ + docker-buildx \ && pacman -Scc --noconfirm # AUR 用户(paru 需非 root 运行) @@ -43,7 +47,7 @@ RUN useradd -m aur && \ # 安装额外的 AUR 工具 USER aur WORKDIR /home/aur -RUN paru -S --noconfirm --needed --noprogressbar llvm-mingw-w64-toolchain-ucrt-bin && \ +RUN paru -S --noconfirm --needed --noprogressbar conan-bin llvm-mingw-w64-toolchain-ucrt-bin && \ paru -Scc --noconfirm && \ rm -rf ~/.cache/paru @@ -51,6 +55,10 @@ RUN paru -S --noconfirm --needed --noprogressbar llvm-mingw-w64-toolchain-ucrt-b USER root WORKDIR /root +# 交叉工具链可用:确保 windres 在 PATH,避免 CMake 查找失败 +ENV PATH="/opt/llvm-mingw/llvm-mingw-ucrt/bin:${PATH}" +ENV RC="/opt/llvm-mingw/llvm-mingw-ucrt/bin/x86_64-w64-mingw32-windres" + # 验证 qemu 和 docker 安装 RUN qemu-aarch64-static --version && \ qemu-x86_64-static --version && \ diff --git a/docker-runner/presets/buildx-archlinux/docker-compose.yml b/docker-runner/presets/buildx-archlinux/docker-compose.yml index 18d146e..bfb92bc 100644 --- a/docker-runner/presets/buildx-archlinux/docker-compose.yml +++ b/docker-runner/presets/buildx-archlinux/docker-compose.yml @@ -20,6 +20,9 @@ services: # Arch Linux Buildx 配置 - 使用 tonistiigi/binfmt - ENABLE_BUILDX=true - BINFMT_METHOD=tonistiigi + - GITEA_INSTANCE=https://git.mytsl.cn + - GITEA_TOKEN= + - DEFAULT_RUNNER_NAME=buildx-archlinux - DEFAULT_RUNNER_LABEL=archlinux:host://archlinux:latest,company-server:host://archlinux:latest,buildx-archlinux:host://archlinux:latest # 如果需要使用代理,取消下面的注释并修改为你的代理地址 diff --git a/docker-runner/presets/buildx-ubuntu-22/Dockerfile b/docker-runner/presets/buildx-ubuntu-22/Dockerfile index fa8232d..48644b5 100644 --- a/docker-runner/presets/buildx-ubuntu-22/Dockerfile +++ b/docker-runner/presets/buildx-ubuntu-22/Dockerfile @@ -15,12 +15,24 @@ RUN apt-get update && apt-get install -y \ lsb-release \ qemu-user-static \ binfmt-support \ + apt-transport-https \ && rm -rf /var/lib/apt/lists/* # 安装 Docker(包含 Buildx 插件) -RUN curl -fsSL https://get.docker.com -o get-docker.sh && \ - sh get-docker.sh && \ - rm get-docker.sh +RUN install -m 0755 -d /etc/apt/keyrings && \ + curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg && \ + chmod a+r /etc/apt/keyrings/docker.gpg && \ + echo \ + "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ + $(lsb_release -cs) stable" > /etc/apt/sources.list.d/docker.list && \ + apt-get update && \ + apt-get install -y \ + docker-ce \ + docker-ce-cli \ + containerd.io \ + docker-buildx-plugin \ + docker-compose-plugin \ + && rm -rf /var/lib/apt/lists/* # 验证安装 RUN docker --version && \ diff --git a/docker-runner/presets/buildx-ubuntu-22/docker-compose.yml b/docker-runner/presets/buildx-ubuntu-22/docker-compose.yml index 02729ea..d8aae51 100644 --- a/docker-runner/presets/buildx-ubuntu-22/docker-compose.yml +++ b/docker-runner/presets/buildx-ubuntu-22/docker-compose.yml @@ -19,7 +19,9 @@ services: # Buildx 配置 - 启用多架构构建 - ENABLE_BUILDX=true - - BINFMT_METHOD=update-binfmts + - GITEA_INSTANCE=https://git.mytsl.cn + - GITEA_TOKEN= + - DEFAULT_RUNNER_NAME=buildx-ubuntu-22 - DEFAULT_RUNNER_LABEL=ubuntu-22.04:host://ubuntu:22.04,company-server:host://ubuntu:22.04,buildx-ubuntu-22:host://ubuntu:22.04 # 如果需要使用代理,取消下面的注释并修改为你的代理地址 diff --git a/docker-runner/presets/standard-ubuntu-22/docker-compose.yml b/docker-runner/presets/standard-ubuntu-22/docker-compose.yml index fa6a5fb..e562c8e 100644 --- a/docker-runner/presets/standard-ubuntu-22/docker-compose.yml +++ b/docker-runner/presets/standard-ubuntu-22/docker-compose.yml @@ -17,6 +17,9 @@ services: # Standard 配置 - 不启用 Buildx - ENABLE_BUILDX=false + - GITEA_INSTANCE=https://git.mytsl.cn + - GITEA_TOKEN= + - DEFAULT_RUNNER_NAME=standard-ubuntu-22 - DEFAULT_RUNNER_LABEL=ubuntu-22.04:host://ubuntu:22.04,company-server:host://ubuntu:22.04,standard-ubuntu-22:host://ubuntu:22.04 # 如果需要使用代理,取消下面的注释并修改为你的代理地址