微信小程序入门(四):miniprogram-ci + Jenkins + git 实现小程序代码的上传等操作

目录

1. 实现要求

2. 实现方式一

2.1 Jenkins中其他配置这里不重复了,重点说构建部分的命令

2.2 Jenkins中运行构建任务,在小程序页面检查上传结果,没问题

3. 实现方式二

3.1 在Jenkins命令行(Windows批处理命令),用miniprogram-ci命令实现,项目源码从远程仓库中拉取,参数化某些选项的方式

3.2 源码管理

3.3 参数化详解

3.4 注意事项

3.5 远程触发(带参数)

3.6 邮件设置

 3.7 构建运行结果(控制台输出+上传结果)

4. 实现方式三

4.1 在Jenkins命令行(Windows批处理命令),调用nodejs脚本的方式

4.2 nodejs脚本的编写

4.2.1 新建项目

4.2.2 编写upload.js文件,参数写死的情况如下:

4.2.3 编写upload.js文件,不写死信息,通过Jenkins命令行传参进来,脚本接住参数,运行脚本的情况如下

4.3 Jenkins构建中调用nodejs脚本命令

4.4 邮件设置

4.5 远程触发(带参数)


1. 实现要求

(1) 代码管理,需要从git拉取对应的代码

(2)参数化(appId,privateKey,版本...),并支持远程触发

(3)邮件报告设置

(4)除了命令行方式外,创建新的Jenkins job,需要支持nodejs脚本方式的运行(需要满足1,2,3)

2. 实现方式一

2.1 Jenkins中其他配置这里不重复了,重点说构建部分的命令

Win10中Jenkins的登录和配置,可参考此文:Win10中Jenkins的安装,基本使用流程

(1)这个方式演示了:从本地获取代码,并且写死所有选项信息

(2)在Jenkins的Window Shell命令行,构建命令如下:

C:/Users/pearl/AppData/Roaming/npm/miniprogram-ci upload --pp '小程序代码本地路径' --pkp 'privateKey路径' --appid appid值 --uv 版本号 -r 开发者(机器人编号)

这个命令格式也是参考的:微信官方文档.小程序 ---> 开发辅助 --->CI

10.27补图:

2.2 Jenkins中运行构建任务,在小程序页面检查上传结果,没问题

3. 实现方式二

3.1 在Jenkins命令行(Windows批处理命令),用miniprogram-ci命令实现,项目源码从远程仓库中拉取,参数化某些选项的方式

构建部分的命令如下:

C:/Users/pearl/AppData/Roaming/npm/miniprogram-ci upload --pp "%WORKSPACE%" --pkp "%privateKey%" --appid %appid% --uv %version% -r %robot%


3.2 源码管理

​  

3.3 参数化详解

(1)%WORKSPACE%:

环境变量,从git仓库拉取的项目代码存放在本地这个路径下。 后面要执行的项目从这里获取。

(2)%privateKey%

在Jenkins中参数化privateKey, 然后在Windows命令中调用。(一般默认情况下,privateKey中的值,跟appid是一样的),可设默认值,点构建后,会提示让填写实参。

(3)%appid%:

参数化,可设默认值,点构建后,会提示让填写实参。

(4)%version%:

参数化,可设默认值,点构建后,会提示让填写实参。

(5)%robot%

参数化,可设默认值,点构建后,会提示让填写实参。

10.27补图:


​       

​ 

 

3.4 注意事项

(1)通常比较安全的做法,不会将appid和privateKey直接做String参数化,可以考虑choice 参数,然后用命令语句做判断选择。

(2)在Windows命令行中,调用参数用:%xx%

(3)在Jenkins自身环境中引用参数变量用:$
    

3.5 远程触发(带参数)

调用URL的格式大致如下,在浏览器中输入URL,确认后,可以看到jenkins页面的任务,自动实现构建运行。
http://localhost:8081/job/miniprogram-3-node/buildWithParameters?appid=xxx&version=2.2.2&desc=222&projectPath=xxx/&privateKeyPath=xxx&token=mini

10.27补图:

3.6 邮件设置

此处不赘述,可参考此文:Win10中Jenkins的使用:配置邮件

