Jenkins+Github+Tomcat Love The Way You Lie 2022-10-31 15:49 161阅读 0赞 ### 文章目录 ### * * 前言 * * * 什么是Jenkins * 准备工作 * Jenkins服务器 * Tomcat模拟测试服务器 * Tomcat模拟生产服务器 * 构建项目并测试 ## 前言 ## #### 什么是Jenkins #### **1. 简介** Jenkins只是一个基于Java开发的持续集成、持续发布平台。 持续集成(CI): 代码合并,构建,部署,测试都在一起,不断地执行这个过程,并对结果反馈。 持续发布(CD):部署到测试环境、预生产环境/灰度环境、生产环境。 Jenkins官网:https://jenkins.io/ Jenkins下载:http://updates.jenkins-ci.org/ ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70] **2. 优点** ① 开源的java语言开发持续集成工具,支持CI,CD。 ② 易于安装部署配置:可通过yum安装,或下载war包以及通过docker容器等快速实现安装部署,可方便web界面配置管理。 ③ 消息通知及测试报告:集成RSS/E-mail通过RSS发布构建结果或当构建完成时通过e-mail通知,生成JUnit/TestNG测试报告。 ④ 分布式构建:支持Jenkins能够让多台计算机一起构建/测试。 ⑤ 文件识别:Jenkins能够跟踪哪次构建生成哪些jar,哪次构建使用哪个版本的jar等。 ⑥ 丰富的插件支持:支持扩展插件,你可以开发适合自己团队使用的工具,如git,svn,maven,docker等。 #### 准备工作 #### 1. Jenkind服务器: 地址 10.8.161.171 安装 Git、 jdk、 Tomcat、maven、 Jenkins、 Jenkins离线拓展包 2. Tomcat模拟测试服务器: 地址 10.8.161.175 安装Jdk、Tomcat、脚本 3. Tomcat模拟生产服务器: 地址 10.8.161.20 安装Jdk、Tomcat、脚本 4. Github模拟项目地址:https://github.com/bingyue/easy-springmvc-maven 以上所有所需的工具已打包== 下载地址 == ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70_pic_center_pic_center_pic_center_pic_center_pic_center_pic_center] #### Jenkins服务器 #### **1.安装git客户端:** [root@jenkins-server ~]# yum install -y git #安装git客户端 [root@jenkins-server ~]# ssh-keygen [root@jenkins-server ~]# ssh-copy-id -i root@10.8.161.175 #公钥拷贝到后端测试服务器 [root@jenkins-server ~]# ssh-copy-id -i root@10.8.161.20 #公钥拷贝到生产服务器 [root@jenkins-server ~]# ssh 10.8.161.** #测试能否免密登陆 开始部署jenkins: **2.解压jdk** [root@jenkins-server ~]# tar xzf jdk-8u191-linux-x64.tar.gz -C /usr/local/ [root@jenkins-server ~]# cd /usr/local/ [root@jenkins-server local]# mv jdk1.8.0_191/ java **3.安装tomcat** [root@jenkins-server ~]# tar xzf apache-tomcat-8.5.42.tar.gz -C /usr/local/ [root@jenkins-server ~]# cd /usr/local/ [root@jenkins-server local]# mv apache-tomcat-8.5.42/ tomcat **4.安装maven** [root@jenkins-server ~]# tar xzf apache-maven-3.5.4-bin.tar.gz -C /usr/local/java [root@jenkins-server ~]# cd /usr/local/java [root@jenkins-server java]# mv apache-maven-3.5.4/ maven **5. 设置变量:** [root@jenkins-server ~]# vim /etc/profile JAVA_HOME=/usr/local/java MAVEN_HOME=/usr/local/java/maven PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL JAVA_HOME MAVEN_HOME [root@jenkins-server ~]# source /etc/profile **6. 上传jenkins的War包运行:** [root@jenkins-server ~]# cd /usr/local/tomcat/webapps/ #进入Tomcat默认发布目录 [root@jenkins-server webapps]# rm -rf * [root@jenkins-server webapps]# cp /root/jenkins.war . [root@jenkins-server webapps]# ../bin/startup.sh Using CATALINA_BASE: /usr/local/tomcat Using CATALINA_HOME: /usr/local/tomcat Using CATALINA_TMPDIR: /usr/local/tomcat/temp Using JRE_HOME: /usr/local/java Using CLASSPATH: /usr/local/tomca t/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar Tomcat started. **7. 验证Jenkins安装** 浏览器输入 http://10.8.161.171:8080/jenkins/ ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 1]**8. 拷贝密码继续** [root@jenkins-server ~]# cat /opt/jenkins/secrets/initialAdminPassword b36b8b04c5b84e659701304dfe848999 ---复制这个密码粘贴到上面提示的空格里面。 **9.登陆向导** ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 2] 这里安装插件时间会很长,有些可能会应为网络原因安装失败,点击继续即可,进入后我们手动替换离线插件包。 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 3] ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 4]![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 5]![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 6] **10.离线包导入** [root@jenkins-server ~]# cd /root/.jenkins [root@jenkins-server ~]# mv plugins pluginsbak [root@jenkins-server ~]# tar xzf plugins.tar.gz -C cd /root/.jenkins [root@jenkins-server ~]# sh /usr/local/tomcat/bin/shutdown.sh [root@jenkins-server ~]# sh /usr/local/tomcat/bin/startup.sh # 重启Jenkins **11. 配置ssh和邮箱** ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 7] ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 8]![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 9] ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 10] ### 公钥获取方法 [root@jenkins-server .ssh]# cd /root/.ssh/ [root@jenkins-server .ssh]# cat id_rsa ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 11] **12. 配置jdk,maven** ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 12] ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 13] ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 14] ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 15]至此,Jenkns配置完毕 #### Tomcat模拟测试服务器 #### [root@java-server ~]# mkdir -p /data/application 1.安装jdk [root@java-server ~]# tar xzf jdk-8u191-linux-x64.tar.gz -C /usr/local/ [root@java-server ~]# cd /usr/local/ [root@java-server local]# mv jdk1.8.0_191/ java 2.安装tomcat [root@java-server ~]# tar xzf apache-tomcat-8.5.42.tar.gz -C /data/application/ [root@java-server ~]# cd /data/application/ [root@java-server application]# mv apache-tomcat-8.5.42/ tomcat 3.设置环境变量 [root@java-server ~]# vim /etc/profile export JAVA_HOME=/usr/local/java export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar export TOMCAT_HOME=/data/application/tomcat [root@java-server ~]# source /etc/profile 4. 创建目录和脚本: [root@java-server ~]# mkdir /opt/script #创建脚本目录 [root@java-server ~]# vim app-jenkins.sh #创建脚本 脚本内容在后面第5条: [root@java-server ~]# chmod +x app-jenkins.sh #添加执行权限 [root@java-server ~]# mv app-jenkins.sh /opt/script/ 脚本内容: [root@java-server script]# cat app-jenkins.sh 5.脚本内容 #!/usr/bin/bash #本脚本适用于jenkins持续集成,实现备份war包到代码更新上线!使用时请注意全局变量。 #================ #Defining variables export JAVA_HOME=/usr/local/java webapp_path="/data/application/tomcat/webapps" tomcat_run="/data/application/tomcat/bin" updata_path="/data/update/`date +%F-%T`" backup_path="/data/backup/`date +%F-%T`" tomcat_pid=`ps -ef | grep tomcat | grep -v grep | awk '{print $2}'` files_dir="easy-springmvc-maven" files="easy-springmvc-maven.war" job_path="/root/upload" #Preparation environment echo "Creating related directory" mkdir -p $updata_path mkdir -p $backup_path echo "Move the uploaded war package to the update directory" mv $job_path/$files $updata_path echo "=========================================================" cd /opt echo "Backing up java project" if [ -f $webapp_path/$files ];then tar czf $backup_path/`date +%F-%H`.tar.gz $webapp_path if [ $? -ne 0 ];then echo "打包失败,自动退出" exit 1 else echo "Checking if tomcat is started" if [ -n "$tomcat_pid" ];then kill -9 $tomcat_pid if [ $? -ne 0 ];then echo "tomcat关闭失败,将会自动退出" exit 2 fi fi cd $webapp_path rm -rf $files && rm -rf $files_dir cp $updata_path/$files $webapp_path cd /opt $tomcat_run/startup.sh sleep 5 echo "显示tomcat的pid" echo "`ps -ef | grep tomcat | grep -v grep | awk '{print $2}'`" echo "tomcat startup" echo "请手动查看tomcat日志。脚本将会自动退出" fi else echo "Checking if tomcat is started" if [ -n "$tomcat_pid" ];then kill -9 $tomcat_pid if [ $? -ne 0 ];then echo "tomcat关闭失败,将会自动退出" exit 2 fi fi cp $updata_path/$files $webapp_path $tomcat_run/startup.sh sleep 5 echo "显示tomcat的pid" echo "`ps -ef | grep tomcat | grep -v grep | awk '{print $2}'`" echo "tomcat startup" echo "请手动查看tomcat日志。脚本将会自动退出" fi #### Tomcat模拟生产服务器 #### [root@java-server ~]# mkdir -p /data/application 1.安装jdk [root@java-server ~]# tar xzf jdk-8u191-linux-x64.tar.gz -C /usr/local/ [root@java-server ~]# cd /usr/local/ [root@java-server local]# mv jdk1.8.0_191/ java 2.安装tomcat [root@java-server ~]# tar xzf apache-tomcat-8.5.42.tar.gz -C /data/application/ [root@java-server ~]# cd /data/application/ [root@java-server application]# mv apache-tomcat-8.5.42/ tomcat 3.设置环境变量 [root@java-server ~]# vim /etc/profile export JAVA_HOME=/usr/local/java export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar export TOMCAT_HOME=/data/application/tomcat [root@java-server ~]# source /etc/profile 4. 创建目录和脚本: [root@java-server ~]# mkdir /opt/script #创建脚本目录 [root@java-server ~]# vim app-jenkins.sh #创建脚本 脚本内容在后面第5条: [root@java-server ~]# chmod +x app-jenkins.sh #添加执行权限 [root@java-server ~]# mv app-jenkins.sh /opt/script/ 脚本内容: [root@java-server script]# cat app-jenkins.sh 5.脚本内容 #!/usr/bin/bash #本脚本适用于jenkins持续集成,实现备份war包到代码更新上线!使用时请注意全局变量。 #================ #Defining variables export JAVA_HOME=/usr/local/java webapp_path="/data/application/tomcat/webapps" tomcat_run="/data/application/tomcat/bin" updata_path="/data/update/`date +%F-%T`" backup_path="/data/backup/`date +%F-%T`" tomcat_pid=`ps -ef | grep tomcat | grep -v grep | awk '{print $2}'` files_dir="easy-springmvc-maven" files="easy-springmvc-maven.war" job_path="/root/upload" #Preparation environment echo "Creating related directory" mkdir -p $updata_path mkdir -p $backup_path echo "Move the uploaded war package to the update directory" mv $job_path/$files $updata_path echo "=========================================================" cd /opt echo "Backing up java project" if [ -f $webapp_path/$files ];then tar czf $backup_path/`date +%F-%H`.tar.gz $webapp_path if [ $? -ne 0 ];then echo "打包失败,自动退出" exit 1 else echo "Checking if tomcat is started" if [ -n "$tomcat_pid" ];then kill -9 $tomcat_pid if [ $? -ne 0 ];then echo "tomcat关闭失败,将会自动退出" exit 2 fi fi cd $webapp_path rm -rf $files && rm -rf $files_dir cp $updata_path/$files $webapp_path cd /opt $tomcat_run/startup.sh sleep 5 echo "显示tomcat的pid" echo "`ps -ef | grep tomcat | grep -v grep | awk '{print $2}'`" echo "tomcat startup" echo "请手动查看tomcat日志。脚本将会自动退出" fi else echo "Checking if tomcat is started" if [ -n "$tomcat_pid" ];then kill -9 $tomcat_pid if [ $? -ne 0 ];then echo "tomcat关闭失败,将会自动退出" exit 2 fi fi cp $updata_path/$files $webapp_path $tomcat_run/startup.sh sleep 5 echo "显示tomcat的pid" echo "`ps -ef | grep tomcat | grep -v grep | awk '{print $2}'`" echo "tomcat startup" echo "请手动查看tomcat日志。脚本将会自动退出" fi #### 构建项目并测试 #### 回到Jenkins web设置页面 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 16] ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 17] ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 18] ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 19] 添加项目邮箱提醒 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 20] ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 21] ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 22] ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 23] ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 24] ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 25] ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 26]运行构建 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 27] ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 28] ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 29] ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 30] ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 31] ====================================================================================================================================================================================================================================================================================================== 辛苦浏览观看,如果对你有帮助,请顺手点个赞吧 (σ゚∀゚)σ…:\*☆ [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70]: /images/20221024/400fbc8527de48d5a1f371287a3ddd58.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70_pic_center_pic_center_pic_center_pic_center_pic_center_pic_center]: /images/20221024/137a0b72b1284cb08596926223c155ae.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 1]: /images/20221024/b6e991de972e4b8a9b9bcbfc36d71dff.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 2]: /images/20221024/d2e7b2ada2474c9bb8453b47730993d4.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 3]: /images/20221024/65e5469e899d495484e92566de57482f.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 4]: https://img-blog.csdnimg.cn/20210223195138384.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz,size_16,color_FFFFFF,t_70 [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 5]: https://img-blog.csdnimg.cn/20210223195204322.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz,size_16,color_FFFFFF,t_70 [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 6]: /images/20221024/62bfd85cb12448bcbfade1f75c8aedf0.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 7]: /images/20221024/5fd879285ab1474eb91d0ca47466ae7e.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 8]: https://img-blog.csdnimg.cn/20210223211243220.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz,size_16,color_FFFFFF,t_70 [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 9]: /images/20221024/69f7bb9d5c24464f8bb1c5ed0463d623.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 10]: /images/20221024/97f2ecc51b454967a55e407b0c770ee1.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 11]: /images/20221024/fd79b4c030524907adbf8727a5f76100.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 12]: /images/20221024/4b22c8bdfe2c4a7da8b97b7a4de0f503.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 13]: /images/20221024/b84e7f84c02944cf92baad436e45604e.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 14]: /images/20221024/a082508eb79940f29e0d2ddbc37be347.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 15]: /images/20221024/bef276ed6b64476586ad0dc1ba78d62e.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 16]: /images/20221024/4fca3156632b48979ec14faa241e65bf.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 17]: /images/20221024/02e4b75be8af4546b2820f323bb87a8b.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 18]: /images/20221024/c98ff499a01a4003a2bee28ff8b26a8a.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 19]: /images/20221024/c15ff80a45104582a177bc83b51cfedb.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 20]: /images/20221024/083902e620a549a68c4837e908776d33.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 21]: /images/20221024/289a0fd39de74f74958e5822c32b8bef.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 22]: /images/20221024/5f0cbb37c5344462bd354d8b2a7294e6.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 23]: /images/20221024/e1af5d5ab1eb42258bc16b2b93f61505.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 24]: /images/20221024/7005a31e645a4f248489d3d1a096036b.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 25]: /images/20221024/d16f814b77ed46c7b5ee76ed5b0a39bb.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 26]: /images/20221024/33912056a7724c77b5aa6b9b1c106123.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 27]: /images/20221024/8b476ca0cb3447ff89e17e4d32a398af.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 28]: /images/20221024/4e4c1fd8901046a4ae9866daec6c1a3c.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 29]: /images/20221024/a8f59c507e2e436d8a2cd19d9d94d151.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 30]: /images/20221024/6f5fef0ba1c544188e1d43ecd1604d6b.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI2MTI5NDEz_size_16_color_FFFFFF_t_70 31]: /images/20221024/8b752b37955a438394059f0883794e7d.png
还没有评论,来说两句吧...