You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

1.6 KiB

Drone CI 配置示例 (Exec Runner)

概述

使用 Drone exec runner 在目标主机上直接构建和部署。主机需预装 Go 和 Node.js。

示例 .drone.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,再进行运行