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

PS: Docker Hub 访问会很慢。

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

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

Secret 配置账号密码

刚才构建镜像时在 .drone.yml 文件使用了明文账号密码,这样肯定是不允许的,可以使用 Secret 配置这样的敏感数据。

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

kind: pipeline # 定义一个管道 type: docker # 定义管道类型 name: build # 定义管道名称 - name: build-image # 步骤名称 image: plugins/docker # 使用镜像 depends_on: [build-project] # 依赖步骤 settings: # 当前设置 username: # 账号名称 from_secret: docker_username password: # 账号密码 from_secret: docker_password dockerfile: deploy/Dockerfile # Dockerfile地址, 注意是相对地址 repo: yxs970707/deploy-web-demo # 镜像名称 tags: # 镜像标签 - latest - 1.0.2

使用Secret时,需要使用 from_secret 属性设置。

根据 package.json 生成 Tags

打包镜像时设置的镜像版本号,是直接设置的固定数值,这样每次更新都要重新设置新版本号,也是一个繁琐的操作。

Drone 中可以使用变量设置, 并且内置了许多变量,例如: DRONE_TAG。但是个人感觉这些变量并不太好用。

我想要的效果是根据 package.json 文件 version 属性 设置镜像版本。这样管理起来比较方便。

后查询文档发现 plugins/docker 镜像支持读取项目根目录下 .tags 文件进行设置版本号

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

有一种解决方案,将package.json 文件 version 属性写入到 .tags 文件。

https://discourse.drone.io/t/using-custom-generated-tags-for-docker-images/1918/2

虽然感觉社区内会有这样功能的镜像插件,

但是查找起来浪费时间,于是自己写了一个简单的插件:https://github.com/yanzhangshuai/drone-web-tags

使用起来也很简单,并且同时支持设置其它 Tags。

steps: - name: build-project # 步骤名称 image: node:16.13.2 # 使用镜像 depends_on: [clone] # 依赖的步骤, volumes: # 挂载数据卷 - name: node_modules # 数据卷名称 path: /drone/src/node_modules # 容器内目录 commands: # 执行命令 - npm config set registry https://registry.npm.taobao.org # 切换淘宝镜像 - npm install # 安装node_modules包 - npm run build # 执行编译 - name: build-tags image: yxs970707/drone-web-tags # 使用镜像 depends_on: [clone] # 依赖的步骤, settings: tags: - latest # 设置其它tags, latest - name: build-image # 步骤名称 image: plugins/docker # 使用镜像 depends_on: [build-tags, build-project] # 依赖步骤 settings: # 当前设置 username: # 账号名称 from_secret: docker_username password: # 账号密码 from_secret: docker_password dockerfile: deploy/Dockerfile # Dockerfile地址, 注意是相对地址 repo: yxs970707/deploy-web-demo # 镜像名称

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

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

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

deploy 阶段

将镜像推送到镜像仓库后,持续部署的第二阶段就是在服务器更新部署。

第二阶段虽然细分了许多操作,但关键是远程连接服务器。所以为了简单直接将这些操作都配置到一个 步骤(step)

第二阶段 管道(Pipeline) 名字为 deploy

注意:管道(Pipeline) 之间需要使用 --- 相隔开

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

deploy 管道(Pipeline)需要在 build 管道(Pipeline)执行完毕后才执行。

并且 deploy 管道(Pipeline) 可以禁用代码拉取

kind: pipeline type: docker name: deploy depends_on: # 依赖build管道 - build clone: disable: true # 禁用拉取 SSH 连接并部署

之前说过,Drone 提供了多种 Runner(执行器) 和 管道(Pipeline) 类型, 但某些类型可以使用容器化统一化管理。

Drone 社区中提供了 SSH 连接镜像插件, appleboy/drone-ssh。

配置此步骤前,需要先改动 之前 web 项目的 Docker Compose 文件

配置中使用了具体 Tag 镜像。不过服务器部署时并不需要清楚当前是什么版本服务,直接部署 最新版本(latest) 就行。

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

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