微信小程序集成 Jenkins 自动化部署

1 篇文章 0 订阅
订阅专栏
1 篇文章 0 订阅
订阅专栏

 

 

背景

微信小程序的测试发布在没有 CI/CD 等相关工具的情况下,存在着如下的问题:

  • 小程序开发助手中,同一个开发者只能显示一个开发版本
  • 测试同事找开发要二维码,效率较低
  • 本地生成的二维码会出现携带本地代码、未及时拉取分支其他改动等问题

为了避免如上问题的发生,采用微信小程序集成 Jenkins 的方案。

基础

在介绍实现方案之前,先来回顾一下常规的微信小程序发布流程。

https://raw.githubusercontent.com/yingye/Blog/master/images/wechat-jenkins-follow.jpeg

 

从上面的流程图可以看出,微信小程序预览、上传都是需要在微信开发者工具中进行的,接下来了解一下微信开发者工具提供的上传方式。

微信开发者工具

除了图形化界面,微信开发者工具还提供了命令行与 HTTP 服务两种接口供外部调用,来进行登录、预览、上传等操作。

 

命令行调用

命令行工具所在位置:

macOS: <安装路径>/Contents/Resources/app.nw/bin/cli 
Windows: <安装路径>/cli.bat

以 macOS 操作系统示例:

1、打开开发者工具:

/Applications/wechatwebdevtools.app/Contents/Resources/app.nw/bin/cli -o

其中,/Applications/wechatwebdevtools.app/为安装路径。

2、登录:

/Applications/wechatwebdevtools.app/Contents/Resources/app.nw/bin/cli -l

输入上面的命令行后,终端中打印出登录二维码,使用微信扫码登录。在微信端完成操作之后,会输出 login success,如下图所示:

wechat-jenkins00.png

 

如果想得到 base64 形式的二维码,可以使用下面的命令:

# 登录,在终端中打印登录 base64 形式的二维码
cli -l --login-qr-output base64

# 登录,二维码转成 base64 并存到文件 /Users/username/code.txt 
cli -l --login-qr-output base64@/Users/username/code.txt

更多 API 可以参考 命令行调用 。

HTTP 服务

HTTP 服务在工具启动后自动开启,每次开启 host 固定为 127.0.0.1,端口号并不固定。端口号在用户目录下记录,位置如下:

macOS : ~/Library/Application Support/微信web开发者工具/Default/.ide 
Windows : ~/AppData/Local/微信web开发者工具/User Data/Default/.ide

以 macOS 操作系统示例:

首先需要运行开发者工具,可以利用上面介绍的命令行方法打开微信开发者工具。

/Applications/wechatwebdevtools.app/Contents/Resources/app.nw/bin/cli -o
port=$(cat "/Users/zyy/Library/Application Support/微信web开发者工具/Default/.ide")
echo "微信开发者工具运行在${port}端口"

这样就可以拿到微信开发者工具运行的端口号了,其中,/Users/zyy/ 为用户目录。

 

1、打开开发者工具:

# 打开工具
http://127.0.0.1:端口号/open
# 打开/刷新项目
http://127.0.0.1:端口号/open?projectpath=项目全路径

2、登录:

# 登录,返回图片格式的二维码
http://127.0.0.1:端口号/login
# 登录,取 base64 格式二维码
http://127.0.0.1:端口号/login?format=base64
# 登录,取 base64 格式二维码,并写入 /Users/username/logincode.txt
http://127.0.0.1:端口号/login?format=base64&qroutput=%2FUsers%2Fusername%2Flogincode.txt

3、预览:

# 预览路径为 /Users/username/demo 的项目,返回图片格式的二维码
http://127.0.0.1:端口号/preview?projectpath=%2FUsers%2Fusername%2Fdemo

# 预览路径为 /Users/username/demo 的项目,返回 base64 格式的二维码
http://127.0.0.1:端口号/preview?projectpath=%2FUsers%2Fusername%2Fdemo&format=base64

# 预览路径为 /Users/username/demo 的项目,返回 base64 格式的二维码,并写入 /Users/username/logincode.txt
http://127.0.0.1:端口号/preview?projectpath=%2FUsers%2Fusername%2Fdemo&format=base64&qroutput=%2FUsers%2Fusername%2Flogincode.txt

# 预览路径为 /Users/username/demo 的项目,返回图片格式的二维码,并将预览信息输出至 /Users/username/info.json
http://127.0.0.1:端口号/preview?projectpath=%2FUsers%2Fusername%2Fdemo&infooutput=%2Users%2username%2info.json