10.27补图:运行上面的任务,邮箱收到邮件如下,邮件模板可自行选择,我这个是最简单的。

 3.7 构建运行结果(控制台输出+上传结果)

4. 实现方式三

4.1 在Jenkins命令行(Windows批处理命令),调用nodejs脚本的方式

构建部分的命令:

node C:/Users/xxxxxxxxx/WeChatProjects/miniprogram-ci/src/upload.js %WORKSPACE% %privateKey% %appid% %version% %desc%

解析:

(1)这里是使用node命令,运行所编写的upload.js脚本,实现上传功能。而非使用安装到本地的miniprogram-ci模块来上传。

(2)参数化声明和从gitee仓库拉取工程项目代码的设置,同3.2&3.3,不赘述 

4.2 nodejs脚本的编写

4.2.1 新建项目

(1)在VSCode中,终端命令行,新建文件夹。

(2)cd到新建文件夹下。

(3)npm安装miniprogram-ci模块,生成项目相关的依赖等文件:npm install miniprogram-ci --save

(4)然后新建目录src, 在src目录下新建文件upload.js。


4.2.2 编写upload.js文件,参数写死的情况如下:

(1)先试试所有信息写死的情况,即该例子无传参。代码如下:

(如果要用传参的方式,可跳过这一步直接看下一步,这里我仅做练习记录)

const ci = require('miniprogram-ci')

const project = new ci.Project({
    appid: 'xxx',
    type: 'miniProgram',
    projectPath: 'C:/xxx/',
    privateKeyPath: 'C:/xxx/private.xxx.key',
    ignores: ['node_modules/**/*'],
})  
const uploadResult = ci.upload({
    project,
    version: '2.0.0',
    desc: 'hello0905',
    setting: {
      es6: false,
    },
    onProgressUpdate: console.log,
})

console.log(uploadResult)

(2)编写好代码后,在Jenkins中创建任务,运行构建。

因为信息都写死了,所以也不需要参数化,也不需要从gitee拉取项目代码,而是直接从本地获取项目代码。直接用node命令执行upload.js脚本。

构建命令附图如下,执行结果图略:

4.2.3 编写upload.js文件,不写死信息,通过Jenkins命令行传参进来,脚本接住参数,运行脚本的情况如下

写在前面:

参数写死和从本地获取工程代码的方式,毕竟不够灵活。因此这里就延伸到:写好“上传功能的代码框架”,然后通过Jenkins的构建任务,传参到“上传功能的代码框架”,实现上传操作。

(1)upload.js接收参数的方式:process.argv

​​​​​​​这是一个数组。

数组的第一第二位,默认接收的是node.exe路径和upload.js路径(所要执行的文件),

从第三位开始,就是对应运行命令node所携带的各个参数(按顺序)。

(2)带参数的代码,情况如下:

const ci = require('miniprogram-ci')

const projectPath = process.argv[2];
const privateKeyPath = process.argv[3];
const appid = process.argv[4];
const version = process.argv[5];
const desc = process.argv[6];

const project = new ci.Project({
  appid: appid,
  type: 'miniProgram',
  projectPath: projectPath,
  privateKeyPath: privateKeyPath,
  ignores: ['node_modules/**/*'],
})

const uploadResult = ci.upload({
  project,
  version,
  desc,
  setting: {
    es6: false,
  },
  onProgressUpdate: console.log,
})

console.log(uploadResult)

4.3 Jenkins构建中调用nodejs脚本命令

参数化声明和从gitee仓库拉取工程项目代码的设置,同3.2&3.3,不赘述。

构建命令:

node C:/Users/xxxxxxxxxxx/WeChatProjects/miniprogram-ci/src/upload.js %WORKSPACE% %privateKey% %appid% %version% %desc%

注意:

node命令中参数的先后顺序,要跟node.js脚本中参数的获取顺序(数组索引)保持一致。

参数从process的索引2开始,即process.argv[2],process.argv[3]...

附图:

4.4 邮件设置

略,参考3.6处的链接文章
    

4.5 远程触发(带参数)

类似3.5,不赘述。

补充:远程触发的好处:耦合低。缺点:每次都需要在URL中改参数。

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值