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 # 如果需要使用代理,取消下面的注释并修改为你的代理地址