更多 API 可以参考  HTTP 调用 。

方案

微信开发者工具目前只有 macOS 和 Windows 两种版本,这限制了服务器的系统。下面以 macOS 为例,
来介绍具体的实现过程:

安装 Jenkins

The leading open source automation server, Jenkins provides hundreds of plugins to support building, deploying and automating any project. 
作为领先的开源自动化服务器,Jenkins提供数百个插件来支持构建,部署和自动化任何项目。

Jenkins 依赖于 Java 运行环境,所以需要在机器上安装 Java。安装 Jenkins 方式很多,可以在 官网直接下载最新的软件包,然后执行下面的命令启动 Jenkins 。

java -jar jenkins.war --httpPort=8888

其中,--httpPort=8888 为设置服务端口号,默认端口号为 8080 。

新建任务

wechat-jenkins01.png

 

选择 “构建一个自由风格的软件项目” ,在输入任务名称之后,点击确定按钮,进入到任务配置页面。

任务配置

在介绍任务配置之前,先来看一下最终要实现的功能。

wechat-jenkins03.png

 

主要的功能点如下:

  • 使用 git 来管理代码,可以选择分支
  • 打包版本(开发版/体验版)可以选择(注意:这里的「开发版」对应「预览」,体验版对应「上传」)

1、源码管理

wechat-jenkins02.png

 

在任务配置页面的第二项 “源码管理” 中,选择 git 方式管理代码。填入 git 仓库地址及访问的账户,上图中的 $branch 是自定义的构建参数,下面来看一下构建参数的定义。

2、构建参数

在任务配置页面的第二项 “General” 中,选择 “参数化构建过程”,进入构建参数配置页面。

wechat-jenkins04.png

 

参数有上述的几种类型供选择,可以参考下图进行配置,这里不再赘述。

 

wechat-jenkins06.png

 

需要注意的是,这里的 name 可以通过 $name 的形式获取到,例如上面提到的 $branch 。

构建

在任务配置页面的 “构建” 中,选择 “执行 shell” 方式来进行构建。

 

wechat-jenkins07.png

回顾一下,本文最开始提到的微信小程序发布流程图:

wechat-jenkins-follow.jpeg

 

这一系列的操作使用 shell 脚本来完成,如何实现呢?

登录

微信开发者工具的登录需要在微信端扫码确认,这一步微信并没有提供账号密码的登录方式。不过,微信开发者工具是可以保持登录态的。由于微信限制,一个开发者身份只能在一个终端登录,所以我们申请了一个新的微信账号「前端小姐姐」用于在 Jenkins 机器上登录。

项目基础设置

wechat-jenkins11.png

 

在图形化界面中,上传代码时,会在开发者工具中填入 AppID 、项目路径等信息,也会在「详情」中选择项目的基本设置,比如「ES6 转 ES5」。微信还提供了一种配置方法,在项目根目录使用 project.config.json 文件。这里通过一段 node 脚本,生成 project.config.json 文件。

const fs = require('fs')

const content = '{"description":"项目配置文件。","setting":{"urlCheck":false,"es6":true,"postcss":true,"minified":true,"newFeature":true},"miniprogramRoot":"./","compileType":"miniprogram","appid":"***","projectname":"wechat-app","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')

这样就完成了项目的基础设置,接下来将介绍如何通过 shell 脚本完成上传。

shell 脚本

