# Drone CI 配置示例 (Exec Runner) ## 概述 使用 Drone exec runner 在目标主机上直接构建和部署。主机需预装 Go 和 Node.js。 ## 示例 .drone.yml ```yml kind: pipeline type: exec name: build-and-deploy platform: os: linux arch: amd64 steps: - name: build commands: - cd web && npm ci && npm run build && cd .. - go env -w GO111MODULE=on - go env -w GOPROXY=https://goproxy.cn,direct - go build -ldflags="-s -w" -o myapp . - name: deploy environment: DB_PATH: from_secret: db_path UPLOAD_DIR: from_secret: upload_dir JWT_SECRET: from_secret: jwt_secret commands: - mkdir -p /opt/myapp - sudo cp myapp /opt/myapp/myapp - sudo pkill -x myapp || true - | sudo -E nohup /opt/myapp/myapp >> /tmp/myapp.log 2>&1 & when: branch: main trigger: branch: - main ``` ## 说明 - 替换 `myapp` 为你的应用名称。 - 环境变量从 Drone secrets 注入。 - 部署使用 `nohup` 后台运行,避免 systemd。 ## 说明: - **exec 执行器在服务器本机运行**:流水线步骤直接在该机 shell 环境执行,不是 Kubernetes/docker pipeline 的隔离容器。 - `.drone.yml` 中需 `type: exec`;脚本依赖服务器已安装的工具链(Go、Node、sqlite3 等),改 CI 时注明需在 runner 主机预装的依赖。 - 密钥用 Drone 仓库/组织密钥注入环境变量,勿写入仓库明文 ## 规则: 1. 必须将应用安装再/opt,再进行运行