当然不同的语言或不同的需求下流程会有所差异: clone -> test -> build -> publish -> deploy -> notify 包含开发的完整流程为: 开发项目代码,包括 .drone.yml 这里把仓库添加到本地: git clone https://gogs.kikakika.com/lihongfeng/first.git 然后,在仓库中创建 .drone.yml 和 hello.go、 编写 .drone.yml 文件 这里直接使用 Go 的官方镜像: workspace: base: /go path: src/gogs.kikakika.com/lihongfeng/first [master f8a6927] try drone with golang demo 3 files changed, 33 insertions(+) create mode 100644 .drone.yml 通过更新上面的 .drone.yml 文件实现这几个步骤: workspace: base: /go path: src/gogs.kikakika.com/lihongfeng/first
开发者只需在项目中包含 .drone.yml文件,将代码推送到 git 仓库,Drone就能够自动化的进行编译、测试、发布。可以与Docker完美集成。 通过将.drone.yml文件放在git信息库的根目录中来配置管道。 yaml语法旨在易于阅读和表达,以便查看存储库的任何人都可以理解工作流程。 Drone通过多个step来完成一系列的指令。 激活仓库配置Webhook 1 登录drone激活仓库 2 在仓库创建.drone.yml文件 3 检查仓库的webhooks配置是否正常 激活之后,自动就会在gogs仓库的Web设置中创建钩子 当不存在.drone.yml文件或者仓库没有在drone激活,测试返回的报文可能是dial tcp连接失败。 配置.drone.yml运行Pipeline 要使用 Drone 只需在项目根创建一个 .drone.yml 文件即可,这个是 Drone 构建脚本的配置文件,它随项目一块进行版本管理,开发者不需要额外再去维护一个配置脚本
run 的 Dockerfile 使用 Drone 的 runner 生成容器镜像 将 docker 映射到 runner 中,然后运行容器 事实上整个配置只需要两个配置文件 Dockerfile .drone.yml 然后确认一下没有配错,就可以开始配 .drone.yml 了。 我配 .drone.yml 的思路实际上很简单——Drone 将会在收到 GitHub 的 webhook 后自动拉取仓库文件,在我的配置中你可以看到我只不过将宿主机的 docker 丢给 Drone 然后先构建容器,随后停止并删除旧的容器,接着用新的镜像起容器,最后删掉多余的镜像缓存(较为激进的删除,因为我云服务器的存储空间并不充裕而且我并不在意 CI 的时间) 最后就是配置一下反向代理,你可以在我 .drone.yml
.drone.yml 配置 ? 多子项目构建 在使用 drone 中遇到的最大问题就是,我们有很多项目都是在一个 repo 中有很多子项目,而每个子项目都是 k8s 中的一个服务,这时一个 .drone.yml 文件很难把所有的服务都囊括 .drone.yml ?
最后,开发人员只需要在项目中引入 .drone.yml 文件,将代码推送到 Git 仓库中,即可自动化的完成编译、测试 和 发布。 ,因此可以使用 openssl 命令生成 $ openssl rand -hex 16 bea26a2221fd8090ea38720fc445eca6 可以也需要保存改秘钥,在下面需要使用 编写 drone.yml 文件 首先,需要编写 drone 的 docker-compose 文件,用来创建 drone 容器 创建 drone.yml 文件,并修改以下的内容 DRONE_GITEE_CLIENT_ID:上面的 文件拷贝到服务器上,使用下面的命令运行 docker-compose -f drone.yml up -d 这里需要小伙伴们提前下载好 docker-compose,如果不清楚什么是 docker-compose 下面这个是最简单的一个 drone 流水线,我们创建 .drone.yml 文件,写上下面的内容 kind: pipeline # kind 属性定义了对象的种类。此示例定义了一个管道对象。
选项的情况,需要在启动运行drone-server服务是添加:--env=DRONE_USER_CREATE=username:root,admin:true [在这里插入图片描述] 流水线脚本编写.drone.yml 在gitlab依次点击,创建.drone.yml文件: [在这里插入图片描述]kind: pipeline type: docker name: default steps: - name: greeting image: alpine commands: - echo hello - echo world.drone.yml文件属性解释: .drone.yml文件内容(写的比较简单,主要了解流水线操作流程 (挂钩),Drone连接后会自动创建一个默认的webhooks: [在这里插入图片描述] 回到drone会看到,我们编写的流水线文件被自动触发(之后gitlab仓库代码更新或上传新代码都会自动触发).drone.yml : [在这里插入图片描述] 点击我们的流水线,可以查看流水线详细步骤、步骤的状态和步骤的logs: [在这里插入图片描述] 总结+遇到的问题 我这里的.drone.yml文件写的比较简单,主要时了解过程入门
实战 上述只是安装了,我们还需要编写 .drone.yml 配置文件来告诉 drone 我们要做什么,编写过程与 Github Action类似。 进入到自己的 gitea 仓库,然后添加 .drone.yml 文件,内容如下: kind: pipeline type: docker name: ci steps: - name: install /dist 这里对 .drone.yml 配置进行详解: 其中 build 这个不用多说,与 node 构建相关的,不过多介绍。 当完成上述配置完毕后,每次只需要 pull request,drone 就会自动拉取 gitea 的代码,并开始执行.drone.yml中的任务。 部署 nest 项目 TODO。。。
配置简单到哭:你只需要在项目根目录加一个.drone.yml,写几行命令(比如npmrunbuild或mvnpackage),剩下的交给Drone。 所以,我把这套方案的完整部署模板整理好了,包含:docker-compose.yml(一键启动Drone).drone.yml示例(适配前后端常见构建命令)GiteeWebhook配置截图与说明日志管理建议 开箱即用”的部署包,附带:详细图文部署手册(连Docker安装都写了)常见问题排查清单(比如Webhook不触发、runner离线等)一对一基础答疑(帮你跑通第一遍)可选定制建议(根据你的项目类型优化.drone.yml
• 配置简单到哭:你只需要在项目根目录加一个 .drone.yml,写几行命令(比如 npm run build 或 mvn package),剩下的交给 Drone。 所以,我把这套方案的完整部署模板整理好了,包含: • docker-compose.yml(一键启动 Drone) • .drone.yml 示例(适配前后端常见构建命令) • Gitee Webhook 详细图文部署手册(连 Docker 安装都写了) • 常见问题排查清单(比如 Webhook 不触发、runner 离线等) • 一对一基础答疑(帮你跑通第一遍) • 可选定制建议(根据你的项目类型优化 .drone.yml
/kube-build:v1.12.1-2 发布时用了drone一个非常方便的插件:plugins/github-release,可以直接把二进制文件放到github的release pages里 .drone.yml Mar 18 20:26:08 2019 +0800 4 files changed, 42 insertions(+), 3 deletions(-) create mode 100644 .drone.yml CI加的一些文件如.drone.yml dockerfile等与实际功能的添加最好分开,方便PR时只PR实际需要的代码。
安装详情请参考 https://github.com/yeasy/docker_practice/blob/master/cases/ci/drone.md 使用 与 Travis CI 类似,项目中包含 .drone.yml
编写脚本 当我们向Git仓库Push代码时,会自动触发Web钩子,然后Drone就会从Git仓库Clone代码,再通过项目目录下的.drone.yml配置,执行相应的流水线,接下来我们来看看这个脚本是如何写的 首先我们来了解下在.drone.yml中配置的工作流都有哪些操作,看下流程图就知道了; ? 再来一个完整的.drone.yml,配上详细的注解,看下就基本懂了!
开发者只需在项目中包含 .drone.yml 文件,将代码推送到 git 仓库,Drone 就能够自动化的进行编译、测试、发布。 Drone CI 自动部署的实例 在项目代码的根目录新建一个.drone.yml文件,一旦代码上传到代码仓库( github, gitlab, gitea 等),git 仓库会通过 Drone 预先埋好的 Webhoot 钩子发送事件请求给 Drone,Drone 接收到事件请求后会找到仓库项目根目录中的.drone.yml文件进行解析并根据文件的描述执行任务。 name: web # 定义 Pipline 的名字,一个 .drone.yml 可以有多个不同名字的 Pipeline。 多节点运行 在 docker-compose-drone.yaml 文件中定义 Runner 的DRONE_RUNNER_LABELS环境变量可以为 Runner 加上标签,在定义 .drone.yml
其实整个流程和jenkins很像,向代码仓库提交代码更新时,就会自动触发Webhooks,然后Drone就会从代码仓库Clone代码,再通过这个.drone.yml(相当于java使用的pom.xml文件 相比较于Jenkins的操作,似乎要简单许多,重点的操作就是编写好配置文件.drone.yml,其它的都是一些图形化操作,没有什么特别的难度。
Drone 设置 激活完毕之后 settings 页面就会出现很多设置 Protected 此属性是设置 是否要验证 配置文件(.drone.yml) 中的签名,开启后签名验证错误则不允许构建 Trusted Configuration 是设置配置文件文件,默认为 .drone.yml。 这个一般不需要改动。 这个错误是因为根目录中没有找到 配置文件(.drone.yml), https://discourse.gitea.io/t/client-timeout-exceeded-while-awaiting-headers /4148/4 在根目录创建 .drone.yml 文件并添加了一个测试配置,配置文件中内容下一篇介绍 kind: pipeline # 定义一个管道 type: docker # 当前管道的类型
开撸~ 改造官方 Demo 官方 Demo:https://github.com/reactjs/server-components-demo 编写基本的 .drone.yml kind: pipeline
点击按钮 跳转到码云进行授权 同步项目 点击项目进入到 点击setting/Activate Repository 进入 如上图配置 点击Save Changes 然后在项目根目录添加.drone.yml 是打包后的文件夹名称 /mnt/nginx/html 是需要放到的宿主环境的目录 我这里是nginx的 html文件夹 的宿主环境目录 drone + docker 部署 express .drone.yml
可以简单的理解为, .drone.yml 配置文件相当于一个 .sh 文件,部署操作配置在这个文件中,交给 Drone 引擎执行。 下面就一步步编写部署 Web 项目。 .drone.yml 文件可以使用 clone 属性对此步骤(step) 设置。 默认的 clone 步骤(step)只支持设置 disable、和 depth。 Secret 配置账号密码 刚才构建镜像时在 .drone.yml 文件使用了明文账号密码,这样肯定是不允许的,可以使用 Secret 配置这样的敏感数据。
测试demo见 git地址 主要是test1/.drone.yml的编写。
开发者只需在项目中包含 .drone.yml 文件,将代码推送到 git 仓库,Drone 就能够自动化的进行编译、测试、发布。 the server successfully pinged the remote server 使用构建 Drone是采用配置文件的方式进行流水线配置的,因此我们首先要在对应的仓库根目录下创建.drone.yml 中创建一个流水线也可以通过配置触发方式来自动触发,在使用Jenkins的时候,我们需要在Git仓库中配置WebHook,并且选择WebHook的触发事件,这样才能自动触发构建,但是在安装配置Drone的时候我们并没有配置触发方式,为什么添加了.drone.yml