echo -------------------------------------------------------
echo GIT_BRANCH: ${GIT_BRANCH}
echo -------------------------------------------------------
# 执行项目构建
npm i --registry=http://registry.npm.taobao.org
npm run build
# 打开微信开发者工具
/Applications/wechatwebdevtools.app/Contents/Resources/app.nw/bin/cli -o
port=$(cat "/Users/devops/Library/Application Support/微信web开发者工具/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 1
fi
if [ "$build_type" == "dev" ]
  then
  echo "发布开发版!"
  wget -O $BUILD_ID.png http://127.0.0.1:${port}/preview?projectpath=/Users/Shared/Jenkins/Home/workspace/fe-wechat-app/dist
  echo "预览成功!请扫描二维码进入开发版!"
elif [ "$build_type" == 'prod' ]
  then
  echo "准备上传!"
  /Applications/wechatwebdevtools.app/Contents/Resources/app.nw/bin/cli -u 1.0.0@/Users/Shared/Jenkins/Home/workspace/fe-wechat-app/dist --upload-desc 'initial release'
  echo "上传成功!请到微信小程序后台设置体验版并提交审核!"
fi

因为本项目需要编译代码,所以服务器上需要安装 node 和 npm。npm run build 命令不光在编译代码,而且还执行了前面介绍的生成 project.config.json 的 node 脚本。

开发版上传成功后,将二维码图片保存下来,用于构建后显示二维码和发送邮件。

这里结合命令行调用和 HTTP 调用两种方式来完成上传,主要出于以下原因:

  • HTTP 调用可以很方便的下载生成的二维码图片
  • HTTP 服务只有在微信开发者工具启动之后,才会启动,所以需要通过命令行调用方式,来启动微信开发者工具

构建后

使用 description setter plugin 插件来实现,构建完成后显示二维码图片。

安装插件

回到 Jenkins 主页,在「系统管理」中,进入到「插件管理」页面,搜索 description setter plugin 并安装。

 

wechat-jenkins09.png

这里采用 HTML <img> 标签形式,展示二维码信息,如下:

<img src="http://机器ip:端口/job/项目名称/ws/${BUILD_ID}.png" alt="二维码${BUILD_ID}"width="200" height="200" /> <a href="http://机器ip:端口/job/项目名称/ws/${BUILD_ID}.png">二维码${BUILD_ID}</a>

按照上面的方式配置后,发现图片并没有显示出来,而是显示了文本信息。这是由于 Jenkins 出于安全的限制,所有描述信息的 Markup Formatter 默认都采用 Plain text 的模式。

在「系统管理」-> 「全局安全配置」中,将 Markup Formatter 由 Plain text (纯文本) 更改为 Safe HTML 即可。

按照上面的步骤操作后,就可以显示出开发版二维码。因为 Jenkins 构建时,均使用「前端小姐姐」微信账号,所以小程序开发助手上「前端小姐姐」发布的开发版不确定是哪位同学构建的,故需要使用 Jenkins 平台生成的二维码,并注意二维码有效期(有效期25分钟)。

 

wechat-jenkins12.jpeg

 

总结

本文以微信小程序常规的发布流程为切入点,循序渐进地介绍了如何集成 Jenkins 实现微信小程序预览、上传功能。后台、测试同事可以在该平台上选择分支获取开发版用于联调、测试,解决了本文开篇提及的问题。

由于本文篇幅有限,只是介绍了该平台的一些基本功能,如果有其他的需求,可以参考文末的拓展链接解决。此外,文中若有任何表述不清或不当的地方,欢迎大家批评指正~

 

jenkins +miniprogram-ci 一键上传微信小程序
cf
07-28 1288
1.获取小程序代码上传密钥private.wx**********.key,放到jenkins所在服务器中,设置jenkins服务器ip白名单。5.配置好gitlab,gitpush时需要将unpackage目录一起上传。2.再uni-app项目根目录创建package.json,加入以下代码。3.在uni-app项目根目录创建wxCI.js。选择参数化构建过程-选项参数-设置发布模式。3.添加参数git参数分支相关信息。7.配置构建方式,shell。二.jenkins配置。......
jenkins构建微信小程序并展示二维码
最新发布
2301_78276982的博客
04-16 1026
安装Jenkins插件,例如 Jenkins Plugin for WeChat Mini Program Builder(微信小程序构建器插件)。创建新的 Jenkins Pipeline,或者在现有的 Jenkins Pipeline 中启用 WeChat Mini Program Builder 插件。配置 Jenkins 构建步骤,添加微信小程序构建相关任务。测试您的微信小程序。1、安装 Jenkins 插件登录 Jenkins 控制台。
自动构建 & 一键回滚 & Jenkins自动构建微信小程序(多文整合,亲测有用,作为笔记用)
sjskkkkk的博客
07-31 1038
Jenkins+gogs自动构建前后端并快速回滚实现自动构建前端后端合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 自动构建 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可
微信小程序集成 Jenkins
weixin_34395205的博客
09-03 796
本文首发于 github.com/yingye/Blog… ,欢迎各位关注我的Blog,正文以issue形式呈现,喜欢请点star,订阅请点watch~ 背景 微信小程序的测试发布在没有 CI/CD 等相关工具的情况下,存在着如下的问题: 小程序开发助手中,同一个开发者只能显示一个开发版本 测试同事找开发要二维码,效率较低 本地生成的二维码会出现携带本地代码、未及时拉取分支其他改动等问题 ...
微信小程序集成jenkins自动打码
一来二去
10-12 930
微信小程序集成jenkins自动打码背景一、miniprogram-ci工具概述详细介绍见官网二、工具准备内容三、注意事项四、开始安装miniprogram-ci运行CI命令出现以下提示,则证明成功五、集成jenkinsjenkins安装过程忽略,默认均安装成功1、所需插件2、更换jenkins build页面描述信息展示为html3、配置jenkins的git,用于拉取代码,这里直接贴图4、打包命令配置5、构建后操作六、最终效果 背景 小程序编译、打包、预览均需要依赖开发者工具进行,且团队中成员均需要开
Jenkins +miniprogram-ci 构建 发布、预览微信小程序
qq_29961715的博客
08-25 1339
这里有个大坑, 用命令行和HTTP调用的方式,都有一个很大的缺陷,就是要在Jenkins机器上安装微信开发者工具,而Jenkins机器一般是Linux操作系统,微信小程序官方并没有提供Linux操作系统的微信开发者工具安装包,尤其是HTTP调用方式,每次使用的时候,还需要启动微信开发者工具,才能获取HTTP服务端口号,而启动微信开发者工具,会弹出微信开发者工具可视化UI界面,根本无法做到静默处理。要实现自动预览和代码上传功能,最核心的一步是miniprogram-ci这个工具包,它是微信小程序官方提供的,
记录贴——用Jenkins自动化构建部署微信小程序
热门推荐
我爱吃豆芽呀
10-23 2万+
最近开始接触小程序开发,顺便尝试了一下使用Jenkins小程序进行自动化构建部署, 即:git仓库变更——>jenkins自动构建——>代码上传微信小程序服务器 jenkins监听git仓库自不必多说,主要写一下小程序的miniprogram-ci模块以及在服务器上构建以及上传是遇到的坑 1.miniprogram-ci 在miniprogram-ci模块出现之前,小程序代码上传要通过微信开发者工具手动上传。当然,仍然有很多大佬开发出了各种脚本工具实现自动化,但大都还是..
jenkins自动化部署持续交付演示ppt
04-24
很多团队表示,我们一定要把系统全部coding完成,才向(类)生产环境部署系统,这样有一个好处,就是大家更加专注于coding。不被打扰。但是也有一个坏处,就是无法及时反馈出系统中的问题,你的boss也无法知道系统究竟...
Jenkins自动化部署
08-11
* Jenkins JOB是指Jenkins服务器上的一个构建任务,用于自动化地构建、测试和部署应用程序。 * 在Jenkins自动化部署中,JOB配置包括: 1. 新建一个JOB,选择自由风格。 2. 在General选项卡中,参数化构建过程,...
Jenkins自动化部署JavaWeb项目
01-27
Jenkins服务器请先安装JDK、Git、Maven等工具,并配置JAVA_...请确认部署项目的服务器可以外网访问或者与Jenkins服务器在同一内网,可以使用SSH访问(Windows安装OpenSSH参考我之前的文章) 官网下载地址: 可以下载
jenkins自动化部署流程-web项目
05-15
自动化部署为更好配合项目进行平台版本迭代和更新,使软件能够持续集成,提高运维部署效率,故搭建jenkins自动化部署平台,满足项目自动化部署需求。
Jenkins自动化部署配置文档
03-12
(1)自动化部署应用程序:Jenkins自动化部署配置文档可以用于自动化部署应用程序,提高部署效率和可靠性。 (2)CI/CD流程:Jenkins自动化部署配置文档可以用于CI/CD流程,提高开发效率和质量。 (3)应用程序...
【愚公系列】2022年12月 使用Jenkins实现程序的自动化发布
时光隧道
12-20 9132
Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成。持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽快地发现集成错误。许多团队发现这个过程可以大大减少集成的问题,让团队能够更快的开发内聚的软件。
【taro react】---- 微信小程序 通过 Jenkins 实现自动化部署
止于至善
07-01 1243
2. 配置【密钥及 IP 白名单】 1. 配置密钥 注意 setting 涉及到上传代码是否自动压缩wxml,wxss等,可以直接使用我的配置 5. Jenkins 配置 1. 项目描述配置 2. 引入 terser-webpack-plugin 3. 配置小程序编译压缩 WXRUI体验二维码 我的博客,欢迎交流!我的CSDN博客,欢迎交流!微信小程序专栏前端笔记专栏微信小程序实现部分高德地图功能的DEMO下载微信小程序实现MUI的部分效果的DEMO下载微信小程序实现MUI的GIT项目地址微信
Jenkins集成微信小程序自动打码
qq_32874697的博客
10-10 1672
注意: node版本号不要过低,最好和开发保持一致; 最后使用独立微信授权微信开发者工具,避免重复登录(不可多端登录); 别忘了绑定小程序开发者; 一、从git拉取小程序代码 二、npm i或者cnpm i安装依赖包 三、执行小程序打包命令(询问前端开发) 四、通过命令启动微信开发者工具并打开指定小程序项目 五、预览小程序 六、将二维码转图片 ...
微信小程序自动化打包(taro+oss+ci+Jenkins+node+钉钉)
鹿青的博客
11-23 3503
在日常的小程序开发中不使用自动化可能会出现的一些问题: 分支切换,代码上传,预览码生成,操作无脑但耗时 当生成码的要求同时来的时候,需要等待 小程序单独的机制,导致无法像web端那样做整体流程管控 非开发人员获取体验码的流程依赖开发人员 自动化的流程构思 通过钉钉的指令触发构建 (目前还未实现该步骤,后续补充) 以node端为中介,完成流程化操作 jenkins端进行打包上传预览等耗时操作 回调node端,对原有的信息进行美化 钉钉接收node端的信息,反馈用户 实施流程: 小程序自动化打包上传
jenkins集成自动化部署
08-17
Jenkins是一个用于自动化构建、测试和部署的开源工具。它可以帮助开发团队在代码提交到版本控制系统后自动触发构建和部署的流程。在Jenkins中,可以创建节点来扩展Jenkins集群,这样当业务量变大时,可以实现更好的灵活性和可扩展性,而无需安装额外的主机。 想要了解更多关于Jenkins的详细信息和使用方法,可以参考Jenkins中文网(http://www.jenkins.org.cn/)和相关教程,比如在慕课网上有一门关于使用Jenkins自动化搭建测试环境的教程(https://www.imooc.com/learn/1008)。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [搭建Jenkins实现自动化部署环境](https://blog.csdn.net/u010648555/article/details/123143960)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 微信小程序集成 Jenkins 自动化部署 9742
  • CloseableHttpClient的使用和优化 9654
  • mysql processlist 出现大量sleep too many connections 8592
  • JVM NativeMemoryTracking ;jcmd process_id VM.native_memory;Native memory tracking is not enabled 5160
  • jvm性能调优工具 jcmd,jcmd <pid> VM.native_memory detail.diff jcmd <pid> VM.native_memory baseline 2754

分类专栏

  • JVM 4篇
  • Java 高并发开发 3篇
  • Kafka 3篇
  • Java 高并发编程 3篇
  • 消息队列
  • Linux 1篇
  • Redis 3篇
  • Springboot 1篇
  • HttpRequest
  • 微信小程序 1篇
  • 集成 1篇
  • Spring Cloud
  • 时间 时区 1篇
  • 分布式锁 1篇
  • 缓存 1篇
  • Spark 4篇
  • Scala 9篇
  • Mysql 1篇
  • CAS 4篇
  • Docker 4篇
  • Hadoop
  • Java-Web 1篇
  • session 共享 2篇

最新评论

  • CloseableHttpClient的使用和优化

    lyq495: EntityUtils.toString已经关闭流了,不需要consume了

  • CloseableHttpClient的使用和优化

    bushiwanglihong: 深入浅出,思路真棒,必须点赞

  • JVM NativeMemoryTracking ;jcmd process_id VM.native_memory;Native memory tracking is not enabled

    Tuister: 第一段不就告诉你怎么开启NMT了?

  • CloseableHttpClient的使用和优化

    拾陸: 感谢博主分享们学习到了:)

  • JVM NativeMemoryTracking ;jcmd process_id VM.native_memory;Native memory tracking is not enabled

    折腾自己: 显示的未开启,请问博主是怎么处理的?

最新文章

  • JVM 参数使用手册
  • mysql processlist 出现大量sleep too many connections
  • HikariCP连接池各属性详解
2022年1篇
2021年2篇
2020年12篇
2019年8篇
2017年13篇
2016年8篇
2015年1篇
2014年1篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

PHP网站源码广州网站排名优化惠州关键词按天收费大运网站排名优化盐田网站定制荷坳品牌网站设计布吉品牌网站设计惠州网络推广坪山关键词排名包年推广横岗至尊标王南联网站搭建大芬建站坪山建设网站双龙品牌网站设计大芬网络广告推广东莞关键词按天计费丹竹头网站搭建光明营销网站罗湖英文网站建设同乐模板制作福永网页制作南澳网站定制观澜网络广告推广福永建站盐田SEO按天扣费民治网站关键词优化观澜优秀网站设计坂田关键词按天计费东莞网站改版罗湖网站优化推广南联模板网站建设歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

PHP网站源码 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化