私有化轻量级持续集成部署方案--05-持续部署服务-Drone(下)

提示:本系列笔记全部存在于 Github, 可以直接在 Github 查看全部笔记 Drone 管道机制

Drone 中引入了 管道(Pipeline) 机制。管道(Pipeline)相当于一个流程,管道(Pipeline)中可以执行多个 步骤(step)。

步骤(step) 就是使用 插件(Plugin) 配置的操作。

与 Runner(执行器) 相同的是,管道(Pipeline) 也支持多种类型,用于适配不同运行环境。当然某些类型可以使用容器化代替统一管理。

私有化轻量级持续集成部署方案--05-持续部署服务-Drone(下)

Drone 也是使用 YAML 语法作配置文件,在配置文件可以同时配置多个 管道(Pipeline) 。

默认情况下多个 管道(Pipeline) 是并行执行,这也是 Drone 的强大功能之一:分布式管道系统

kind: pipeline # 定义一个管道 type: docker # 定义管道的类型 name: test # 定义管道的名称 steps: # 定义管道的执行步骤 - name: test # 步骤名称 image: node:latest # 当前Docker步骤使用的镜像 commands: # 当前步骤执行的命令 - echo 测试drone执行2

在上一篇中配置的测试管道(Pipeline)。此管道(Pipeline)使用了 docker 类型。

管道(Pipeline) 中定义了一个步骤(step), 使用了 Node 镜像。容器内执行了打印命令

整个自动化部署就是配置 步骤(step) 进行执行。

可以简单的理解为, .drone.yml 配置文件相当于一个 .sh 文件,部署操作配置在这个文件中,交给 Drone 引擎执行。

下面就一步步编写部署 Web 项目。

部署 Web 项目 Build 阶段

上一篇中简单的介绍,可以将整个部署流程划分为两个阶段:

拉取代码 ---> 编译项目 ---> 打包镜像 ---> 推送镜像仓库

使用 SSH 连接服务器 ---> 拉取最新镜像 ---> 停止和移除旧容器 ---> 启动新容器。

可以以这样流程划分构建管道(Pipeline)。一个阶段为一个 管道(Pipeline)

第一阶段叫做 build

kind: pipeline # 定义一个管道 type: docker # 定义管道的类型 name: build # 定义管道的名称 clone 代码

默认情况下,管道(Pipeline)执行的第一个步骤(step) 是 拉取代码(clone)

这是 Drone 提供的一个默认 步骤(step)。

.drone.yml 文件可以使用 clone 属性对此步骤(step) 设置。

默认的 clone 步骤(step)只支持设置 disable、和 depth。

如果需要使用到其它参数,可以将默认的 clone 步骤(step)禁用,自定义拉取代码 步骤(step)

kind: pipeline # 定义一个管道 type: docker # 定义管道类型 name: build # 定义管道名称 clone: disable: false # 启用代码拉取

默认情况下, 拉取代码使用的是 drone/git 镜像。

部署 Drone 时可以使用 environment 属性替换默认镜像,可以参考官方文档

私有化轻量级持续集成部署方案--05-持续部署服务-Drone(下)

私有化轻量级持续集成部署方案--05-持续部署服务-Drone(下)

编译代码

执行完毕 clone 步骤(step) 后就可以进行代码编译了。

代码编译可以直接使用 Node 镜像执行 package.json 命令。

定义 build-project 步骤(step),执行代码编译。

在此 步骤(step) 中使用了 depends_on 属性,这个属性表示当前步骤(step)需要依赖指定步骤执行,也就是需要在指定步骤执行完毕后才开始执行此步骤(step)。

PS: 步骤(step) 之间是可以并发执行的。

kind: pipeline # 定义一个管道 type: docker # 定义管道类型 name: build # 定义管道名称 clone: disable: false # 启用代码拉取 steps: - name: build-project # 步骤名称 image: node:16.13.2 # 使用镜像 depends_on: [clone] # 依赖的步骤, commands: #执行命令 - npm config set registry https://registry.npm.taobao.org # 切换淘宝镜像 - npm install # 安装node_modules包 - npm run build # 执行编译

私有化轻量级持续集成部署方案--05-持续部署服务-Drone(下)

私有化轻量级持续集成部署方案--05-持续部署服务-Drone(下)

PS: 如果是服务器中没有 node:16.13.2 镜像,首先会拉取镜像,时间会更慢一些。

缓存 node_modules

如果多测试几次代码编译步骤,会发现一个问题:每次代码编译执行时间都比较长,在我服务器执行时间大约 1 分钟左右。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwppxw.html