diff --git a/.gitea/workflows/deploy.yaml b/.gitea/workflows/deploy.yaml index be97853..2c36113 100644 --- a/.gitea/workflows/deploy.yaml +++ b/.gitea/workflows/deploy.yaml @@ -1,5 +1,6 @@ # BillAI 自动部署工作流 # 当 master 分支有 push 时自动触发部署 +# 模式: Docker 模式 - Job 在 docker:latest 容器中执行 name: Deploy BillAI @@ -12,6 +13,11 @@ jobs: deploy: name: Deploy to Production runs-on: self-hosted + container: + image: docker:latest + volumes: + - /var/run/docker.sock:/var/run/docker.sock + - ${{ vars.DEPLOY_PATH }}:${{ vars.DEPLOY_PATH }} steps: - name: Checkout code run: | diff --git a/docker-compose.runner.yaml b/docker-compose.runner.yaml index 91b37eb..125e819 100644 --- a/docker-compose.runner.yaml +++ b/docker-compose.runner.yaml @@ -13,7 +13,11 @@ # # 4. 在 Gitea 仓库添加变量 # 访问:https://git.fadinglight.cn/clz/billai/settings/actions/variables -# 添加 DEPLOY_PATH = /你的项目路径 +# 添加 DEPLOY_PATH = /workspace/billai +# +# 模式说明: +# 使用 Docker 模式,每个 Job 会在 docker:latest 容器中执行 +# 容器自带 docker CLI,通过挂载 docker.sock 控制宿主机的 Docker services: runner: @@ -25,18 +29,14 @@ services: environment: GITEA_INSTANCE_URL: "https://git.fadinglight.cn" GITEA_RUNNER_NAME: "billai-runner" - GITEA_RUNNER_LABELS: "self-hosted:host,ubuntu-latest:host" + GITEA_RUNNER_LABELS: "self-hosted:docker://docker:latest,ubuntu-latest:docker://docker:latest" CONFIG_FILE: /config.yaml volumes: # Runner 配置文件 - ./runner/config.yaml:/config.yaml # Runner 数据持久化 - ./runner/data:/data - # Docker socket - 用于在宿主机执行 docker 命令 + # Docker socket - Runner 通过它创建 Job 容器 - /var/run/docker.sock:/var/run/docker.sock - # Docker 客户端 - 让容器内可以执行 docker 命令 - - /usr/bin/docker:/usr/bin/docker - # Docker CLI 插件目录(包含 docker compose 插件) - - /usr/libexec/docker/cli-plugins:/usr/libexec/docker/cli-plugins - # 项目目录 - 用于执行部署脚本 + # 项目目录 - 挂载到 Runner 和 Job 容器都能访问的路径 - .:/workspace/billai diff --git a/runner/config.yaml b/runner/config.yaml index e6f33f3..67c971e 100644 --- a/runner/config.yaml +++ b/runner/config.yaml @@ -1,5 +1,6 @@ # Gitea Actions Runner 配置 # 文档: https://docs.gitea.com/usage/actions/act-runner +# 模式: Docker 模式 - Job 在独立的 Docker 容器中执行 log: # 日志级别: debug, info, warn, error @@ -21,23 +22,23 @@ runner: # 任务容器拉取策略: always, if-not-present, never fetch_timeout: 5s fetch_interval: 2s - # Runner 标签 + # Runner 标签 - 使用 Docker 模式,docker:latest 镜像自带 docker CLI labels: - - "ubuntu-latest:host" - - "self-hosted:host" + - "ubuntu-latest:docker://docker:latest" + - "self-hosted:docker://docker:latest" container: # 容器网络模式 network: "host" # 是否启用特权模式 privileged: false - # 容器选项 - options: + # 容器启动选项 - 挂载 docker.sock 和项目目录 + options: "-v /var/run/docker.sock:/var/run/docker.sock" # 工作目录父路径 workdir_parent: - # 有效的卷挂载 + # 有效的卷挂载 - 允许挂载的目录 valid_volumes: - - /workspace/** + - /** # Docker 主机 docker_host: "" # 强制拉取镜像