# HuaweiCloud-Drone-plugins **Repository Path**: HuaweiCloudDeveloper/huaweicloud-drone-plugins ## Basic Information - **Project Name**: HuaweiCloud-Drone-plugins - **Description**: HuaweiCloud-Drone-plugins - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-03-30 - **Last Updated**: 2025-06-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # drone ## 简介 Drone是一个现代 CI/CD 平台,采用容器优先架构构建。基于容器的工作流是 Drone 设计的核心。Drone 是用 Go 编写的,并于 2014 年在 Apache 许可下首次发布。 Drone 充当 Docker 和存储库提供者之间的中间协调层。 Drone 不需要启动 CI/CD 服务器,然后连接到版本控制系统托管服务,而是需要预先存储库帐户信息来引导其自己的身份验证、用户和权限模型。与所有 CI 流程一样,Drone 本身作为容器运行。 Drone 在存储库中查找用于管道定义的特殊 YAML 文件。该语法旨在易于阅读和表达,以便使用存储库的任何人都可以理解持续集成过程。 Drone 提供了一个插件系统,在 Drone 中,插件是特殊的 Docker 容器,用于将预配置的任务放入常规工作流程中。这使得通过使用一些参数调用插件而不是手动编写整个过程的脚本来更容易完成常见任务。从这个意义上说,Drone 插件有点类似于 Unix 实用命令,这些命令旨在很好地完成一项狭隘的任务。 ## 环境准备 - docker - go ## 部署 1.编译 - 拉取代码 ```sh git clone https://gitee.com/HuaweiCloudDeveloper/huaweicloud-drone-plugins.git ``` - 编译二进制文件 ```sh cd huaweicloud-drone-plugins sh scripts/build.sh ``` - 构建docker镜像 ```sh export GOOS=linux export GOARCH=amd64 docker build -t drone:latest -f docker/Dockerfile.server.linux.amd64 . ``` 2.配置gitee 登录gitee,在gitee设置里选择`第三方应用`,创建应用 需要注意的是: - 填写的应用主页和回调地址必须为当前ecs的公网ip加端口或者域名 - 回调地址填写的是drone的登录地址,具体为主页链接加上/login 创建成功后,获取**Client ID**和**Client Secret**用于授权 2.运行drone-server ```sh docker run \ --volume=/var/lib/drone:/data \ --env=DRONE_GITEE_CLIENT_ID= \ --env=DRONE_GITEE_CLIENT_SECRET= \ --env=DRONE_RPC_SECRET=<秘钥> \ --env=DRONE_SERVER_HOST= \ --env=DRONE_SERVER_PROTO=http \ --env=DRONE_USER_CREATE=username:drone,admin:true \ --env=OBS_ACCESS_KEY= \ --env=OBS_SECRET_KEY= \ --env=DRONE_OBS_BUCKET= \ --env=DRONE_OBS_ENDPOINT= \ --env=DRONE_OBS_PREFIX= \ --publish=80:80 \ --publish=443:443 \ --restart=always \ --detach=true \ --name=drone \ drone:latest ``` - **DRONE_GITEE_CLIENT_ID**:提供Gitee OAuth Client ID - **DRONE_GITEE_CLIENT_SECRET**:提供Gitee OAuth Client Secret - **DRONE_GITEE_SERVER_HOST**:提供 Gitee 服务器地址,填写当前的\ - **DRONE_RPC_SECRET**:共享密钥,用于验证服务器和运行器之间的 rpc 连接。服务器和运行器需提供相同的密钥。 3.运行drone-runner - 拉取drone runner ```sh docker pull drone/drone-runner-docker:1 ``` - 运行 ```sh docker run --detach \ --volume=/var/run/docker.sock:/var/run/docker.sock \ --env=DRONE_RPC_PROTO=http \ --env=DRONE_RPC_HOST= \ --env=DRONE_RPC_SECRET=<秘钥> \ --env=DRONE_RUNNER_CAPACITY=2 \ --env=DRONE_RUNNER_NAME=my-first-runner \ --publish=3000:3000 \ --restart=always \ --name=runner \ drone/drone-runner-docker:1 ``` - **DRONE_RPC_SECRET**的值必须与drone-server配置的相同 4.登录 访问\,登录时会调起Gitee授权页面,登录即可 ## 常见问题 ### 提交添加.drone.yml的commit {"commit":"d8c4e90f145da7c5aa6896fd4ad82886110b8f52","error":"json: cannot unmarshal array into Go value of type gitee.content","event":"push","level":"warning","msg":"trigger: cannot find yaml","ref":"refs/heads/master","repo":"pengcss/drone-obs","time":"2023-11-10T02:39:05Z"} 原因:.drone.yml的格式有问题