前端持续集成自动部署

377 阅读2分钟

自动部署服务

现阶段因为项目交叉迭代,部署起来甚是麻烦,所以结合当前环境开发这一款查件,主要应用于自动部署直接上传文件。

self-service 文档

什么是 self-service ?

这是一款提供持续集成的相关插件,可以用于文件上传以及部署。

安装

使用 npm

npm install privice-self-service --save-dev

使用 yarn

yarn add privice-self-service --dev

调用参数以及支持命令

这是目前所支持的参数

self-service init | i --mode dev

self-service deploy | d --mode dev

self-service remove | r --mode dev

初始化

self-service init | i --mode dev

这是在当前环境下自动生成一份名为 self.config.js 的文件,格式如下,需要手动补全对应内容

{
  // --mode dev 这里是为指定dev环境使用
  dev: {
    projectConfig: { // 项目配置信息
      name: "", // 项目名称
      version: "", // 项目版本
      dist: "", // 获取部署文件地址
      remote: "", // 远端路径
      remoteWidthList: [], // 远端白名单列表
      copyFilePath: [], // 聚合文件列表
      isGetFiles: false, // 是否聚合
      isCoverUpData: true, // 是否覆盖
      isInquirer: false, // 是否启用询问 因为推送服务器需要甚至这里加了询问,但是不喜欢也可以关闭
      isDingTalk: false
    },
    serverConfig: { // 服务器信息
      host: "", // 地址
      port: 22, // 端口
      username: "", // 用户名
      password: "", // 密码
    },
    testConfig: { // 推送相关人信息
      testers: [], // 手机号码列表
      developer: [""],
    },
    dingTalkConfig: { 
      robot: "", // webhook地址
      subscribeString: "",
      subscribeArray: [],
    },
  },
};

部署配置

self-service deploy | d --mode dev

指定--mode dev环境,然后再通过...projectConfig文件的内容进行上传,具体参数说明请看初始化文档注释

这里解释一下这个三个字段,因为可能会遇到如下场景

  1. 第一种,可能你想要上传的是多个文件夹,并不在一个目录内,这个时候请填写copyFilePath: ['folder/**/*'], isGetFiles: true,会主动多个文件夹聚合到一起然后一起上传
  2. 第二种,可能你需要上传的远端服务器文件内并不只是有你的文件,还有其他的文件,这里可以 isCoverUpData:false,就不会把远端服务器地址的其他内容清空,只会把你要上传的内容添加进去
{
  ...
  copyFilePath: [], // 聚合文件列表
  isGetFiles: false, // 是否聚合
  isCoverUpData: true, // 是否覆盖
}

当前项目使用

如果是在本地项目调用的话,可以在项目根目录的package.json 文件中 scripts 脚本中添加如下代码

  "scripts": {
    "build:test": "vue-cli-service build --mode test && self-service deploy --mode test"
    "build": "vue-cli-service build --mode prod && self-service deploy --mode prod",
  },

只有当等打包的命令走完之后才会执行上传任务

npm

www.npmjs.com/package/pri…

最后如果有帮助到你的话,麻烦给个⭐

GitHub

github.com/wakeupfive/…

另外,此插件是集成了推送企业微信的能力,因为正常更新之后需要通知到相关人员。但是因为考虑到可能大家不需要,所以这部分功能不做解释。