通过 jenkins + gitLab 实现小程序自动化预览。
实现思路:
1)jenkins 每隔五分钟轮询 gitlab 上面的代码,如果有更新,就把代码拉下来。
2)清除原来的文件夹,重新编译(gulp 命令做的),重新安装依赖。
3)修改 ext.json 文件,通过 http 调用打开小程序,然后调用预览的 http 接口。
期望结果: 修改生效,修改完成后的小程序预览成功。 实际结果:失败,文件中的 ext.json 文件虽然被修改成功,但是预览生成的依然是之前配置的小程序。
对比试验:直接手动修改小程序开发工具中的 ext.json 文件,然后再点击预览,能够成功。
#!/usr/bin/env nodeconst fs = require('fs')const path = require("path")function deleteDir(url){ var files = []; if( fs.existsSync(url) ) { //判断给定的路径是否存在 files = fs.readdirSync(url); //返回文件和子目录的数组 files.forEach(function(file,index){ var curPath = path.join(url,file); if(fs.statSync(curPath).isDirectory()) { //同步读取文件夹文件,如果是文件夹,则函数回调 deleteDir(curPath); } else { fs.unlinkSync(curPath); //是指定文件,则删除 } }); fs.rmdirSync(url); //清除文件夹 }else{ console.log("给定的路径不存在!"); }}deleteDir('/Users/yujiahui/.jenkins/workspace/xls/dist/')const exec = require('child_process').execSyncexec('npm install')exec('npm run test_build')const content = '{"description":"项目配置文件。","setting":{"urlCheck":false,"es6":true,"postcss":true,"minified":true,"enhance":true},"miniprogramRoot":"./","compileType":"miniprogram","appid":"wxqqqqqqqqqqqqqqq","projectname":"xls","condition":{"search":{"current":-1,"list":[]},"conversation":{"current":-1,"list":[]},"plugin":{"current":-1,"list":[]},"game":{"currentL":-1,"list":[]},"miniprogram":{"current":-1,"list":[]}}}'fs.writeFileSync('./dist/project.config.json', content, 'utf-8') |
sed -i '' 's/\("extAppid": "\).*/\1wxaaaaaaaaaaa",/g' ./dist/ext.json # 修改小程序 id,并预览sed -i '' 's/\("extTenantId": "\).*/\11aaaaaaaa",/g' ./dist/ext.json #这个是我们自定的内容# 打开微信开发者工具/Applications/wechatwebdevtools.app/Contents/Resources/app.nw/bin/cli -oport=$(cat "/Users/yujiahui/Library/Application Support/微信开发者工具/Default/.ide")echo "微信开发者工具运行在${port}端口"return_code=$(curl -sL -w %{http_code} http://127.0.0.1:${port}/open)if [ $return_code == 200 ] then echo "返回状态码200,devtool启动成功!"else echo "返回状态码${return_code},devtool启动失败" exit 1fiecho "发布开发版!"wget -O $BUILD_ID.png http://127.0.0.1:${port}/preview?projectpath=/Users/yujiahui/.jenkins/workspace/xls/dist |
问题:sed 修改后的文件,小程序开发工具不能识别吗?依然调用的是之前的缓存,所以生成的也是之前配置中的小程序吗?

经过验证,文件修改之后,小程序开发工具未能识别,依然读取的是缓存。通过关闭后重新打开、预览,能够生成新的小程序